ASP.NET Core SignalR
Eintrag zuletzt aktualisiert am: 22.03.2023
ASP.NET Core SignalR ist die .NET Core-Variante von
ASP.NET SignalR, die es seit
.NET Core 2.0 (Jahr 2017) im modernen .NET gibt.
Die Bibliothek
ASP.NET Core SignalR (Vorgänger im klassisches
.NET Framework war:
ASP.NET SignalR) erlaubt eine bidirektionale Kommunikation zwischen einem Client (oft ein Browser, aber auch anderen Anwendungsarten wie Desktop- und Konsolenanwendungen sind möglich) und einem
Webserver. Somit kann nicht nur der Client eine Nachricht an den
Webserver senden, sondern auch der
Webserver die Clients benachrichtigen, z.B. eine kontinurliche Anzeige von Monitoring-Daten.
Abhängig von den Fähigkeiten der beteiligten Systeme werden die Nachrichten auf Basis von
Websockets, Server-Sent Events (
SSE) oder Long Polling übermittelt. Damit haben Entwickler und Benutzer nichts zu tun;
ASP.NET Core SignalR entscheidet selbst zur Laufzeit über das Verfahren. Eine manuelle Vergabe durch den Softwareentwickler ist aber möglich.
Hinweis: Microsoft spricht von "Real Time"-Kommunikation, was aber im engeren Sinne des Begriffs "Real Time" nicht korrekt ist.
"
ASP.NET Core SignalR is an open-source library that simplifies adding real-time web functionality to apps. Real-time web functionality enables server-side code to push content to clients instantly." [
https://docs.microsoft.com/de-de/aspnet/core/signalr/introduction]
Server
NuGet-Paket: Microsoft.AspNetCore.SignalR
Clients
- .NET via NuGet-Paket Microsoft.AspNetCore.SignalR.Client
- Java (eingeschränkte Funktionen)
- JavaScript (eingeschränkte Funktionen)
Implementierung
Webserver: Basisklasse Hub
- definiert Methoden für Nachrichten
- empfängt Nachrichten von Clients
- verteilt Nachrichten nach frei programmierbaren Kriterien an registrierte Clients
Client: Klasse HubConnectionBuilder
- registriert sich für Nachrichten beim Hub
- Client sendet Nachricht an Hub
Transporttechniken bei ASP.NET Core SignalR
WebSockets
Server-Sent Events
Long Polling
--> Die Auswahl des besten Transportmechanismuses erfolgt automatisch durch
ASP.NET Core SignalR auf Baiss der Fähigkeiten von
Webbrowser und
Webserver.
Zur
Serialisierung stehen in
ASP.NET Core SignalR grundsätzlich die Formate
JSON und
MessagePack zur Verfügung. Bei einem Browser-basierten Client ist aber nur
JSON nutzbar ("It's not possible to configure
MessagePack serialization in the
JavaScript client at this time." [
https://github.com/dotnet/AspNetCore.Docs/blob/master/aspnetcore/signalr/configuration.md])