sgcWebSockets vs. ICS — Delphi-Networking im Vergleich

· Reviews

Die andere etablierte Delphi-Netzwerkbibliothek

Für Delphi-Entwickler, die sich 2026 nach einer Netzwerkbibliothek umsehen, fallen meist drei Namen: Indy, Overbyte ICS (Internet Component Suite von François Piette) und sgcWebSockets. ICS gibt es fast so lange wie Indy und hat eine treue Anhängerschaft — vor allem unter Entwicklern, die seine nichtblockierende, Message-Pump-basierte Architektur schätzen. sgcWebSockets ist die jüngere kommerzielle Bibliothek mit Fokus auf moderne Protokolle.

Dieser Artikel vergleicht beide direkt: Funktionsumfang, WebSocket-Unterstützung, HTTP/2 und HTTP/3, Lizenz, Entwicklererlebnis und kommerzieller Support. Wo der Vergleich von einem konkreten ICS-Release abhängt, beziehen sich die Aussagen auf die zum Schreibzeitpunkt öffentlich dokumentierte v9-Reihe — prüfe das aktuelle ICS-Changelog, falls du eine exakte Feature-Bestätigung brauchst.

Ursprünge und Designphilosophie

ICS startete in den 1990ern als asynchrone, eventgesteuerte WinSock-Wrapper. Die klassischen ICS-Komponenten (TWSocket, THttpCli, TSslHttpServer) nutzen ein nichtblockierendes Message-Pump-Modell: Jede Socket-Operation postet eine Windows-Message, und du antwortest in einem Event-Handler. Dieses Modell passt wunderbar zur Delphi-VCL — keine Threads, keine Synchronisationsprimitive, läuft auf dem Main-Thread. Für höhere Parallelität hat ICS später einen Thread-pool-basierten HTTP-Server (TSslHttpAppSrv) hinzugefügt.

sgcWebSockets wurde um ein anderes Problem herum entworfen: langlebige bidirektionale Verbindungen (WebSocket, MQTT, SSE, gRPC-artige Streams) und moderne Transport-Stacks (HTTP/2, HTTP/3 über QUIC). Unter Windows nutzt es einen IOCP-basierten Server für Skalierung und ein eventgetriebenes Client-Modell für niedrige Latenz. Außerdem wrappt es Indy und ICS als alternative HTTP-Backends, sodass du den Transport wählen kannst, der zu deiner Umgebung passt.

Feature-für-Feature-Vergleich

FeatureOverbyte ICS (v9, Stand jetzt)sgcWebSockets
HTTP/1.1-ClientJa (THttpCli, TSslHttpCli)Ja, mehrere Backends
HTTP/1.1-ServerJa (TSslHttpAppSrv)Ja
WebSocket-ClientJa (seit v8)Ja, vollständiges RFC 6455
WebSocket-ServerJa (seit v8)Ja, Subprotokolle, Per-Message-Deflate, Channels
HTTP/2Eingeschränkt / keine erstklassige FunktionJa, vollständige HPACK- + Frame-Schicht
HTTP/3 / QUICNeinJa (msquic-basiert)
MQTT 3.1.1 / 5.0Kein nativer Broker, nur einfacher ClientVollständiger Client + Broker, beide Versionen
AMQP 1.0 / 0.9.1NeinJa
STOMP, SSE, WAMPSSE einfach, andere neinAlle unterstützt
WebRTC / STUN / TURN / DTLS-SRTPNeinJa
CoAP, AWS IoT, Azure IoTNeinJa
SMTP / POP3 / IMAP / FTP / NNTPJa, ausgereifte ImplementierungenNein (Indy oder ICS nutzen)
OpenSSL-BindingsJa, sehr aktuellJa, plus SChannel und BoringSSL
30+ REST-API-Wrapper (OpenAI, Anthropic, AWS, Azure, Börsen)NeinJa
LizenzKostenlos, Mozilla-artigKommerziell, Free Edition verfügbar
Delphi-VersionenD7 bis D13D7 bis D13
PflegeAktiv, herstellergeführt (Magenta Systems)Aktiv, herstellergeführt, monatliche Releases
Kommerzieller SupportOptionale kostenpflichtige SupportverträgeIn bezahlten Editionen enthalten

WebSocket-Unterstützung

ICS hat in v8 WebSocket-Komponenten eingeführt (TIcsWebSocketClient, serverseitig über TSslHttpAppSrv mit WebSocket-Handlern). Sie decken RFC 6455 und TLS ab, was für viele Anwendungsfälle reicht. Was ICS standardmäßig noch nicht bietet: Per-Message-Deflate ab Werk, benannte Channels / Broadcast-Gruppen, einen Auto-Reconnect-WatchDog, JavaScript-Client-Glue oder eingebaute Protokolle auf WebSocket (WebSocket-MQTT, WebSocket-STOMP, WAMP).

sgcWebSockets behandelt WebSocket als Mittelpunkt des Universums. Der Server multiplext HTTP und WebSocket auf demselben Port, liefert Channels und Broadcast-Helfer, enthält einen JavaScript-Client, der die Delphi-API spiegelt, und ergänzt WatchDog-Auto-Reconnect, Heartbeat-Ping/Pong, Nachrichten-Queues sowie eine LB-artige Load-Balancer-Komponente. Wenn du WebSocket lebst und atmest, ist das Entwicklererlebnis spürbar reicher.

HTTP/2 und HTTP/3

