sgcWebSockets vs ICS — Bibliothèques réseau Delphi comparées

· Critiques

L'autre bibliothèque réseau Delphi de longue date

Pour les développeurs Delphi qui cherchent une bibliothèque réseau en 2026, trois noms reviennent : Indy, Overbyte ICS (Internet Component Suite de François Piette) et sgcWebSockets. ICS existe depuis presque aussi longtemps qu'Indy et possède une base d'utilisateurs dévouée, en particulier parmi les développeurs qui apprécient son architecture non-bloquante basée sur la pompe de messages. sgcWebSockets est la bibliothèque commerciale plus récente, axée sur les protocoles modernes.

Cet article les compare en face à face : couverture fonctionnelle, support WebSocket, HTTP/2 et HTTP/3, licence, expérience développeur et support commercial. Lorsque la comparaison dépend d'une release ICS particulière, les affirmations se basent sur la série v9 publiquement documentée au moment de la rédaction — consultez le changelog ICS actuel si vous avez besoin d'une confirmation exacte d'une fonctionnalité.

Origines et philosophie de conception

ICS a vu le jour dans les années 1990 comme un ensemble de wrappers WinSock asynchrones et événementiels. Les composants ICS classiques (TWSocket, THttpCli, TSslHttpServer) utilisent un modèle non-bloquant basé sur la pompe de messages : chaque opération socket poste un message Windows et vous répondez dans un gestionnaire d'événements. Ce modèle s'intègre magnifiquement à la VCL Delphi — pas de threads, pas de primitives de synchronisation, tourne sur le thread principal. ICS a plus tard ajouté un serveur HTTP avec pool de threads (TSslHttpAppSrv) pour une concurrence plus élevée.

sgcWebSockets a été conçu autour d'un problème différent : les connexions bidirectionnelles longue durée (WebSocket, MQTT, SSE, flux de type gRPC) et les piles de transport modernes (HTTP/2, HTTP/3 sur QUIC). Il utilise un serveur basé sur IOCP sous Windows pour le passage à l'échelle et un modèle client événementiel pour la messagerie à faible latence. Il encapsule également Indy et ICS comme backends HTTP alternatifs, vous pouvez donc choisir le transport adapté à votre environnement.

Comparaison fonctionnalité par fonctionnalité

FonctionnalitéOverbyte ICS (v9, à la date d'écriture)sgcWebSockets
Client HTTP/1.1Oui (THttpCli, TSslHttpCli)Oui, plusieurs backends
Serveur HTTP/1.1Oui (TSslHttpAppSrv)Oui
Client WebSocketOui (depuis v8)Oui, RFC 6455 complet
Serveur WebSocketOui (depuis v8)Oui, sous-protocoles, per-message deflate, canaux
HTTP/2Limité / pas une fonctionnalité de premier ordreOui, HPACK + couche de frames complète
HTTP/3 / QUICNonOui (basé sur msquic)
MQTT 3.1.1 / 5.0Pas de broker natif, client basique uniquementClient + broker complets, les deux versions
AMQP 1.0 / 0.9.1NonOui
STOMP, SSE, WAMPSSE basique, autres nonTous supportés
WebRTC / STUN / TURN / DTLS-SRTPNonOui
CoAP, AWS IoT, Azure IoTNonOui
SMTP / POP3 / IMAP / FTP / NNTPOui, implémentations maturesNon (utilisez Indy ou ICS)
Bindings OpenSSLOui, très à jourOui, plus SChannel et BoringSSL
30+ wrappers d'API REST (OpenAI, Anthropic, AWS, Azure, exchanges)NonOui
LicenceGratuit, style MozillaCommercial, Édition Free disponible
Versions DelphiD7 à D13D7 à D13
MaintenanceActive, pilotée par l'éditeur (Magenta Systems)Active, pilotée par l'éditeur, releases mensuelles
Support commercialContrats de support payants optionnelsInclus avec les éditions payantes

Support WebSocket

ICS a ajouté des composants WebSocket en v8 (TIcsWebSocketClient, côté serveur via TSslHttpAppSrv avec des gestionnaires WebSocket). Ils couvrent RFC 6455 et TLS, ce qui suffit pour de nombreux cas d'usage. Ce qu'ICS ne fournit pas encore d'office : per-message deflate par défaut, canaux nommés / groupes de diffusion, WatchDog de reconnexion automatique, glue client JavaScript, ou protocoles natifs au-dessus de WebSocket (WebSocket-MQTT, WebSocket-STOMP, WAMP).

sgcWebSockets traite WebSocket comme le centre de l'univers. Le serveur multiplexe HTTP et WebSocket sur le même port, est livré avec des canaux et des helpers de diffusion, inclut un client JavaScript qui reflète l'API Delphi, et ajoute la reconnexion automatique WatchDog, le ping/pong heartbeat, les files de messages et un composant load balancer style LB. Si vous vivez et respirez WebSocket, l'expérience développeur est nettement plus riche.

HTTP/2 et HTTP/3

C'est le domaine où l'écart est le plus grand. À la date de rédaction, ICS ne liste pas HTTP/2 comme fonctionnalité de premier ordre dans les notes de release v9 — quelques travaux expérimentaux ont été évoqués sur la liste de diffusion publique mais le chemin recommandé pour HTTP/2 dans une application ICS est d'utiliser une bibliothèque séparée.

sgcWebSockets propose une implémentation HTTP/2 complète depuis 2018, incluant l'algorithme de compression d'en-têtes HPACK, le multiplexage de frames, le server push et la négociation ALPN. Le même chemin de code est utilisé par le client Apple Push Notification, le client Google FCM, et tout endpoint serveur HTTP/2 que vous construisez. HTTP/3 sur QUIC a été ajouté en 2023 en utilisant la bibliothèque msquic de Microsoft sous Windows et ngtcp2 sous Linux. Pour les applications nécessitant un support de transport de pointe, c'est un différenciateur significatif.

Protocoles Internet classiques

ICS gagne clairement ici. SMTP, POP3, IMAP, FTP, NNTP, DNS et même un serveur proxy HTTP sont tous inclus et bien maintenus. Si vous construisez un client e-mail, un front-end FTP ou un relais SMTP, ICS est un meilleur point de départ que sgcWebSockets (qui ne propose pas ces protocoles du tout).

Une combinaison courante est d'utiliser ICS pour la couche mail/FTP et sgcWebSockets pour la couche WebSocket / HTTP/2 / MQTT dans le même produit. Les deux bibliothèques cohabitent heureusement car elles ont des espaces de noms d'unités séparés.

SSL / TLS

Les deux bibliothèques prennent TLS au sérieux. ICS est bien connu pour suivre extrêmement rapidement les nouvelles releases OpenSSL — les nouvelles versions mineures OpenSSL 3.x sont habituellement supportées en quelques jours. sgcWebSockets suit également OpenSSL et supporte en plus Windows SChannel et BoringSSL, plus sa propre couche de chiffrement de bout en bout pour la confidentialité au niveau applicatif au-dessus de TLS.

Expérience développeur

ICS utilise une API événementielle de style pompe de messages très naturelle dans une fiche VCL — vous déposez un composant, branchez OnDataAvailable ou OnRequestDone, et les messages Windows pilotent le flux. C'est léger en threads, facile à déboguer et idiomatique pour le développement VCL classique. L'inconvénient est que passer à l'échelle au-delà d'une seule pompe de messages nécessite soit les variantes serveur à pool de threads, soit des conceptions multi-instances explicites.

sgcWebSockets suit la convention de composants plus récente utilisée par Indy et les bibliothèques REST modernes : un composant avec des sous-objets d'options fortement typés (HeartBeat, WatchDog, TLSOptions, etc.), callbacks événementiels et threads de travail sous le capot. Le transport serveur IOCP passe à l'échelle à des dizaines de milliers de connexions concurrentes sans changement de code utilisateur.

Licence et tarification

ICS est gratuit pour usage commercial et non commercial sous une licence de style Mozilla. Des contrats de support commercial optionnels sont disponibles auprès de Magenta Systems. sgcWebSockets est commercial, avec une Édition Free pour usage non commercial et quatre éditions payantes (Standard, Professional, Enterprise, All-Access). Les éditions payantes incluent le code source, les mises à jour mensuelles et le support éditeur direct.

Matrice de décision

Si vous avez besoin de…Meilleur choix
Clients SMTP, POP3, IMAP, FTP, NNTPICS
Petit fetcher HTTP mono-fiche sans threadingICS
Suivi OpenSSL de pointeICS (sgc est très proche)
Client/serveur WebSocket avec canaux, WatchDog, client JSsgcWebSockets
Client ou serveur HTTP/2, Apple Push, FCMsgcWebSockets
HTTP/3 / QUICsgcWebSockets
Broker MQTT 5, AMQP 1.0, WAMP, STOMPsgcWebSockets
WebRTC, STUN, TURN, IoT, CoAPsgcWebSockets
Composants prêts pour les API OpenAI / Anthropic / cloudsgcWebSockets
Contrat de support éditeur commercialL'un ou l'autre — sgcWebSockets inclus, ICS optionnel

Pour conclure

ICS et sgcWebSockets ne sont pas vraiment concurrents, mais plutôt complémentaires. ICS est une bibliothèque magnifiquement conçue, gratuite, adaptée à la pompe de messages, qui excelle dans les protocoles Internet classiques et le HTTP léger. sgcWebSockets est une bibliothèque commerciale ciblée qui possède la pile web moderne — WebSocket, HTTP/2/3, MQTT, AMQP, WebRTC, IoT, API IA — et passe à l'échelle pour de grands nombres de connexions concurrentes. La bonne réponse pour beaucoup de projets réels est d'utiliser les deux, en choisissant chaque bibliothèque pour les protocoles qu'elle gère le mieux.