ASP.NET SignalR
Eintrag zuletzt aktualisiert am: 22.03.2023
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.
Geschichte
Erste Alpha-Version: 31.10.2012
Version 1.0: 18.2.2013
Erste Version für .NET Core / modernes .NET: 2017 (
ASP.NET Core SignalR)
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.