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.

Architecture

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:

  1. Az negotiate Azure SignalR Service SDK minden központhoz közzéten egy végpontot.
  2. A végpont válaszol az ügyfél-egyeztetési kérelmekre, és átirányítja az ügyfeleket a SignalR Szolgáltatásba.
  3. 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.
  • ASP.NET SignalR esetén: Az Azure SignalR Service SDK központonként öt WebSocket-kapcsolatot nyit meg a SignalR Szolgáltatáshoz, és egy alkalmazást WebSocket-kapcsolatként.

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üldhet 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.

  1. Az ügyfél egyeztetési kérelmet küld az alkalmazáskiszolgálónak.

  2. 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 token>"
      }
      
    • 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 token>"
      }
      
  3. 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: