Skalieren von ASP.NET Core SignalR-Anwendungen mit Azure SignalR

Entwickeln von SignalR-Apps

SignalR ist derzeit in zwei Versionen für die Verwendung mit Webanwendungen verfügbar:

  • ASP.NET SignalR
  • neue ASP.NET Core SignalR

Bei ASP.NET Core SignalR handelt es sich um eine umgeschriebene Version der vorherigen Version. Daher ist ASP.NET Core SignalR nicht abwärtskompatibel mit der früheren SignalR-Version. Die APIs und Verhalten unterscheiden sich. Der Azure SignalR-Dienst unterstützt beide Versionen.

Mit dem Azure SignalR-Dienst können Sie Ihre eigentliche Webanwendung auf mehreren Plattformen (Windows, Linux und macOS) Azure-App Service, IIS, Nginx, Apache, Docker hosten. Außerdem können Sie das Self-Hosting in Ihrem eigenen Prozess nutzen.

Azure SignalR Service ist die beste Wahl, wenn die Ziele für Ihre Anwendung folgendes umfassen:

  • Unterstützung der neuesten Funktionalität zum Aktualisieren von Webclients mit Echtzeit-Inhaltsupdates,
  • auf mehreren Plattformen ausgeführt werden (Azure, Windows, Linux und macOS)
  • Hosting in verschiedenen Umgebungen

Was spricht dagegen, SignalR selbst bereitzustellen?

Es ist weiterhin ein gültiger Ansatz, Ihre eigene Azure Web App bereitzustellen, die SignalR als Back-End-Komponente für Ihre gesamte Webanwendung unterstützt.

Einer der wichtigsten Gründe für die Nutzung des Azure SignalR Service ist Einfachheit. Beim Azure SignalR Service müssen Sie sich nicht mit Problemen in Bezug auf die Leistung, Skalierbarkeit und Verfügbarkeit befassen. Diese Probleme sind für Sie durch eine Vereinbarung zum Servicelevel mit einem Wert von 99,9% abgedeckt.

Außerdem sind WebSockets normalerweise das bevorzugte Verfahren zur Unterstützung von Echtzeit-Inhaltsupdates. Das Durchführen eines Lastenausgleichs für eine große Zahl von persistenten WebSocket-Verbindungen wird zu einem komplizierten Problem, das Sie beim Skalieren lösen müssen. Gängige Lösungen: DNS-Lastenausgleich, Hardwarelastenausgleich und Softwarelastenausgleich. Der Azure SignalR Service übernimmt die Lösung dieses Problems für Sie.

Für ASP.NET Core SignalR kann es sein, dass Sie überhaupt keine Anforderungen haben, eine Webanwendung zu hosten. Die Logik Ihrer Webanwendung kann Serverless Computing verwenden. Es kann beispielsweise sein, dass Ihr Code mit Azure Functions-Triggern nur bedarfsgesteuert gehostet und ausgeführt wird. Dieses Szenario kann schwierig sein, da Ihr Code nur bei Bedarf ausgeführt wird und keine langen Verbindungen mit Clients Standard. Diese Situation kann mit dem Azure SignalR Service gelöst werden, da der Dienst bereits Verbindungen für Sie verwaltet. Weitere Informationen finden Sie in der Übersicht über die Verwendung des SignalR-Diensts mit Azure-Funktionen. Da ASP.NET SignalR ein anderes Protokoll verwendet, wird dieser Serverless-Modus für ASP.NET SignalR nicht unterstützt.

Wie wird die Skalierung durchgeführt?

Es ist üblich, SignalR mit SQL Server, Azure Service Bus oder Azure Cache für Redis zu skalieren. Der Azure SignalR Service übernimmt den Skalierungsansatz für Sie. Leistung und Kosten sind mit diesen Ansätzen vergleichbar, ohne dass der komplexe Umgang mit diesen anderen Diensten anfällt. Sie müssen lediglich die Einheitenanzahl für Ihren Dienst aktualisieren. Jede Einheit unterstützt bis zu 1.000 Clientverbindungen.

Nächste Schritte