ASP.NET SignalR

Eintrag zuletzt aktualisiert am: 09.11.2022

 siehe auch http://signalr.net/

Die Bibliothek ASP.NET SignalR und deren modernerer Nachfolger ASP.NET Core 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. Die Implementierung von Benachrichtigungsszenarien war zuvor im Web-Umfeld nur über Umwege realisierbar. Das Framework ASP.NET SignalR unterstützt hierbei, indem es mehrere Implementierungen hierfür anbietet. Der Entwickler muss sich somit nicht mit der Erstellung von Infrastrukturcode belasten.

Zweck von ASP.NET SignalR - Autor: Manfred Steyer
Während das Web auf einer Kommunikation nach dem Prinzip Anfrage/Antwort basiert, bietet es für Benachrichtigungsszenarien keine ideale Ausgangsbasis. Der Grund dafür liegt an der Funktionsweise von Firewalls: Sie blocken aus Sicherheitsgründen Anfragen, die von außen initiiert werden. Nachrichten, die von den dahinter liegenden Clients versendet werden, sowie Antworten darauf werden hingegen zugelassen.

Um diese Einschränkung zu umschiffen, setzen Webentwickler seit Jahren auf Verfahren, wie Long-Polling. Dabei kontaktiert der Client den Server immer wieder, um herauszufinden, ob eine Benachrichtigung vorliegt. Daneben ermöglicht der aufkommende Standard Websockets eine bidirektionale Kommunikation ohne Umwege, indem sich Client und Server darauf einigen, eine Verbindung, die vom Client unter Verwendung von HTTP und somit "Firewall-freundlich" initiiert wurde, fortan als TCP-Verbindung zu nutzen.

Da Web-Sockets nur dann eingesetzt werden können, wenn sowohl der Webserver als auch der Browser mitspielen, ist der Entwickler angehalten, neben einer Unterstützung für Web-Sockets auch eine Unterstützung für Long-Polling bereitzustellen. Dies lässt sich mit Web-Technologien zwar bewerkstelligen, ist jedoch mit viel Infrastrukturcode verbunden. Genau hier kommt ASP.NET SignalR ins Spiel, indem es zum einen sowohl Websockets als auch verschiedene Long-Polling-Verfahren unterstützt und zum anderen anhand der Fähigkeiten von Client und Server selbstständig eine dieser Möglichkeiten wählt. Falls möglich, kommen Websockets zum Einsatz; ansonsten eine Long-Polling-Implementierung.