Az Azure SignalR szolgáltatás belső elemei
Az Azure SignalR szolgáltatás ASP.NET Core SignalR-keretrendszerre épül. Emellett támogatja ASP.NET SignalR-t azáltal, hogy ASP.NET SignalR adatprotokollját a ASP.NET Core-keretrendszeren felüli újraegyesítésével támogatja.
A SignalR szolgáltatással való együttműködéshez egyszerűen migrálhat egy helyi ASP.NET Core SignalR-t vagy egy ASP.NET SignalR-alkalmazást, néhány kódsor módosításával.
A diagram a SignalR szolgáltatás alkalmazáskiszolgálóval való használatakor használt tipikus architektúrát ismerteti.
A saját üzemeltetésű ASP.NET Core SignalR-alkalmazás különbségeit is tárgyaljuk.
Alkalmazáskiszolgáló-kapcsolatok
A saját üzemeltetésű ASP.NET Core SignalR alkalmazáskiszolgáló közvetlenül figyeli és csatlakoztatja az ügyfeleket.
A SignalR szolgáltatással az alkalmazáskiszolgáló már nem fogadja el az állandó ügyfélkapcsolatokat, ehelyett:
- Az
negotiate
Azure SignalR Service SDK minden központhoz közzéten egy végpontot. - A végpont válaszol az ügyfél-egyeztetési kérelmekre, és átirányítja az ügyfeleket a SignalR szolgáltatásba.
- Az ügyfelek a SignalR szolgáltatáshoz csatlakoznak.
További információ: Ügyfélkapcsolatok.
Az alkalmazáskiszolgáló elindítása után:
- Az ASP.NET Core SignalR esetében: Az Azure SignalR Service SDK központonként öt WebSocket-kapcsolatot nyit meg a SignalR Szolgáltatáshoz.
- A ASP.NET SignalR esetében: Az Azure SignalR Service SDK központonként öt WebSocket-kapcsolatot nyit meg a SignalR Szolgáltatáshoz, egy pedig alkalmazásonkénti WebSocket-kapcsolatot.
A kapcsolatok kezdeti száma alapértelmezés szerint 5, és a SignalR Service SDK beállításával InitialHubServerConnectionCount
konfigurálható. További információ: konfiguráció.
Amíg az alkalmazáskiszolgáló csatlakozik a SignalR szolgáltatáshoz, az Azure SignalR szolgáltatás terheléselosztási üzeneteket küld a kiszolgálónak. Ezután az SDK új kiszolgálókapcsolatokat indít el a szolgáltatáshoz a jobb teljesítmény érdekében. Az ügyfeleknek küldött és az ügyfelektől érkező üzeneteket ezek a kapcsolatok multiplexálttá alakítják.
A kiszolgálókapcsolatok állandó kapcsolatban állnak a SignalR szolgáltatással. Ha hálózati probléma miatt megszakad a kiszolgálókapcsolat:
- A kiszolgálókapcsolat által kiszolgált összes ügyfél kapcsolata megszakad. További információ: Adatátvitel az ügyfél és a kiszolgáló között.
- A kiszolgáló automatikusan újracsatlakoztatja az ügyfeleket.
Ügyfélkapcsolatok
A SignalR szolgáltatás használatakor az ügyfelek az alkalmazáskiszolgáló helyett a szolgáltatáshoz csatlakoznak. Az ügyfél és a SignalR szolgáltatás közötti állandó kapcsolatok létrehozásának három lépése van.
Az ügyfél egyeztetési kérelmet küld az alkalmazáskiszolgálónak.
Az alkalmazáskiszolgáló az Azure SignalR Service SDK használatával a SignalR szolgáltatás URL-címét és hozzáférési jogkivonatát tartalmazó átirányítási választ ad vissza.
- Az ASP.NET Core SignalR esetében egy tipikus átirányítási válasz a következőképpen néz ki:
{ "url":"https://test.service.signalr.net/client/?hub=chat&...", "accessToken":"<a typical JWT>" }
- A ASP.NET SignalR esetében egy tipikus átirányítási válasz a következőképpen néz ki:
{ "ProtocolVersion":"2.0", "RedirectUrl":"https://test.service.signalr.net/aspnetclient", "AccessToken":"<a typical JWT>" }
- Az ASP.NET Core SignalR esetében egy tipikus átirányítási válasz a következőképpen néz ki:
Miután az ügyfél megkapta az átirányítási választ, az URL-cím és a hozzáférési jogkivonat használatával csatlakozik a SignalR szolgáltatáshoz.
A ASP.NET Core SignalR-ről további információt a transport protokollok című témakörben talál.
Adatátvitel az ügyfél és a kiszolgáló között
Amikor egy ügyfél csatlakozik a SignalR szolgáltatáshoz, a szolgáltatás futtatókörnyezete talál egy kiszolgálókapcsolatot az ügyfél kiszolgálásához.
- Ez a lépés csak egyszer történik, és egy-az-egyhez megfeleltetés az ügyfél és a kiszolgáló kapcsolata között.
- A leképezés mindaddig megmarad a SignalR szolgáltatásban, amíg az ügyfél vagy a kiszolgáló le nem bontja a kapcsolatot.
Ezen a ponton az alkalmazáskiszolgáló egy eseményt kap az új ügyféltől származó információkkal. Az ügyfélhez logikai kapcsolat jön létre az alkalmazáskiszolgálón. Az adatcsatorna az ügyféltől az alkalmazáskiszolgálóig, a SignalR szolgáltatáson keresztül jön létre.
A SignalR szolgáltatás adatokat továbbít az ügyfélről a párosító alkalmazáskiszolgálóra. Az alkalmazáskiszolgálóról érkező adatokat a rendszer elküldi a megfeleltetett ügyfeleknek.
A SignalR szolgáltatás nem menti vagy tárolja az ügyféladatokat, a rendszer valós időben továbbítja az összes fogadott ügyféladatot a célkiszolgálóra vagy ügyfelekre.
Az Azure SignalR szolgáltatás logikai átviteli rétegként működik az alkalmazáskiszolgáló és az ügyfelek között. Minden állandó kapcsolat ki van töltve a SignalR szolgáltatásba. Ennek eredményeképpen az alkalmazáskiszolgálónak csak a központi osztályban kell kezelnie az üzleti logikát anélkül, hogy az ügyfélkapcsolatok miatt kellene aggódnia.
Következő lépések
Az Azure SignalR SDK-kkal kapcsolatos további információkért lásd: