Ausführliche Informationen zu Azure SignalR Service

Azure SignalR Service basiert auf dem ASP.NET Core SignalR-Framework. Er unterstützt auch ASP.NET SignalR, indem das Datenprotokoll von ASP.NET SignalR erneut über das ASP.NET Core-Framework implementiert wird.

Sie können ganz einfach eine lokale ASP.NET Core SignalR oder eine ASP.NET SignalR-Anwendung migrieren, um mit SignalR Service zu arbeiten, indem Sie einige Codezeilen ändern.

Das Diagramm beschreibt die typische Architektur, wenn Sie den SignalR-Dienst mit Ihrem Anwendungsserver verwenden.

Die Unterschiede zu einer selbst gehosteten ASP.NET Core SignalR-Anwendung werden ebenfalls erläutert.

Architecture

Anwendungsserververbindungen

Ein selbst gehosteter ASP.NET Core SignalR-Anwendungsserver lauscht und verbindet Clients direkt.

Bei SignalR-Dienst akzeptiert der Anwendungsserver stattdessen keine dauerhaften Clientverbindungen mehr:

  1. Wird ein negotiate-Endpunkt von Azure SignalR Service-SDK für jeden Hub verfügbar gemacht.
  2. Der Endpunkt reagiert auf Clientverhandlungsanforderungen und leitet Clients an den SignalR-Dienst um.
  3. Die Clients stellen eine Verbindung mit dem SignalR-Dienst her.

Weitere Informationen finden Sie unter Clientverbindungen.

Sobald der Anwendungsserver gestartet wurde:

  • Für ASP.NET Core SignalR: Azure SignalR Service SDK öffnet fünf WebSocket-Verbindungen pro Hub zum SignalR-Dienst.
  • Für ASP.NET SignalR: Azure SignalR Service SDK öffnet fünf WebSocket-Verbindungen pro Hub zum SignalR-Dienst und eine pro AnwendungswebSocket-Verbindung.

Die anfängliche Anzahl der Verbindungen ist standardmäßig auf 5 festgelegt und kann mithilfe der InitialHubServerConnectionCount Option im SignalR Service SDK konfiguriert werden. Weitere Informationen finden Sie unter "Konfiguration".

Während der Anwendungsserver mit dem SignalR-Dienst verbunden ist, sendet der Azure SignalR-Dienst möglicherweise Lastenausgleichsnachrichten an den Server. Anschließend startet das SDK neue Serververbindungen mit dem Dienst, um eine bessere Leistung zu erzielen. Nachrichten an und von Clients werden in diesen Verbindungen multixiert.

Serververbindungen sind dauerhaft mit dem SignalR-Dienst verbunden. Wenn eine Serververbindung aufgrund eines Netzwerkproblems getrennt wird:

Clientverbindungen

Wenn Sie den SignalR-Dienst verwenden, stellen Clients anstelle des Anwendungsservers eine Verbindung mit dem Dienst her. Es gibt drei Schritte, um dauerhafte Verbindungen zwischen dem Client und dem SignalR-Dienst herzustellen.

  1. Ein Client sendet eine Aushandlungsanforderung an den Anwendungsserver.

  2. Der Anwendungsserver verwendet das Azure SignalR Service SDK, um eine Umleitungsantwort zurückzugeben, die die SignalR-Dienst-URL und das Zugriffstoken enthält.

    • Bei ASP.NET Core SignalR sieht eine typische Umleitungsantwort wie folgt aus:
      {
          "url":"https://test.service.signalr.net/client/?hub=chat&...",
          "accessToken":"<a typical JWT token>"
      }
      
    • Bei ASP.NET SignalR sieht eine typische Umleitungsantwort wie folgt aus:
      {
          "ProtocolVersion":"2.0",
          "RedirectUrl":"https://test.service.signalr.net/aspnetclient",
          "AccessToken":"<a typical JWT token>"
      }
      
  3. Nachdem der Client die Umleitungsantwort empfangen hat, verwendet er die URL und das Zugriffstoken, um eine Verbindung mit dem SignalR-Dienst herzustellen.

Weitere Informationen zu ASP.NET Core SignalR finden Sie unter Transportprotokolle.

Datenübertragung zwischen Client und Server

Wenn ein Client mit dem SignalR-Dienst verbunden ist, findet die Dienstlaufzeit eine Serververbindung, um diesen Client zu bedienen.

  • Dieser Schritt erfolgt nur einmal und ist eine 1:1-Zuordnung zwischen Client- und Serververbindung.
  • Die Zuordnung wird SignalR Service aufrechterhalten, bis die Verbindung vom Client oder Server getrennt wird.

An diesem Punkt empfängt der Anwendungsserver ein Ereignis mit Informationen von dem neuen Client. Eine logische Verbindung mit dem Client wird im Anwendungsserver erstellt. Der Datenkanal wird vom Client zum Anwendungsserver über SignalR Service eingerichtet.

Der SignalR Service überträgt Daten vom Client an den gekoppelten Anwendungsserver. Daten vom Anwendungsserver werden an die zugeordneten Clients gesendet.

Der SignalR-Dienst speichert keine Kundendaten, alle empfangenen Kundendaten werden in Echtzeit an den Zielserver oder die Clients übertragen.

Der Azure SignalR-Dienst fungiert als logische Transportebene zwischen Anwendungsserver und Clients. Alle permanente Verbindungen werden auf SignalR Service ausgelagert. Daher muss der Anwendungsserver nur die Geschäftslogik in der Hubklasse verarbeiten, ohne sich Gedanken über Clientverbindungen machen zu müssen.

Nächste Schritte

Weitere Informationen zu Azure SignalR-SDKs finden Sie unter: