eSeGeCe — Componentes de comunicação de nível empresarial para Delphi e .NET
DESTAQUE · sgcQUIC

Pule as viagens de ida e volta

TCP mais TLS precisa de três viagens de ida e volta antes que o primeiro byte de uma resposta chegue. O QUIC combina o handshake de transporte e o handshake de criptografia em um único envio, e uma conexão retomada pode enviar dados já no primeiro pacote. O sgcQUIC dá ao Delphi, C++ Builder e .NET um transporte QUIC nativo e um cliente e servidor HTTP/3 construídos sobre ele, no mecanismo QUIC do OpenSSL 3.5.

  • RFC 9000, 9114, 9204
  • WebTransport (RFC 9220)
  • 0-RTT e migração de conexão
  • Delphi · C++ Builder · .NET

QUIC e HTTP/3, ao Pé da Letra das RFCs

O sgcQUIC não é uma implementação parcial. Transporte, framing, compressão de cabeçalhos e a extensão WebTransport, tudo coberto, sobre o mecanismo QUIC nativo do OpenSSL 3.5.

4 Componentes TsgcQUICClient, TsgcQUICServer, TsgcHTTP3Client e TsgcHTTP3Server, uma página de paleta.
9000 RFC 9000 O protocolo de transporte QUIC: streams, datagramas, controle de fluxo e migração de conexão.
9114 RFC 9114 HTTP/3, a mesma semântica de requisição e resposta do HTTP/2, transportada sobre streams QUIC.
9204 RFC 9204 Compressão de cabeçalhos QPACK, projetada para a entrega fora de ordem de streams do QUIC.
9220 RFC 9220 WebTransport sobre HTTP/3, streams bidirecionais e datagramas em uma única requisição Extended CONNECT.
sgcQUIC

Um transporte QUIC bruto e um cliente e servidor HTTP/3 para Delphi, C++ Builder e .NET. Um complemento do sgcWebSockets Enterprise, sobre o mesmo mecanismo QUIC nativo do OpenSSL 3.5. Código-fonte completo, implantação sem royalties.

QUIC Bruto, ou HTTP/3 por Cima

Use TsgcQUICClient e TsgcQUICServer para um transporte puro com o seu próprio framing, ou vá direto para TsgcHTTP3Client e TsgcHTTP3Server quando o formato de wire for HTTP.

RFC 9000

Cliente e Servidor QUIC

TsgcQUICClient e TsgcQUICServer falam QUIC puro: múltiplos streams independentes em uma conexão criptografada, datagramas não confiáveis e migração de conexão quando o endereço IP do cliente muda no meio da sessão.

Ver os componentes QUIC →
RFC 9114

Cliente e Servidor HTTP/3

TsgcHTTP3Client e TsgcHTTP3Server colocam a semântica HTTP por cima: cabeçalhos de requisição e resposta comprimidos com QPACK, descoberta via Alt-Svc, e os mesmos métodos e códigos de status que o seu código HTTP/2 já usa.

Ver os componentes HTTP/3 →
0-RTT

Retomada de Sessão

Um cliente que já se conectou antes pode enviar sua primeira requisição já no primeiro pacote, antes mesmo de o handshake terminar.

Migração

Migração de Conexão

Um connection ID identifica a sessão, não o endereço IP, então um celular que passa do Wi-Fi para os dados móveis mantém seus streams abertos.

WebTransport

RFC 9220

Streams bidirecionais e datagramas não confiáveis sobre uma única requisição Extended CONNECT, para clientes de navegador que falam WebTransport.

Guias práticos para os componentes QUIC e HTTP/3:

Uma Requisição Sobre HTTP/3

A mesma forma de qualquer outro cliente HTTP do sgcWebSockets: defina propriedades, trate um evento, chame um método.

uses
  sgcHTTP3_Client;
var
  vClient: TsgcHTTP3Client;