Hier ist die größte Lücke. Zum Schreibzeitpunkt führt ICS HTTP/2 in den v9-Release-Notes nicht als erstklassige Funktion — auf der öffentlichen Mailing-Liste gab es experimentelle Arbeiten, der empfohlene Weg für HTTP/2 in einer ICS-Anwendung ist aber eine separate Bibliothek.

sgcWebSockets liefert seit 2018 eine vollständige HTTP/2-Implementierung mit dem HPACK-Header-Kompressionsalgorithmus, Frame-Multiplexing, Server Push und ALPN-Aushandlung. Derselbe Codepfad wird vom Apple-Push-Notification-Client, vom Google-FCM-Client und von jedem HTTP/2-Server-Endpunkt verwendet, den du baust. HTTP/3 über QUIC kam 2023 hinzu — unter Windows über Microsofts msquic-Bibliothek, unter Linux über ngtcp2. Für Anwendungen, die topaktuellen Transport-Support brauchen, ist das ein echter Unterschied.

Klassische Internet-Protokolle

Hier gewinnt ICS klar. SMTP, POP3, IMAP, FTP, NNTP, DNS und sogar ein HTTP-Proxy-Server sind alle enthalten und gut gepflegt. Wenn du einen E-Mail-Client, ein FTP-Front-End oder ein SMTP-Relay baust, ist ICS ein stärkerer Startpunkt als sgcWebSockets (das diese Protokolle gar nicht mitliefert).

Eine häufige Kombination ist, ICS für die Mail-/FTP-Schicht und sgcWebSockets für die WebSocket-/HTTP/2-/MQTT-Schicht im selben Produkt zu nutzen. Beide Bibliotheken koexistieren problemlos, weil sie getrennte Unit-Namespaces haben.

SSL / TLS

Beide Bibliotheken nehmen TLS ernst. ICS ist dafür bekannt, neue OpenSSL-Releases extrem schnell nachzuziehen — neue OpenSSL-3.x-Minor-Versionen werden meist innerhalb von Tagen unterstützt. sgcWebSockets zieht OpenSSL ebenfalls nach und unterstützt zusätzlich Windows SChannel und BoringSSL plus eine eigene Ende-zu-Ende-Verschlüsselungsschicht für Vertraulichkeit auf Anwendungsebene oberhalb von TLS.

Entwicklererlebnis

ICS nutzt eine eventgetriebene, Message-Pump-artige API, die sich sehr natürlich in einem VCL-Formular anfühlt — eine Komponente ablegen, OnDataAvailable oder OnRequestDone verdrahten, und Windows-Messages treiben den Ablauf. Es ist threadarm, gut zu debuggen und idiomatisch für klassische VCL-Entwicklung. Der Haken: Skalierung über eine einzelne Message-Pump hinaus erfordert entweder die Thread-Pool-Server-Varianten oder explizite Multi-Instance-Designs.

sgcWebSockets folgt der jüngeren Komponentenkonvention von Indy und modernen REST-Bibliotheken: eine Komponente mit streng typisierten Options-Unter-Objekten (HeartBeat, WatchDog, TLSOptions usw.), eventgetriebene Callbacks und Worker-Threads unter der Haube. Der IOCP-Server-Transport skaliert auf Zehntausende gleichzeitige Verbindungen, ohne dass du Code anpassen musst.

Lizenz und Preise

ICS ist sowohl für kommerzielle als auch für nicht-kommerzielle Nutzung unter einer Mozilla-artigen Lizenz kostenlos. Optionale kommerzielle Supportverträge gibt es von Magenta Systems. sgcWebSockets ist kommerziell, mit einer Free Edition für nicht-kommerzielle Nutzung und vier bezahlten Editionen (Standard, Professional, Enterprise, All-Access). Bezahlte Editionen enthalten Quellcode, monatliche Updates und direkten Hersteller-Support.

Entscheidungs-Matrix

Wenn du brauchst…Beste Wahl
SMTP-, POP3-, IMAP-, FTP-, NNTP-ClientsICS
Winzigen Single-Form-HTTP-Fetcher ohne ThreadsICS
Topaktuelles OpenSSL-TrackingICS (sgc ist sehr dicht dran)
WebSocket-Client/-Server mit Channels, WatchDog, JS-ClientsgcWebSockets
HTTP/2-Client oder -Server, Apple Push, FCMsgcWebSockets
HTTP/3 / QUICsgcWebSockets
MQTT-5-Broker, AMQP 1.0, WAMP, STOMPsgcWebSockets
WebRTC, STUN, TURN, IoT, CoAPsgcWebSockets
Fertige OpenAI-/Anthropic-/Cloud-API-KomponentensgcWebSockets
Kommerziellen Hersteller-SupportvertragBeide — sgcWebSockets dabei, ICS optional

Abschluss

ICS und sgcWebSockets sind weniger Konkurrenten als ergänzende Werkzeuge. ICS ist eine wunderschön konstruierte, kostenlose, message-pump-freundliche Bibliothek, die bei klassischen Internet-Protokollen und schlankem HTTP brilliert. sgcWebSockets ist eine fokussierte kommerzielle Bibliothek, die den modernen Web-Stack besitzt — WebSocket, HTTP/2/3, MQTT, AMQP, WebRTC, IoT, KI-APIs — und auf große Mengen gleichzeitiger Verbindungen skaliert. Für viele reale Projekte ist die richtige Antwort, beide einzusetzen und jede Bibliothek dort zu wählen, wo sie am besten ist.