SignalR ist die offizielle Bibliothek von Microsoft für bidirektionale Echtzeitkommunikation zwischen Server und Client in ASP.NET- und ASP.NET-Core-Anwendungen. Es abstrahiert die zugrundeliegende Transportschicht und nutzt im Idealfall WebSockets, fällt bei Bedarf aber automatisch auf Server-Sent Events oder Long Polling zurück, um auch in Umgebungen ohne durchgehende WebSocket-Unterstützung zu funktionieren.
Eingesetzt wird SignalR für Anwendungen, in denen der Server unaufgefordert Nachrichten an verbundene Clients senden muss: Chat- und Kollaborationsanwendungen, Live-Dashboards, Realtime-Spiele, Push-Benachrichtigungen, Live-Tickerdaten, Telemetrie- und Monitoring-Oberflächen sowie als Transportschicht für Blazor Server, das UI-Updates über SignalR ausliefert. Auf der Server-Seite werden Hubs als Klassen geschrieben, deren Methoden direkt aus Clients (JavaScript/TypeScript, .NET, Java, Swift) aufgerufen werden können; umgekehrt kann der Hub Methoden auf einzelnen Clients, Gruppen oder allen Verbindungen invokieren.
Der Einsatzzweck und das gelöste Problem von SignalR ergeben sich aus der Komplexität direkter Realtime-Implementierungen: Verschiedene Browser, Proxies und Firewalls unterstützen WebSockets unterschiedlich, das Connection Management mit Reconnects, Heartbeats und Backpressure ist nicht trivial, und Skalierung über mehrere Server erfordert eine geteilte Backplane (z. B. Redis oder Azure SignalR Service). SignalR kapselt diese Aspekte hinter einer einfachen API und kann mit dem Azure SignalR Service in einen vollständig verwalteten Dienst ausgelagert werden, der zehntausende Verbindungen pro Instanz unterstützt.
Historisch entstand SignalR 2011 als Side-Projekt der Microsoft-Mitarbeiter David Fowler und Damian Edwards, ursprünglich auf Basis von ASP.NET. Es wurde rasch in das offizielle ASP.NET-Ökosystem integriert (ASP.NET SignalR), bevor es mit ASP.NET Core 2.1 (2018) in Form von ASP.NET Core SignalR komplett neu implementiert wurde — mit neuem Wire-Protokoll (basierend auf MessagePack/JSON), Streaming-Hubs und besserer Container-Tauglichkeit.
Heute ist SignalR die Grundlage so unterschiedlicher Microsoft-Produkte wie Azure Notification Hubs, Visual Studio Live Share und Blazor Server.
Mit WebSockets und SignalR geht bei bluehands die Vision von bidirektonaler Web-Kommunikation in erfüllung. In den späten 90er haben die bluehands-Gründer dieses Pattern in Anwendungen integriert. Zuerst über stehende Verbindungen in einem iFrame später über Long-Polling. Dabei wurden kleine javascript kommandos vom Server zum Client übertragen. Mit der Einführung von XHR (Xml http request) im IE5.5 konnten wir dann im Hintergrund SOAP-Request ausführen. Diese Technik wurde später als AJAX (dann mit JSON) bekannt. Mit unserem Kunden Seven2one haben wir damit das Händlerportal für E.ON entwickelt und Maßstäbe gesetzt. Das Portal hat den 3. Preis beim .NET Award erhalten.