begin
  vClient := TsgcHTTP3Client.Create(nil);
  vClient.Host := 'api.example.com';
  vClient.Port := 443;
  vClient.OnResponse :=
    procedure(Sender: TObject; const AStatus: Integer; const ABody: string)
    begin
      Memo1.Lines.Add(Format('%d: %s', [AStatus, ABody]));
    end;
  vClient.OnAltSvc :=
    procedure(Sender: TObject; const AAltSvc: string)
    begin
      Memo1.Lines.Add('Alt-Svc: ' + AAltSvc);  // h3 advertised over HTTP/2
    end;
  vClient.Connect;
  vClient.Get('/pets/42');
end;
uses
  sgcQUIC_Client;
var
  vQUIC: TsgcQUICClient;
begin
  vQUIC := TsgcQUICClient.Create(nil);
  vQUIC.Host := 'quic.example.com';
  vQUIC.Port := 4433;
  vQUIC.EnableMultiStream := True;
  vQUIC.OnQUICConnect :=
    procedure(Sender: TObject)
    var
      vStreamId: Int64;
    begin
      vStreamId := vQUIC.OpenStream;
      vQUIC.WriteData(vStreamId, 'ping');
    end;
  vQUIC.OnQUICStreamData :=
    procedure(Sender: TObject; const AStreamId: Int64; const AData: string)
    begin
      Memo1.Lines.Add(Format('stream %d: %s', [AStreamId, AData]));
    end;
  vQUIC.Active := True;
end;

O cliente e o servidor compartilham o mesmo modelo de conexão, stream e datagrama nos dois lados. A matriz completa de recursos →

Uma Porta, Um Certificado, Dois Protocolos

O TsgcHTTP3Server fala HTTP/3 sobre QUIC em uma porta UDP, enquanto um pareamento no estilo TsgcHTTP3ServerBridge com um servidor HTTP/2 existente deixa os clientes legados continuarem funcionando sobre TCP. Anuncie Alt-Svc e os clientes modernos se atualizam sozinhos.

HTTP3Server.pas
uses
  sgcHTTP3_Server;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FServer := TsgcHTTP3Server.Create(nil);
  FServer.Port := 443;
  FServer.QUICOptions.SSLOptions.CertFile := 'server.crt';
  FServer.QUICOptions.SSLOptions.KeyFile  := 'server.key';

  // One handler for every incoming HTTP/3 request
  FServer.OnH3Request :=
    procedure(const Ctx: TsgcHTTP3Context)
    begin
      if Ctx.Path = '/pets/42' then
        Ctx.RespondJSON(200, '{"name":"Rex"}')
      else
        Ctx.Respond(404, 'Not found');
    end;

  FServer.Active := True;
end;

O que isso te dá

Um único componente Delphi que encerra o QUIC, negocia h3 e roteia cada requisição para um manipulador, com o mesmo certificado que o seu servidor HTTP/2 já carrega.

Alt-Svc, para que as atualizações sejam automáticas

Uma resposta HTTP/2 comum carrega um cabeçalho Alt-Svc: h3=":443". Os clientes que o entendem abrem QUIC na próxima requisição, sem redirecionamento ou um segundo domínio.

WebTransport, na mesma porta

Uma requisição Extended CONNECT atualiza um stream para WebTransport, dando a um cliente de navegador streams bidirecionais e datagramas ao lado das requisições HTTP/3 comuns.

QUIC nativo, sem dependência externa

O handshake de QUIC e TLS 1.3 roda no próprio mecanismo QUIC do OpenSSL 3.5. Não há nenhuma biblioteca QUIC separada para compilar ou distribuir.

OpenSSL 3.5 TLS 1.3 Alt-Svc QPACK WebTransport

O componente servidor HTTP/3 →

O sgcQUIC é um complemento do sgcWebSockets Enterprise, então a licença, o canal de suporte e o ritmo de atualizações são os mesmos que você já tem.

Nove Bibliotecas, Uma Caixa de Ferramentas

