ASP.NET SignalR
Eintrag zuletzt aktualisiert am: 26.11.2019
Die Implementierung von Benachrichtigungsszenarien ist 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.
Installation: Nuget (Install-Package Microsoft.AspNet.SignalR -pre)
Quelle:
http://signalr.net/Lizenz:
Apache 2.0 License
Neuere Variante:
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 (siehe nachfolgende Abbildung).
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.