A outra biblioteca de rede Delphi de longa data
Para desenvolvedores Delphi à procura de uma biblioteca de rede em 2026, três nomes costumam aparecer: Indy, Overbyte ICS (Internet Component Suite, de François Piette) e sgcWebSockets. O ICS está por aí há quase tanto tempo quanto o Indy e tem uma base de fãs dedicada, especialmente entre desenvolvedores que apreciam sua arquitetura não bloqueante, baseada em fila de mensagens. O sgcWebSockets é a biblioteca comercial mais recente, focada em protocolos modernos.
Este artigo compara os dois frente a frente: cobertura de recursos, suporte a WebSocket, HTTP/2 e HTTP/3, licença, experiência do desenvolvedor e suporte comercial. Onde a comparação depende de uma versão específica do ICS, as afirmações se baseiam na série v9 publicamente documentada na data de publicação — consulte o changelog atual do ICS se precisar confirmar um recurso exato.
Origens e filosofia de design
O ICS nasceu nos anos 1990 como um conjunto de wrappers WinSock assíncronos e orientados a eventos. Os componentes clássicos do ICS (TWSocket, THttpCli, TSslHttpServer) usam um modelo não bloqueante baseado em fila de mensagens: cada operação de socket posta uma mensagem do Windows e você responde em um manipulador de evento. Esse modelo se encaixa lindamente na VCL do Delphi — sem threads, sem primitivas de sincronização, rodando na thread principal. O ICS depois adicionou um servidor HTTP com pool de threads (TSslHttpAppSrv) para maior concorrência.
O sgcWebSockets foi projetado em torno de um problema diferente: conexões bidirecionais de longa duração (WebSocket, MQTT, SSE, streams no estilo gRPC) e pilhas de transporte modernas (HTTP/2, HTTP/3 sobre QUIC). Ele usa um servidor baseado em IOCP no Windows para escalabilidade e um modelo de cliente orientado a eventos para mensageria de baixa latência. Também encapsula o Indy e o ICS como backends HTTP alternativos, para que você possa escolher o transporte que melhor se adapta ao seu ambiente.
Comparação recurso a recurso
| Recurso | Overbyte ICS (v9, na data de publicação) | sgcWebSockets |
|---|---|---|
| Cliente HTTP/1.1 | Sim (THttpCli, TSslHttpCli) | Sim, múltiplos backends |
| Servidor HTTP/1.1 | Sim (TSslHttpAppSrv) | Sim |
| Cliente WebSocket | Sim (desde a v8) | Sim, RFC 6455 completo |
| Servidor WebSocket | Sim (desde a v8) | Sim, subprotocolos, per-message deflate, canais |
| HTTP/2 | Limitado / não é recurso de primeira classe | Sim, HPACK e camada de frames completos |
| HTTP/3 / QUIC | Não | Sim (baseado em msquic) |
| MQTT 3.1.1 / 5.0 | Sem broker nativo, apenas cliente básico | Cliente + broker completos, ambas as versões |
| AMQP 1.0 / 0.9.1 | Não | Sim |
| STOMP, SSE, WAMP | SSE básico, demais não | Todos suportados |
| WebRTC / STUN / TURN / DTLS-SRTP | Não | Sim |
| CoAP, AWS IoT, Azure IoT | Não | Sim |
| SMTP / POP3 / IMAP / FTP / NNTP | Sim, implementações maduras | Não (use Indy ou ICS) |
| Bindings OpenSSL | Sim, muito atualizados | Sim, além de SChannel e BoringSSL |
| Mais de 30 wrappers de API REST (OpenAI, Anthropic, AWS, Azure, exchanges) | Não | Sim |
| Licença | Gratuita, estilo Mozilla | Comercial, com Edição Free disponível |
| Versões do Delphi | D7 até D13 | D7 até D13 |
| Manutenção | Ativa, conduzida pelo fornecedor (Magenta Systems) | Ativa, conduzida pelo fornecedor, releases mensais |
| Suporte comercial | Contratos de suporte pagos opcionais | Incluído nas edições pagas |
Suporte a WebSocket
O ICS adicionou componentes WebSocket na v8 (TIcsWebSocketClient, lado servidor via TSslHttpAppSrv com handlers WebSocket). Eles cobrem a RFC 6455 e TLS, o que é suficiente para muitos casos de uso. O que o ICS ainda não fornece de fábrica é per-message deflate por padrão, canais nomeados / grupos de broadcast, um WatchDog de reconexão automática, glue de cliente JavaScript ou protocolos embutidos sobre WebSocket (WebSocket-MQTT, WebSocket-STOMP, WAMP).
O sgcWebSockets trata o WebSocket como o centro do universo. O servidor multiplexa HTTP e WebSocket na mesma porta, vem com canais e helpers de broadcast, inclui um cliente JavaScript que espelha a API Delphi e adiciona WatchDog de reconexão automática, ping/pong de heartbeat, filas de mensagens e um componente de load balancer no estilo LB. Se você vive e respira WebSocket, a experiência do desenvolvedor é notavelmente mais rica.
HTTP/2 e HTTP/3
Esta é a área com a maior lacuna. Na data de publicação, o ICS não lista o HTTP/2 como recurso de primeira classe nas notas de release da v9 — algum trabalho experimental foi discutido na lista de discussão pública, mas o caminho recomendado para HTTP/2 dentro de uma aplicação ICS é usar uma biblioteca separada.
O sgcWebSockets entrega uma implementação completa de HTTP/2 desde 2018, incluindo o algoritmo de compressão de cabeçalhos HPACK, multiplexação de frames, server push e negociação ALPN. O mesmo caminho de código é usado pelo cliente Apple Push Notification, pelo cliente Google FCM e por qualquer endpoint de servidor HTTP/2 que você construa. O HTTP/3 sobre QUIC foi adicionado em 2023, usando a biblioteca msquic da Microsoft no Windows e o ngtcp2 no Linux. Para aplicações que precisam do suporte de transporte mais recente, este é um diferencial significativo.
Protocolos clássicos da Internet
O ICS vence claramente aqui. SMTP, POP3, IMAP, FTP, NNTP, DNS e até um servidor proxy HTTP estão todos incluídos e bem mantidos. Se você está construindo um cliente de e-mail, um front-end FTP ou um relay SMTP, o ICS é um ponto de partida mais forte do que o sgcWebSockets (que simplesmente não traz esses protocolos).
Uma combinação comum é usar o ICS para a camada de e-mail/FTP e o sgcWebSockets para a camada WebSocket / HTTP/2 / MQTT no mesmo produto. As duas bibliotecas convivem em harmonia porque têm namespaces de units separados.
SSL / TLS
As duas bibliotecas levam TLS a sério. O ICS é bem conhecido por acompanhar novos lançamentos do OpenSSL extremamente rápido — novas versões menores do OpenSSL 3.x costumam ser suportadas em poucos dias. O sgcWebSockets também acompanha o OpenSSL e, adicionalmente, suporta o SChannel do Windows e o BoringSSL, além de sua própria camada de criptografia ponta a ponta para confidencialidade em nível de aplicação sobre o TLS.
Experiência do desenvolvedor
O ICS usa uma API orientada a eventos, no estilo de fila de mensagens, muito natural dentro de um formulário VCL — você arrasta um componente, conecta OnDataAvailable ou OnRequestDone e as mensagens do Windows conduzem o fluxo. É leve em threads, fácil de depurar e idiomática para o desenvolvimento VCL clássico. A desvantagem é que escalar além de uma única fila de mensagens exige ou as variantes de servidor com pool de threads ou designs explícitos de múltiplas instâncias.
O sgcWebSockets segue a convenção de componentes mais recente, usada pelo Indy e por bibliotecas REST modernas: um componente com sub-objetos de opções fortemente tipados (HeartBeat, WatchDog, TLSOptions etc.), callbacks orientados a eventos e worker threads por baixo. O transporte de servidor IOCP escala para dezenas de milhares de conexões concorrentes sem alterações no código do usuário.
Licença e preço
O ICS é gratuito para uso comercial e não comercial sob uma licença estilo Mozilla. Contratos de suporte comercial opcionais estão disponíveis na Magenta Systems. O sgcWebSockets é comercial, com uma Edição Free para uso não comercial e quatro edições pagas (Standard, Professional, Enterprise, All-Access). As edições pagas incluem código-fonte, atualizações mensais e suporte direto do fornecedor.
Matriz de decisão
| Se você precisa de… | Melhor escolha |
|---|---|
| Clientes SMTP, POP3, IMAP, FTP, NNTP | ICS |
| Pequeno fetcher HTTP de um único formulário, sem threading | ICS |
| Acompanhamento do OpenSSL mais recente | ICS (o sgc fica muito perto) |
| Cliente/servidor WebSocket com canais, WatchDog, cliente JS | sgcWebSockets |
| Cliente ou servidor HTTP/2, Apple Push, FCM | sgcWebSockets |
| HTTP/3 / QUIC | sgcWebSockets |
| Broker MQTT 5, AMQP 1.0, WAMP, STOMP | sgcWebSockets |
| WebRTC, STUN, TURN, IoT, CoAP | sgcWebSockets |
| Componentes prontos de OpenAI / Anthropic / APIs de nuvem | sgcWebSockets |
| Contrato comercial de suporte do fornecedor | Qualquer um — sgcWebSockets incluído, ICS opcional |
Considerações finais
ICS e sgcWebSockets não são, na verdade, concorrentes — são ferramentas complementares. O ICS é uma biblioteca lindamente projetada, gratuita, amigável à fila de mensagens, que se sobressai em protocolos clássicos da Internet e HTTP leve. O sgcWebSockets é uma biblioteca comercial focada que domina a pilha web moderna — WebSocket, HTTP/2/3, MQTT, AMQP, WebRTC, IoT, APIs de IA — e escala para grandes números de conexões concorrentes. A resposta certa para muitos projetos reais é usar os dois, escolhendo cada biblioteca para os protocolos em que ela é melhor.