O sgcQUIC é uma das nove bibliotecas de componentes da eSeGeCe para Delphi, C++ Builder e .NET. Elas compartilham convenções, vêm com código-fonte completo e são implantadas sem royalties.

sgcQUIC

Transporte QUIC bruto e um cliente e servidor HTTP/3, com WebTransport. Um complemento do sgcWebSockets Enterprise.

Saiba mais →

sgcWebSockets

WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA e 30+ integrações de API. A licença Enterprise sobre a qual o sgcQUIC é construído.

Saiba mais →

sgcHTML

Componentes HTML e de UI server-side sobre Bootstrap 5 e htmx. Sirva a UI renderizada pelo mesmo transporte HTTP/3.

Saiba mais →

sgcAI

Componentes de IA, LLM e MCP para Delphi e C++ Builder. Sete provedores de LLM por trás de um único componente, além de MCP, embeddings e fala. Produto autônomo, com o runtime sgcWebSockets Core incluído.

Saiba mais →

sgcMQ

Componentes cliente de MQTT, AMQP 0.9.1 e 1.0, Apache Kafka e STOMP para Delphi e C++ Builder. Produto autônomo, com o runtime sgcWebSockets Core incluído.

Saiba mais →

sgcAuth

Cliente OAuth2, cliente JWT e suporte a WebAuthn para Delphi e C++ Builder. Faça login com qualquer provedor OAuth2/OIDC, emita e verifique JWTs, e adicione autenticação por passkey a aplicativos nativos. Produto autônomo, com o runtime sgcWebSockets Core incluído.

Saiba mais →

sgcHTTP

Cliente HTTP/2, cliente gRPC e clientes Google Cloud Pub/Sub, Calendar e FCM para Delphi e C++ Builder. Produto autônomo, com o runtime sgcWebSockets Core incluído.

Saiba mais →

sgcREST

Servidor REST, servidor OpenAPI e componentes cliente OpenAPI para Delphi e C++ Builder. Publique APIs REST a partir de um contrato OpenAPI 3.x, ou consuma qualquer API descrita em OpenAPI. Produto autônomo, com o runtime sgcWebSockets Core incluído.

Saiba mais →

sgcOpenAPI

Analisador OpenAPI 3.x, gerador nativo de SDK Pascal, componente servidor OpenAPI e mais de 1.195 SDKs de nuvem pré-compilados.

Saiba mais →

sgcSign

XAdES, PAdES, CAdES e ASiC para documentos, Authenticode, ClickOnce, NuGet e VSIX para código.

Saiba mais →

sgcBiometrics

Windows Hello, sensores de impressão digital e o Windows Biometric Framework para Delphi e C++ Builder.

Saiba mais →

sgcIndy

Componentes Indy TCP/IP atualizados com TLS moderno, IPv6 e HTTP/2, do Delphi 7 ao 13.

Saiba mais →

Ver preços e edições Baixar a versão de avaliação gratuita

O Que os Desenvolvedores Dizem

Confiado por desenvolvedores Delphi, C++ Builder, Lazarus e .NET ao redor do mundo.

A biblioteca sgcWebSockets de vocês é muito útil e fácil de configurar. Continuem com o ótimo trabalho!

Simone Moretti Desenvolvedor Delphi

O sgcWebSockets é incrível e o suporte de vocês é o melhor!

Christian Meyer Fundador & CTO

Muito obrigado pela ajuda e pelo suporte, eu adoro os componentes de vocês.

Mark Steinfeld CTO

Últimas do blog

Ver todas as publicações →

Você está vendo a visão QUIC da eSeGeCe.

Mostre outro ângulo →
Garantia de reembolso de 30 diasNão ficou satisfeito? Solicite o reembolso total em até 30 dias após a compra. Ver política de reembolso

Envie QUIC e HTTP/3 Sem Sair da Sua IDE

Transporte QUIC bruto, cliente e servidor HTTP/3, e WebTransport, no mecanismo QUIC do OpenSSL 3.5. Código-fonte completo, implantação sem royalties, como um complemento do sgcWebSockets Enterprise.