ASP.NET Core SignalR-toepassingen schalen met Azure SignalR Service
SignalR-apps ontwikkelen
SignalR is momenteel beschikbaar in twee versies voor gebruik met webtoepassingen:
- ASP.NET SignalR
- nieuwe ASP.NET Core SignalR
ASP.NET Core SignalR is gebaseerd op de vorige versie, maar is herschreven. Als gevolg hiervan is ASP.NET Core SignalR niet achterwaarts compatibel met de eerdere SignalR-versie. De API's en het gedrag ervan zijn anders. De Azure SignalR Service ondersteunt beide versies.
Met Azure SignalR Service kunt u uw werkelijke webtoepassing hosten op meerdere platforms (Windows, Linux en macOS) Azure-app Service, IIS, Nginx, Apache, Docker. U kunt de toepassing ook zelf hosten in uw eigen proces.
Azure SignalR Service is de beste keuze als de doelen voor uw toepassing zijn:
- ondersteuning van de nieuwste functionaliteit voor het bijwerken van webclients met realtime inhoudsupdates,
- worden uitgevoerd op meerdere platforms (Azure, Windows, Linux en macOS)
- hosting in verschillende omgevingen
Waarom zou ik SignalR niet zelf implementeren?
Het is nog steeds een geldige benadering om uw eigen Azure-web-app te implementeren die SignalR ondersteunt als back-endonderdeel voor uw algehele webtoepassing.
Een van de belangrijkste redenen om de service Azure SignalR te gebruiken, is de eenvoud. Met de service Azure SignalR hoeft u zich niet te bekommeren om zaken als prestaties, schaalbaarheid en beschikbaarheid. Deze zaken worden voor u geregeld met een SLA van 99,9%.
WebSockets is ook de voorkeursmethode voor het bijwerken van inhoud in realtime. De taakverdeling van een groot aantal persistente WebSocket-verbindingen wordt echter een complexe puzzel als u de schaal wilt aanpassen. Veelgebruikte oplossingen: DNS-taakverdeling, hardware load balancers en softwaretaakverdeling. Dit probleem wordt automatisch voor u afgehandeld met de service Azure SignalR.
Voor ASP.NET Core SignalR is het mogelijk dat u helemaal geen vereisten hebt om een webtoepassing daadwerkelijk te hosten. De logica van uw webtoepassing kan serverloze computing gebruiken. Mogelijk wordt uw code alleen gehost en uitgevoerd op aanvraag met Azure Functions-triggers. Dit scenario kan lastig zijn omdat uw code alleen op aanvraag wordt uitgevoerd en geen lange verbindingen met clients onderhoudt. Azure SignalR is geknipt voor deze situatie, omdat verbindingen al voor u worden beheerd via deze service. Zie voor meer informatie een overzicht van het gebruik van SignalR Service met Azure Functions. Aangezien ASP.NET SignalR gebruikmaakt van een ander protocol, wordt deze serverloze modus niet ondersteund voor ASP.NET SignalR.
Hoe werkt het schalen?
Het is gebruikelijk om SignalR te schalen met SQL Server, Azure Service Bus of Azure Cache voor Redis. De schaalmethode wordt voor u beheerd met de service Azure SignalR. De prestaties en kosten van deze service zijn vergelijkbaar met die van de andere services, maar dan zonder de complexiteit van het beheer van die services. U hoeft alleen maar het aantal eenheden voor uw service bij te werken. Elke eenheid ondersteunt maximaal 1000 clientverbindingen.