WebSocket-Bibliothek C# (.NET): SignalR und alternative Werkzeuge für Echtzeitkommunikation
In der modernen Webentwicklung ist der Bedarf an bidirektionaler Echtzeitkommunikation zum Standard geworden. Chat-Anwendungen, Online-Spiele, Handelsplattformen, Serverüberwachung – all dies erfordert eine sofortige Datenübertragung. Für die Sprache C# (.NET) gibt es mehrere leistungsstarke Bibliotheken, die das WebSocket-Protokoll implementieren. In diesem Artikel werden wir uns ausführlich mit SignalR befassen – der Flaggschiff-Bibliothek von Microsoft – und auch Alternativen betrachten: WebSocketSharp und Fleck. Sie erfahren, wie Sie das passende Werkzeug auswählen und schnell loslegen können.
Was ist WebSocket und warum wird es in C# benötigt
WebSocket ist ein Protokoll, das eine Vollduplex-Kommunikation zwischen Client und Server über eine einzige langlebige TCP-Verbindung ermöglicht. Im Gegensatz zu HTTP, bei dem der Client eine Anfrage sendet und auf eine Antwort wartet, erlaubt WebSocket dem Server, jederzeit Daten zu senden. Für die .NET-Plattform ist dies besonders wichtig, da C# traditionell stark in der Serverentwicklung ist und WebSocket seine Möglichkeiten für Echtzeit-Szenarien erweitert.
SignalR – die offizielle Lösung von Microsoft
SignalR ist eine Bibliothek für ASP.NET Core, die die Arbeit mit WebSocket abstrahiert und eine hochwertige API bereitstellt. Sie wählt automatisch den besten Transport aus: WebSocket, Server-Sent Events (SSE) oder Long Polling. SignalR ist ideal für Enterprise-Projekte, bei denen Skalierbarkeit und Integration in das .NET-Ökosystem wichtig sind.
Installation von SignalR
dotnet add package Microsoft.AspNetCore.SignalRBeispiel eines einfachen Chats mit SignalR
Wir erstellen einen Hub – die zentrale Klasse zur Verwaltung von Verbindungen:
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub{ public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); }}Konfiguration in Program.cs:
var builder = WebApplication.CreateBuilder(args);builder.Services.AddSignalR();
var app = builder.Build();app.MapHub<ChatHub>("/chat");
app.Run();Client in JavaScript:
const connection = new signalR.HubConnectionBuilder() .withUrl("/chat") .build();
connection.on("ReceiveMessage", (user, message) => { console.log(`${user}: ${message}`);});
connection.start().catch(err => console.error(err));Vorteile von SignalR:
- Automatische Transportauswahl (WebSocket, SSE, Long Polling)
- Unterstützung für Gruppenbroadcasts und einzelne Benutzer
- Integrierte Wiederherstellung der Verbindung bei Unterbrechungen
- Integration mit ASP.NET Core Identity-Authentifizierung
- Skalierung über Redis Backplane oder Azure SignalR Service
Nachteile:
- Schwergewichtig für einfache Projekte
- Abhängigkeit von ASP.NET Core (funktioniert nicht in Konsolenanwendungen)
- Komplexität bei der Konfiguration in nicht standardmäßigen Szenarien
WebSocketSharp – eine leichte Bibliothek für .NET Framework und .NET Core
WebSocketSharp ist eine minimalistische Bibliothek, die das WebSocket-Protokoll ohne überflüssige Abstraktionen implementiert. Sie eignet sich sowohl für serverseitige als auch für clientseitige WebSocket-Verbindungen. Ideal für die Integration in Konsolenanwendungen oder Unity-Spiele.
Installation über NuGet
dotnet add package WebSocketSharpBeispiel eines WebSocket-Servers
using WebSocketSharp;using WebSocketSharp.Server;
public class Echo : WebSocketBehavior{ protected override void OnMessage(MessageEventArgs e) { Send($"Echo: {e.Data}"); }}
class Program{ static void Main() { va Auch in der Bibliothek
GraphQL auf Node.js: Vollständiger Leitfaden zur Bibliothek graphql-http
TypeScript-Standardbibliothek: Vollständiger Überblick für Entwickler
Datenvalidierung in Swift (iOS/macOS): Bibliotheken und Ansätze
once_cell für Rust: vollständige Anleitung mit Beispielen
WebSocket-Bibliothek Gorilla für Go (Golang) – vollständige Anleitung