Udostępnij za pośrednictwem


Wewnętrzne elementy usługi Azure SignalR Service

Usługa Azure SignalR Service powstała na podstawie struktury SignalR platformy ASP.NET Core. Obsługuje również ASP.NET SignalR przez ponowne wdrożenie protokołu danych usługi SignalR ASP.NET na podstawie platformy ASP.NET Core.

Możesz łatwo migrować lokalną ASP.NET Core SignalR lub aplikację ASP.NET SignalR do pracy z usługą SignalR Service, zmieniając kilka wierszy kodu.

Diagram opisuje typową architekturę podczas korzystania z usługi SignalR Service z serwerem aplikacji.

Omówiono także różnice względem samodzielnie hostowanej aplikacji SignalR platformy ASP.NET Core.

Architektura

Połączenia serwera aplikacji

Serwer aplikacji ASP.NET Core SignalR nasłuchuje i łączy klientów bezpośrednio.

W przypadku usługi SignalR Service serwer aplikacji nie akceptuje już trwałych połączeń klienckich, zamiast tego:

  1. Punkt końcowy negotiate jest uwidaczniany przez zestaw SDK usługi Azure SignalR Service dla każdego centrum.
  2. Punkt końcowy odpowiada na żądania negocjacji klienta i przekierowuje klientów do usługi SignalR Service.
  3. Klienci łączą się z usługą SignalR Service.

Aby uzyskać więcej informacji, zobacz Połączenia klienta.

Po uruchomieniu serwera aplikacji:

  • W przypadku ASP.NET Core SignalR: zestaw SDK usługi Azure SignalR Service otwiera pięć połączeń protokołu WebSocket na koncentrator z usługą SignalR Service.
  • W przypadku ASP.NET SignalR: zestaw SDK usługi Azure SignalR Service otwiera pięć połączeń protokołu WebSocket na koncentrator z usługą SignalR Service i jedno na połączenie WebSocket aplikacji.

Początkowa liczba połączeń jest domyślnie ustawiona na 5 i można jej skonfigurować przy użyciu InitialHubServerConnectionCount opcji w zestawie SDK usługi SignalR Service. Aby uzyskać więcej informacji, zobacz konfiguracja.

Gdy serwer aplikacji jest połączony z usługą SignalR, usługa Azure SignalR wysyła komunikaty równoważenia obciążenia do serwera. Następnie zestaw SDK uruchamia nowe połączenia serwera z usługą w celu uzyskania lepszej wydajności. Komunikaty do i z klientów są multipleksowane do tych połączeń.

Połączenia serwera są trwale połączone z usługą SignalR Service. Jeśli połączenie z serwerem zostało rozłączone z powodu problemu z siecią:

Połączenia klienta

W przypadku korzystania z usługi SignalR Service klienci łączą się z usługą zamiast z serwerem aplikacji. Istnieją trzy kroki nawiązywania trwałych połączeń między klientem a usługą SignalR Service.

  1. Klient wysyła żądanie negocjowania do serwera aplikacji.

  2. Serwer aplikacji używa zestawu SDK usługi Azure SignalR Service do zwrócenia odpowiedzi przekierowania zawierającej adres URL usługi SignalR Service i token dostępu.

    • W przypadku ASP.NET Core SignalR typowa odpowiedź przekierowania wygląda następująco:
      {
          "url":"https://test.service.signalr.net/client/?hub=chat&...",
          "accessToken":"<a typical JWT token>"
      }
      
    • W przypadku ASP.NET SignalR typowa odpowiedź przekierowania wygląda następująco:
      {
          "ProtocolVersion":"2.0",
          "RedirectUrl":"https://test.service.signalr.net/aspnetclient",
          "AccessToken":"<a typical JWT token>"
      }
      
  3. Po odebraniu odpowiedzi przekierowania klient używa adresu URL i tokenu dostępu do nawiązywania połączenia z usługą SignalR Service.

Aby dowiedzieć się więcej na temat ASP.NET Core SignalR, zobacz Protokoły transportu.

Przesyłanie danych między klientem a serwerem

Gdy klient jest połączony z usługą SignalR Service, środowisko uruchomieniowe usługi znajduje połączenie serwera obsługującego tego klienta.

  • Ten krok odbywa się tylko raz i jest mapowaniem jeden do jednego między klientem a połączeniem serwera.
  • Mapowanie jest zachowywane w usłudze SignalR Service, dopóki klient lub serwer nie zamknie połączenia.

W tym momencie serwer aplikacji odbiera zdarzenie z informacjami od nowego klienta. Na serwerze aplikacji tworzone jest połączenie logiczne do klienta. Kanał danych jest ustanawiany od klienta do serwera aplikacji za pośrednictwem usługi SignalR Service.

Usługa SignalR Service przesyła dane z klienta do serwera aplikacji parowania. Dane z serwera aplikacji są wysyłane do zamapowanych klientów.

Usługa SignalR Service nie zapisuje ani nie przechowuje danych klientów. Wszystkie odebrane dane klienta są przesyłane na serwer docelowy lub klientów w czasie rzeczywistym.

Usługa Azure SignalR Service działa jako warstwa transportu logicznego między serwerem aplikacji a klientami. Wszystkie trwałe połączenia są przenoszone do usługi SignalR Service. W związku z tym serwer aplikacji musi obsługiwać logikę biznesową tylko w klasie centrum, nie martwiąc się o połączenia klientów.

Następne kroki

Aby dowiedzieć się więcej na temat zestawów SDK usługi Azure SignalR, zobacz: