Übersicht über ASP.NET Core SignalR

Was ist SignalR?

ASP.NET Core SignalR ist eine Open-Source-Bibliothek, die das Hinzufügen von Webfunktionalität in Echtzeit zu Apps vereinfacht. Durch Webfunktionalität in Echtzeit kann serverseitiger Code Inhalte sofort an Clients pushen.

Geeignete Kandidaten für SignalR:

  • Apps, für die eine hohe Frequenz von Updates vom Server benötigt wird. Beispiele hierfür sind Apps aus den Bereichen Gaming, soziale Netzwerke, Voting, Auktionen, Karten und GPS.
  • Dashboards und Überwachungs-Apps. Beispiele hierfür sind Unternehmensdashboards, Sofortupdates von Verkaufszahlen oder Reisehinweise.
  • Apps für die Zusammenarbeit. Whiteboard-Apps und Software für Teambesprechungen sind Beispiele für Apps für die Zusammenarbeit.
  • Apps, für die Benachrichtigungen benötigt werden. Soziale Netzwerke, E-Mail, Chat, Games, Reisehinweise und viele andere Arten von Apps nutzen Benachrichtigungen.

SignalR bietet eine API zum Erstellen von Remoteprozeduraufrufen (Remote Procedure Calls, RPCs) zwischen Server und Client. Die RPCs rufen Funktionen auf Clients in serverseitigem .NET Core-Code auf. Es gibt mehrere unterstützte Plattformen, die jeweils über ein Client SDK verfügen. Aus diesem Grund kann die Programmiersprache, die per Remoteprozeduraufruf aufgerufen wird, variieren.

Es folgen einige Features von SignalR für ASP.NET Core:

  • Übernimmt die Verbindungsverwaltung automatisch
  • Sendet Nachrichten gleichzeitig an alle verbundenen Clients. Beispielsweise in einem Chatroom
  • Sendet Nachrichten an bestimmte Clients oder Gruppen von Clients
  • Lässt sich skalieren, um zunehmenden Datenverkehr zu bewältigen
  • SignalR-Hubprotokoll

Die Quelle wird in einem SignalR-Repository auf GitHub gehostet.

Transportprotokolle

SignalR unterstützt die folgenden Techniken für die Verarbeitung von Echtzeitkommunikation (in der Reihenfolge des ordnungsgemäßen Fallbacks):

  • WebSockets
  • Vom Server gesendete Ereignisse
  • Lange Abrufe

SignalR wählt automatisch die beste Transportmethode aus, die für Server und Client jeweils möglich ist.

Hubs

SignalR verwendet Hubs für die Kommunikation zwischen Clients und Servern.

Ein Hub ist eine allgemeine Pipeline, über die ein Client und ein Server untereinander Methoden aufrufen können. Das Senden über Computergrenzen hinweg wird von SignalR automatisch durchgeführt, sodass Clients Methoden auf dem Server (und umgekehrt) aufrufen können. Sie können stark typisierte Parameter an Methoden übergeben, wodurch Modellbindung aktiviert wird. SignalR bietet zwei integrierte Hubprotokolle: ein auf JSON basierendes Textprotokoll und ein auf MessagePack basierendes binäres Protokoll. MessagePack erstellt im Vergleich zu JSON im Allgemeinen kleinere Nachrichten. Ältere Browser müssen die XHR-Ebene 2 unterstützen, um MessagePack-Protokollunterstützung bereitzustellen.

Hubs rufen clientseitigen Code auf, indem Nachrichten gesendet werden, die den Namen und die Parameter der clientseitigen Methode enthalten. Objekte, die als Methodenparameter gesendet werden, werden mithilfe des konfigurierten Protokolls deserialisiert. Der Client versucht, den Namen einer Methode im clientseitigen Code zuzuordnen. Wenn der Client eine Übereinstimmung findet, ruft er die Methode auf und übergibt die deserialisierten Parameterdaten an sie.

Browser, die ECMAScript 6 (ES6) nicht unterstützen

SignalR zielt auf ES6 ab. Für Browser, die ES6 nicht unterstützen, transpilieren Sie die Bibliothek in ES5. Weitere Informationen finden Sie unter Erste Schritte mit ES6 – Transpilieren von ES6 in ES5 mit Traceur und Babel.

Zusätzliche Ressourcen