Share via


Interne werking van Azure SignalR Service

Azure SignalR Service is gebouwd op basis van het ASP.NET Core SignalR-framework. Het biedt ook ondersteuning voor ASP.NET SignalR door het gegevensprotocol van ASP.NET SignalR te herstellen boven op het ASP.NET Core-framework.

U kunt eenvoudig een lokale ASP.NET Core SignalR of een ASP.NET SignalR-toepassing migreren om te werken met SignalR Service, met door enkele regels code te wijzigen.

In het diagram wordt de typische architectuur beschreven wanneer u de SignalR-service gebruikt met uw toepassingsserver.

De verschillen met een zelf-hostende ASP.NET Core SignalR-toepassing worden ook behandeld.

Architectuur

Toepassingsserververbindingen

Een zelf-hostende ASP.NET Core SignalR-toepassingsserver luistert en verbindt clients rechtstreeks.

Met SignalR Service accepteert de toepassingsserver geen permanente clientverbindingen meer, in plaats daarvan:

  1. Voor elke hub wordt een negotiate-eindpunt beschikbaar gesteld door Azure SignalR Service SDK.
  2. Het eindpunt reageert op aanvragen voor clientonderhandeling en stuurt clients om naar SignalR Service.
  3. De clients maken verbinding met SignalR Service.

Zie Clientverbindingen voor meer informatie.

Zodra de toepassingsserver is gestart:

  • Voor ASP.NET Core SignalR: Azure SignalR Service SDK opent vijf WebSocket-verbindingen per hub met SignalR Service.
  • Voor ASP.NET SignalR: Azure SignalR Service SDK opent vijf WebSocket-verbindingen per hub naar SignalR Service en één webSocket-verbinding per toepassing.

Het initiële aantal verbindingen is standaard ingesteld op 5 en kan worden geconfigureerd met behulp van de InitialHubServerConnectionCount optie in de SignalR Service SDK. Zie de configuratie voor meer informatie.

Terwijl de toepassingsserver is verbonden met de SignalR-service, kan de Azure SignalR-service taakverdelingsberichten verzenden naar de server. Vervolgens start de SDK nieuwe serververbindingen met de service voor betere prestaties. Berichten van en naar clients worden in deze verbindingen ge multiplexeerd.

Serververbindingen worden permanent verbonden met de SignalR-service. Als een serververbinding is verbroken vanwege een netwerkprobleem:

  • Alle clients die door deze serververbinding worden geleverd, verbreken de verbinding. Zie Gegevensoverdracht tussen client en server voor meer informatie.
  • De server maakt automatisch opnieuw verbinding met de clients.

Clientverbindingen

Wanneer u de SignalR-service gebruikt, maken clients verbinding met de service in plaats van de toepassingsserver. Er zijn drie stappen voor het tot stand brengen van permanente verbindingen tussen de client en de SignalR-service.

  1. Een client verzendt een onderhandelingsaanvraag naar de toepassingsserver.

  2. De toepassingsserver maakt gebruik van de Azure SignalR Service SDK om een omleidingsreactie te retourneren die de SIGNALR Service-URL en het toegangstoken bevat.

    • Voor ASP.NET Core SignalR ziet een typisch omleidingsantwoord er als volgt uit:
      {
          "url":"https://test.service.signalr.net/client/?hub=chat&...",
          "accessToken":"<a typical JWT token>"
      }
      
    • Voor ASP.NET SignalR ziet een typisch omleidingsantwoord er als volgt uit:
      {
          "ProtocolVersion":"2.0",
          "RedirectUrl":"https://test.service.signalr.net/aspnetclient",
          "AccessToken":"<a typical JWT token>"
      }
      
  3. Nadat de client het omleidingsantwoord heeft ontvangen, wordt de URL en het toegangstoken gebruikt om verbinding te maken met SignalR Service.

Zie Transportprotocollen voor meer informatie over ASP.NET Core SignalR's.

Gegevensoverdracht tussen client en server

Wanneer een client is verbonden met de SignalR-service, vindt de serviceruntime een serververbinding om deze client te bedienen.

  • Deze stap vindt slechts één keer plaats en is een een-op-een-toewijzing tussen de client- en serververbinding.
  • De toewijzing wordt bijgehouden in SignalR Service totdat de verbinding met de client of server wordt verbroken.

Op dat moment ontvangt de toepassingsserver een gebeurtenis met informatie van de nieuwe client. In de toepassingsserver wordt een logische verbinding met de client tot stand gebracht. Via SignalR-Service wordt het gegevenskanaal van de client naar de toepassingsserver gerealiseerd.

SignalR Service verzendt gegevens van de client naar de gekoppelde toepassingsserver. Gegevens van de toepassingsserver worden verzonden naar de toegewezen clients.

SignalR Service slaat geen klantgegevens op of slaat deze op, alle ontvangen klantgegevens worden in realtime verzonden naar de doelserver of clients.

Azure SignalR Service fungeert als een logische transportlaag tussen toepassingsserver en clients. Alle permanente verbindingen worden geoffload naar SignalR Service. Als gevolg hiervan hoeft de toepassingsserver alleen de bedrijfslogica in de hubklasse te verwerken, zonder dat u zich zorgen hoeft te maken over clientverbindingen.

Volgende stappen

Zie voor meer informatie over Azure SignalR SDK's: