De andere al lang bestaande Delphi-netwerkbibliotheek
Voor Delphi-ontwikkelaars die in 2026 een netwerkbibliotheek zoeken, komen er meestal drie namen voorbij: Indy, Overbyte ICS (Internet Component Suite door François Piette), en sgcWebSockets. ICS bestaat bijna net zo lang als Indy en heeft een toegewijde aanhang, vooral onder ontwikkelaars die de non-blocking, message-pump-gebaseerde architectuur waarderen. sgcWebSockets is de nieuwere commerciele bibliotheek gericht op moderne protocollen.
Dit artikel vergelijkt de twee head-to-head: featuredekking, WebSocket-ondersteuning, HTTP/2 en HTTP/3, licentie, developer experience, en commerciele ondersteuning. Waar de vergelijking afhangt van een specifieke ICS-release, zijn de claims gebaseerd op de publiek gedocumenteerde v9-serie op het moment van schrijven — raadpleeg de huidige ICS-changelog als je een exacte feature-bevestiging nodig hebt.
Oorsprong en ontwerpfilosofie
ICS begon in de jaren negentig als een set asynchrone, event-gedreven WinSock-wrappers. De klassieke ICS-componenten (TWSocket, THttpCli, TSslHttpServer) gebruiken een non-blocking message-pump-model: elke socket-operatie post een Windows-bericht en je reageert in een event handler. Dat model past prachtig bij de Delphi VCL — geen threads, geen synchronisatieprimitieven, draait op de main thread. ICS voegde later een thread-pooled HTTP-server toe (TSslHttpAppSrv) voor hogere concurrency.
sgcWebSockets is ontworpen rond een ander probleem: langlevende bidirectionele verbindingen (WebSocket, MQTT, SSE, gRPC-stijl streams) en moderne transportstacks (HTTP/2, HTTP/3 over QUIC). Het gebruikt een IOCP-gebaseerde server op Windows voor schaling en een event-gedreven clientmodel voor messaging met lage latentie. Het wrapt ook Indy en ICS als alternatieve HTTP-backends, zodat je het transport kunt kiezen dat bij je omgeving past.
Feature-vergelijking
| Feature | Overbyte ICS (v9, op moment van schrijven) | sgcWebSockets |
|---|---|---|
| HTTP/1.1-client | Ja (THttpCli, TSslHttpCli) | Ja, meerdere backends |
| HTTP/1.1-server | Ja (TSslHttpAppSrv) | Ja |
| WebSocket-client | Ja (sinds v8) | Ja, volledige RFC 6455 |
| WebSocket-server | Ja (sinds v8) | Ja, subprotocollen, per-message deflate, kanalen |
| HTTP/2 | Beperkt / geen first-class feature | Ja, volledige HPACK + frame-laag |
| HTTP/3 / QUIC | Nee | Ja (msquic-gebaseerd) |
| MQTT 3.1.1 / 5.0 | Geen native broker, alleen basisclient | Volledige client + broker, beide versies |
| AMQP 1.0 / 0.9.1 | Nee | Ja |
| STOMP, SSE, WAMP | SSE basis, andere nee | Alle ondersteund |
| WebRTC / STUN / TURN / DTLS-SRTP | Nee | Ja |
| CoAP, AWS IoT, Azure IoT | Nee | Ja |
| SMTP / POP3 / IMAP / FTP / NNTP | Ja, volwassen implementaties | Nee (gebruik Indy of ICS) |
| OpenSSL-bindingen | Ja, zeer actueel | Ja, plus SChannel en BoringSSL |
| 30+ REST API-wrappers (OpenAI, Anthropic, AWS, Azure, exchanges) | Nee | Ja |
| Licentie | Gratis, Mozilla-stijl | Commercieel, Free Edition beschikbaar |
| Delphi-versies | D7 t/m D13 | D7 t/m D13 |
| Onderhoud | Actief, leverancier-gedreven (Magenta Systems) | Actief, leverancier-gedreven, maandelijkse releases |
| Commerciele ondersteuning | Optionele betaalde supportcontracten | Inbegrepen bij betaalde edities |
WebSocket-ondersteuning
ICS voegde WebSocket-componenten toe in v8 (TIcsWebSocketClient, server-side via TSslHttpAppSrv met WebSocket-handlers). Ze dekken RFC 6455 en TLS, wat voor veel use cases voldoende is. Wat ICS nog niet out-of-the-box biedt is per-message deflate by default, named channels / broadcast groups, een auto-reconnect WatchDog, JavaScript client glue, of ingebouwde protocollen bovenop WebSocket (WebSocket-MQTT, WebSocket-STOMP, WAMP).
sgcWebSockets behandelt WebSocket als het middelpunt van het universum. De server multiplexed HTTP en WebSocket op dezelfde poort, levert kanalen en broadcast-helpers, bevat een JavaScript-client die de Delphi-API weerspiegelt, en voegt WatchDog auto-reconnect, heartbeat ping/pong, berichtwachtrijen en een LB-style load balancer-component toe. Als je leeft en ademt op WebSocket, is de developer experience merkbaar rijker.
HTTP/2 en HTTP/3
Dit is het gebied met de grootste kloof. Op moment van schrijven noemt ICS HTTP/2 niet als first-class feature in de v9-releasenotes — wat experimenteel werk is besproken op de openbare mailing list, maar het aanbevolen pad voor HTTP/2 binnen een ICS-toepassing is een aparte bibliotheek gebruiken.
sgcWebSockets levert sinds 2018 een volledige HTTP/2-implementatie, inclusief het HPACK header compression-algoritme, frame-multiplexing, server push en ALPN-onderhandeling. Datzelfde code-pad wordt gebruikt door de Apple Push Notification-client, de Google FCM-client en elk HTTP/2-server-endpoint dat je bouwt. HTTP/3 over QUIC werd toegevoegd in 2023 met Microsoft’s msquic-bibliotheek op Windows en ngtcp2 op Linux. Voor toepassingen die bleeding-edge transportondersteuning nodig hebben, is dit een betekenisvolle differentiator.
Klassieke internetprotocollen
ICS wint hier duidelijk. SMTP, POP3, IMAP, FTP, NNTP, DNS en zelfs een HTTP-proxyserver zijn allemaal inbegrepen en goed onderhouden. Als je een e-mailclient, een FTP-front-end of een SMTP-relay bouwt, is ICS een sterker startpunt dan sgcWebSockets (dat die protocollen helemaal niet meelevert).
Een veelvoorkomende combinatie is ICS gebruiken voor de mail/FTP-laag en sgcWebSockets voor de WebSocket / HTTP/2 / MQTT-laag in hetzelfde product. Beide bibliotheken coexisteren prima omdat ze gescheiden unit-namespaces hebben.
SSL / TLS
Beide bibliotheken nemen TLS serieus. ICS staat erom bekend zeer snel nieuwe OpenSSL-releases bij te houden — nieuwe OpenSSL 3.x minor versies worden meestal binnen dagen ondersteund. sgcWebSockets volgt ook OpenSSL en ondersteunt daarnaast Windows SChannel en BoringSSL, plus een eigen end-to-end encryption-laag voor vertrouwelijkheid op applicatieniveau bovenop TLS.
Developer experience
ICS gebruikt een event-gedreven, message-pump-stijl API die zeer natuurlijk is binnen een VCL-formulier — je dropt een component, hangt OnDataAvailable of OnRequestDone aan, en Windows-berichten sturen de flow. Het is licht op threads, makkelijk te debuggen, en idiomatisch voor klassieke VCL-ontwikkeling. Het nadeel is dat opschalen voorbij een enkele message pump ofwel de thread-pooled servervarianten of expliciete multi-instance-ontwerpen vereist.
sgcWebSockets volgt de recentere componentconventie zoals gebruikt door Indy en moderne REST-bibliotheken: een component met sterk getypeerde options-subobjecten (HeartBeat, WatchDog, TLSOptions, etc.), event-gedreven callbacks en worker threads onder de motorkap. Het IOCP-server-transport schaalt naar tientallen duizenden gelijktijdige verbindingen zonder wijzigingen in user code.
Licentie en prijzen
ICS is gratis voor zowel commercieel als niet-commercieel gebruik onder een Mozilla-stijl licentie. Optionele commerciele supportcontracten zijn beschikbaar bij Magenta Systems. sgcWebSockets is commercieel, met een Free Edition voor niet-commercieel gebruik en vier betaalde edities (Standard, Professional, Enterprise, All-Access). Betaalde edities omvatten broncode, maandelijkse updates en directe leveranciersondersteuning.
Beslissingsmatrix
| Als je nodig hebt… | Beste keuze |
|---|---|
| SMTP-, POP3-, IMAP-, FTP-, NNTP-clients | ICS |
| Kleine single-form HTTP-fetcher zonder threading | ICS |
| Bleeding-edge OpenSSL-tracking | ICS (sgc zit er dicht bij) |
| WebSocket-client/server met kanalen, WatchDog, JS-client | sgcWebSockets |
| HTTP/2-client of server, Apple Push, FCM | sgcWebSockets |
| HTTP/3 / QUIC | sgcWebSockets |
| MQTT 5-broker, AMQP 1.0, WAMP, STOMP | sgcWebSockets |
| WebRTC, STUN, TURN, IoT, CoAP | sgcWebSockets |
| Kant-en-klare OpenAI- / Anthropic- / cloud-API-componenten | sgcWebSockets |
| Commercieel leveranciers-supportcontract | Beide — sgcWebSockets gebundeld, ICS optioneel |
Afsluitende gedachten
ICS en sgcWebSockets zijn niet echt concurrenten maar eerder complementaire tools. ICS is een prachtig ontworpen, gratis, message-pump-vriendelijke bibliotheek die uitblinkt in klassieke internetprotocollen en lichtgewicht HTTP. sgcWebSockets is een gerichte commerciele bibliotheek die de moderne webstack — WebSocket, HTTP/2/3, MQTT, AMQP, WebRTC, IoT, AI-API’s — bezit en schaalt naar grote aantallen gelijktijdige verbindingen. Het juiste antwoord voor veel echte projecten is beide te gebruiken, waarbij je elke bibliotheek kiest voor de protocollen die zij het beste doet.