Wann sollte ASP.NET Core SignalR verwendet werden?

Abgeschlossen

SignalR verfügt über Echtzeit-Webfunktionen. Sie erinnern sich sicherlich, dass Contoso Pizza eine Livekarte zum Nachverfolgen des Status und der Lieferung von Bestellungen benötigt. Die Umsatzeinbußen während der Stoßzeiten veranlassen das Team, nach einer besseren Lösung als der clientseitigen Abfrage zu suchen.

Entscheidungskriterien

Es ist nicht nur wichtig zu wissen, wann SignalR genutzt werden sollte, sondern auch, wann der Dienst nicht geeignet ist. Bei der Nutzung von Echtzeitwebfunktionen hängt die Benutzerfreundlichkeit davon ab, wie reaktionsfähig die App ist. Es ist hilfreich, wenn Sie damit vertraut sind, für welche Teile einer Anwendung Echtzeitupdates erforderlich sind.

Wann sollte SignalR nicht verwendet werden?

SignalR ist nur so stabil wie die zugrunde liegende Verbindung. Anders ausgedrückt: Wenn die Konnektivität einer Clientanwendung problematisch ist, stellt SignalR nicht die beste Wahl dar.

Ein weiterer Aspekt ist die Skalierbarkeit von SignalR. Abhängig von der Anzahl der gleichzeitig verbundenen Clients kann es zu Ressourcenkonflikten auf Ihrem Webserver kommen, wenn dieser an seine Grenzen stößt. In solchen Situationen ist es wahrscheinlich erforderlich, die Anwendung in einer Serverfarm bereitzustellen und eine Backplane zu verwenden. Es kann aufwändig sein, dies selbst zu implementieren.

Alternativ können Sie dieses Problem mithilfe von Azure SignalR Service lösen. Oder Sie können das Problem entschärfen, indem Sie die Vorteile verschiedener Resilienz- und Notfallwiederherstellungsmechanismen nutzen.

Beispiele für den Einsatz von SignalR

SignalR kann lokal, in der Cloud oder mit Azure SignalR Service genutzt werden.

  • Lokal:

    Diagram of ASP.NET Core SignalR being used on-premises.

  • In der Cloud:

    Diagram of ASP.NET Core SignalR being used in the cloud.

  • Mit Azure SignalR Service:

    Diagram of using Azure SignalR Service.

Zulässige Anwendungsfälle

SignalR ist kein Ersatz für herkömmliche HTTP-Anforderungen. Anwendungen können mithilfe von SignalR ermitteln, wann sie bestimmte HTTP-Anforderungen senden müssen. Auf diese Weise ergänzen sich die Komponenten gegenseitig.

Es gibt viele zulässige Anwendungsfälle für SignalR. Die folgende Liste enthält gut geeignete Kandidaten für SignalR:

  • Apps, für die sehr häufige Updates vom Server benötigt werden:
    • Spiele
    • Soziale Netzwerke
    • Voting
    • Auktionen
    • GPS-Apps
  • Dashboards und Überwachungs-Apps:
    • Unternehmensdashboards
    • Livekarten
    • Unmittelbare Updates zu Verkaufszahlen
    • Reisewarnungen
    • Pipelineseiten für Continuous Integration/Continuous Delivery (CI/CD)
  • Interaktive Apps für Zusammenarbeit und mehrere Benutzer*innen:
    • Whiteboard-Apps
    • Apps für Teambesprechungen
    • Apps für die Dokumentfreigabe
    • Visual Studio Live Share
  • Apps, die Sofortbenachrichtigungen erfordern:
    • E-Mail-Apps
    • Chat-Apps
    • Rundenbasierte Spiele
    • Zeitreihen-Berichterstellung
    • GitHub Actions, Problem- und Pull Request-Systeme

Contoso Pizza-Szenario

Bei Betrachtung der clientseitigen Abfragen in der Livekarte für die Contoso Pizza-Bestellungen wird deutlich, dass SignalR eine sinnvolle Alternative sein könnte. Wie bei allen Programmier- und Architekturentscheidungen ist es von entscheidender Bedeutung, die Vor- und Nachteile von SignalR abzuwägen.