sgcWebSockets vs ICS — Comparativo de redes em Delphi

· Análises

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

RecursoOverbyte ICS (v9, na data de publicação)sgcWebSockets
Cliente HTTP/1.1Sim (THttpCli, TSslHttpCli)Sim, múltiplos backends
Servidor HTTP/1.1Sim (TSslHttpAppSrv)Sim
Cliente WebSocketSim (desde a v8)Sim, RFC 6455 completo
Servidor WebSocketSim (desde a v8)Sim, subprotocolos, per-message deflate, canais
HTTP/2Limitado / não é recurso de primeira classeSim, HPACK e camada de frames completos
HTTP/3 / QUICNãoSim (baseado em msquic)
MQTT 3.1.1 / 5.0Sem broker nativo, apenas cliente básicoCliente + broker completos, ambas as versões
AMQP 1.0 / 0.9.1NãoSim
STOMP, SSE, WAMPSSE básico, demais nãoTodos suportados
WebRTC / STUN / TURN / DTLS-SRTPNãoSim
CoAP, AWS IoT, Azure IoTNãoSim
SMTP / POP3 / IMAP / FTP / NNTPSim, implementações madurasNão (use Indy ou ICS)
Bindings OpenSSLSim, muito atualizadosSim, além de SChannel e BoringSSL
Mais de 30 wrappers de API REST (OpenAI, Anthropic, AWS, Azure, exchanges)NãoSim
LicençaGratuita, estilo MozillaComercial, com Edição Free disponível
Versões do DelphiD7 até D13D7 até D13
ManutençãoAtiva, conduzida pelo fornecedor (Magenta Systems)Ativa, conduzida pelo fornecedor, releases mensais
Suporte comercialContratos de suporte pagos opcionaisIncluí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, NNTPICS
Pequeno fetcher HTTP de um único formulário, sem threadingICS
Acompanhamento do OpenSSL mais recenteICS (o sgc fica muito perto)
Cliente/servidor WebSocket com canais, WatchDog, cliente JSsgcWebSockets
Cliente ou servidor HTTP/2, Apple Push, FCMsgcWebSockets
HTTP/3 / QUICsgcWebSockets
Broker MQTT 5, AMQP 1.0, WAMP, STOMPsgcWebSockets
WebRTC, STUN, TURN, IoT, CoAPsgcWebSockets
Componentes prontos de OpenAI / Anthropic / APIs de nuvemsgcWebSockets
Contrato comercial de suporte do fornecedorQualquer 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.