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 eine lokale ASP.NET Core SignalR- oder ASP.NET SignalR-Anwendung ganz einfach zur Verwendung mit SignalR Service migrieren, indem Sie ein paar Codezeilen ändern.

Das Diagramm zeigt die typische Architektur bei der Verwendung von SignalR Service mit Ihrem Anwendungsserver.

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

Aufbau

Anwendungsserververbindungen

Ein selbst gehosteter ASP.NET Core SignalR-Anwendungsserver lauscht auf Anforderungen von Clients und stellt direkt eine Verbindung her.

Bei der Verwendung von SignalR Service akzeptiert der Anwendungsserver keine permanenten Clientverbindungen mehr. Stattdessen wird die Verbindung wie folgt hergestellt:

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

Weitere Informationen finden Sie unter Clientverbindungen.

Nach dem Start des Anwendungsservers geschieht Folgendes:

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

Die Anzahl von Verbindungen ist anfänglich standardmäßig auf fünf festgelegt und kann mithilfe der Option InitialHubServerConnectionCount im SignalR Service SDK konfiguriert werden. Weitere Informationen finden Sie unter Konfiguration.

Während der Anwendungsserver mit SignalR Service verbunden ist, sendet der Azure SignalR Service Lastenausgleichsnachrichten an den Server. Anschließend startet das SDK neue Serververbindungen mit dem Dienst, um die Leistung zu verbessern. Nachrichten an und von Clients werden in diesen Verbindungen per Multiplexing verarbeitet.

Serververbindungen mit SignalR Service bleiben permanent bestehen. Wenn eine Serververbindung aufgrund eines Netzwerkproblems getrennt wird, geschieht Folgendes:

  • Alle Clients, die diese Serververbindung nutzen, werden getrennt. Weitere Informationen finden Sie unter Datenübertragung zwischen Client und Server.
  • Der Server stellt die Verbindung der Clients automatisch wieder her.

Clientverbindungen

Wenn Sie SignalR Service verwenden, stellen Clients keine Verbindung mit dem Anwendungsserver her, sondern mit dem Dienst. Zum Einrichten von permanenten Verbindungen zwischen dem Client und SignalR Service müssen die folgenden drei Schritte ausgeführt werden.

  1. Der Client sendet eine Aushandlungsanforderung an den Anwendungsserver.

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

    • Für 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>"
      }
      
    • Für 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 SignalR Service herzustellen.

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

Datenübertragung zwischen Client und Server

Wenn ein Client mit SignalR Service verbunden ist, sucht die Dienstruntime nach einer Serververbindung, um Anforderungen dieses Clients zu verarbeiten.

  • Dieser Schritt erfolgt nur einmal, und er stellt eine 1: 1-Zuordnung zwischen dem Client und Serververbindungen dar.
  • 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.

SignalR Service speichert keine Kundendaten. Alle empfangenen Kundendaten werden in Echtzeit an den Zielserver oder Clients übermittelt.

Azure SignalR Service fungiert als logische Transportschicht zwischen Anwendungsserver und Clients. Alle permanente Verbindungen werden auf SignalR Service ausgelagert. Folglich muss der Anwendungsserver nur die Geschäftslogik in der Hubklasse verarbeiten, ohne sich um Clientverbindungen kümmern zu müssen.

Nächste Schritte

Weitere Informationen zu Azure SignalR Service SDKs finden Sie hier: