sgcHTTP Servidor HTTP, HTTP/2 e gRPC nativos no Delphi. Google Cloud também.

Um servidor HTTP e cinco componentes cliente. TsgcHTTPServer publica endpoints HTTP e arquivos estáticos a partir da sua própria aplicação. TsgcHTTP2Client fala HTTP/2 com streams multiplexados em uma única conexão TLS e compressão de cabeçalhos HPACK. TsgcGRPCClient é um cliente gRPC construído sobre ele, para chamadas Protocol Buffers unárias e de streaming. Mais três classes chegam ao Google Cloud por HTTPS simples: Pub/Sub, Calendar e Firebase Cloud Messaging.

Um pacote independente do sgcWebSockets, com o runtime Core incluído. Veja os preços →
  • Servidor HTTP
  • HTTP/2
  • gRPC
  • Google Cloud
  • HPACK & ALPN
  • Delphi 7 a 13
  • C++ Builder
  • 3Componentes da paleta: o servidor HTTP e os clientes HTTP/2 e gRPC
  • 5Classes cliente no total
  • 3Serviços do Google Cloud: Pub/Sub, Calendar e FCM
  • 1Instalador independente, runtime Core incluído
  • 100%Código-fonte incluído em toda licença
Veja funcionando

Veja o sgcHTTP em dois minutos.

Um guia rápido narrado e legendado: um cliente HTTP/2 enviando muitas requisições por uma única conexão e, depois, uma chamada gRPC sobre esse mesmo transporte, tudo a partir do Delphi. Nada é baixado até você apertar o play.

Guia rápido do sgcHTTP

Chame um endpoint HTTP/2 e faça uma chamada gRPC, a partir do Delphi.

  1. Crie o cliente HTTP/2Crie um TsgcHTTP2Client, trate o OnHTTP2Response e chame Get. O protocolo h2 é negociado durante o handshake TLS por meio do ALPN.
  2. Muitas requisições, uma conexãoAs requisições compartilham uma única conexão TCP como streams independentes, então uma resposta lenta não bloqueia as demais que vêm depois dela.
  3. gRPC sobre o mesmo transporteAtribua o cliente HTTP/2 ao cliente gRPC e chame um método por serviço e nome. As mensagens trafegam como Protocol Buffers com prefixo de tamanho.
  4. Quatro padrões de RPCUnário, streaming do servidor, streaming do cliente e streaming bidirecional, cada um com o seu próprio método no TsgcGRPCClient.
Dois componentes da paleta

Um cliente HTTP/2 e o gRPC rodando sobre ele.

Os dois componentes estão declarados na sgcHTTP unit, e o TsgcGRPCClient carrega a sua própria conexão HTTP/2 por meio da propriedade Client .

O cliente HTTP/2 no guia rápido do sgcHTTP: o código Delphi ao lado de seis requisições em andamento por um único socket

Streams multiplexados em uma única conexão TLS

TsgcHTTP2Client fala HTTP/2 (RFC 9113): várias requisições compartilham uma única conexão TCP como streams independentes. Os cabeçalhos são comprimidos com HPACK, e o h2 é negociado durante o handshake TLS por meio do ALPN. Todos os verbos estão cobertos: Get, Post, Put, Patch, Delete e Options, cada um com uma chamada síncrona e uma versão Async equivalente.

O gRPC no guia rápido do sgcHTTP: um TsgcGRPCClient usando um TsgcHTTP2Client como transporte, com os quatro padrões de RPC listados

RPC unário e de streaming sobre o cliente HTTP/2

TsgcGRPCClient herda a conexão multiplexada e adiciona o formato de transmissão gRPC por cima. Call e CallAsync cobrem RPCs unários, ServerStreamingCall trata um fluxo de respostas para uma única requisição, e OpenClientStream e OpenBidiStream cobrem o streaming do cliente e o streaming bidirecional. RetryPolicy, Interceptors e ServiceConfig acrescentam comportamento de repetição e lógica transversal sem mexer nos pontos de chamada.

Cinco classes cliente

Duas dependências, não cinco.

As cinco classes se dividem com clareza pelo que precisam por baixo. HTTP/2 e gRPC precisam de ALPN, o que significa sgcCustomIndy. O Google Cloud não precisa de nada além de HTTPS e uma conta de serviço, algo que o runtime Core incluído já oferece. O servidor HTTP vem desse mesmo runtime.

Servidor HTTP

TsgcHTTPServer publica endpoints HTTP a partir da sua própria aplicação. Defina Port, trate OnCommandGet, defina Active, e cada requisição chega ao seu código. OnCommandOther cobre verbos como PUT e DELETE. Vem com o runtime Core incluído.

HTTP/2

TsgcHTTP2Client multiplexa streams independentes em uma conexão TLS, comprime cabeçalhos com HPACK e negocia o h2 por meio do ALPN. Connect, Get, Post, Put, Patch, Delete e Options, síncrono ou Async.

gRPC

TsgcGRPCClient roda sobre o cliente HTTP/2: mensagens Protocol Buffers com prefixo de tamanho sobre streams HTTP/2, com RPCs unários, de streaming do servidor, de streaming do cliente e bidirecionais, além de política de repetição e interceptadores.

Google Cloud, HTTPS simples

TsgcHTTPGoogleCloud_PubSub_Client, TsgcHTTPGoogleCloud_Calendar_Client e TsgcHTTPGoogleCloud_FCM_Client acessam Pub/Sub, Calendar e Firebase Cloud Messaging, autenticados com uma conta de serviço do Google. Nenhum deles precisa do sgcCustomIndy.

Server push e corpos em chunks

Os eventos expõem o ciclo de vida da conexão: OnHTTP2Connect, OnHTTP2Response, OnHTTP2ResponseFragment para corpos em chunks, OnHTTP2PushPromise para server push, OnHTTP2GoAway e OnHTTP2Disconnect. Nada sobre o ciclo de vida dos streams fica escondido de você.

Uma dependência para dois, nenhuma para três

Os clientes HTTP/2 e gRPC são construídos sobre o sgcCustomIndy, que cobre a mesma faixa de plataformas do próprio sgcWebSockets. Os clientes do Google Cloud usam HTTPS simples, então rodam em qualquer lugar onde o runtime Core rode. Delphi 7 até o RAD Studio 13, e C++ Builder.

Código-fonte completo na caixa

Toda licença traz o código-fonte completo do servidor HTTP, dos cinco clientes e do runtime incluído, então as implementações em nível de protocolo podem ser depuradas passo a passo no seu próprio debugger. A distribuição é livre de royalties.

O código

Servidor HTTP, HTTP/2 e gRPC, lado a lado.

Crie o componente, defina uma porta ou aponte para um host, ligue o evento e pronto. O mesmo código compila no Delphi 7 a 13 e no C++ Builder.

uses
  sgcHTTP;
var
  HTTP2: TsgcHTTP2Client;
begin
  // HTTP/2: multiplexed requests over one TLS connection
  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.Host := 'https://api.example.com';
  HTTP2.OnHTTP2Response := HTTP2Response;
  HTTP2.Active := True;

  HTTP2.GetAsync('/v1/status');
end;

procedure TForm1.HTTP2Response(Sender: TObject;
  const Connection: TsgcHTTP2ConnectionClient;
  const Request: TsgcHTTP2RequestProperty;
  const Response: TsgcHTTP2ResponseProperty);
begin
  Memo1.Lines.Add(Response.DataString);
end;
uses
  sgcHTTP;
var
  GRPC: TsgcGRPCClient;
begin
  // gRPC: built on the HTTP/2 client, unary and streaming RPC
  GRPC := TsgcGRPCClient.Create(nil);
  GRPC.Client.Host := 'https://grpc.example.com';
  GRPC.OnGRPCResponse := GRPCResponse;

  GRPC.CallAsync('example.OrderService', 'GetOrder', RequestBytes);
end;

procedure TForm1.GRPCResponse(Sender: TObject;
  const aResponse: TsgcGRPCResponse);
begin
  Memo1.Lines.Add(aResponse.DataString);
end;
uses
  sgcHTTP_Server;
var
  Server: TsgcHTTPServer;
begin
  // HTTP server: endpoints and static files
  Server := TsgcHTTPServer.Create(nil);
  Server.Port := 8080;
  Server.DocumentRoot := 'C:www';
  Server.OnCommandGet := ServerCommandGet;
  Server.Active := True;
end;

procedure TForm1.ServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo;
  AResponseInfo: TIdHTTPResponseInfo);
begin
  if ARequestInfo.Document = '/api/status' then
  begin
    AResponseInfo.ContentType := 'application/json';
    AResponseInfo.ContentText := '{"status":"ok"}';
  end;
end;
  1. Crie o componenteOs clientes ficam na unit sgcHTTP, o servidor na sgcHTTP_Server. O TsgcGRPCClient carrega a sua própria conexão HTTP/2 por meio da propriedade Client.
  2. Aponte para um hostBasta um host https://. O ALPN negocia o h2 durante o handshake TLS, e o HPACK comprime os cabeçalhos.
  3. Ligue o evento de respostaOnHTTP2Response e OnGRPCResponse entregam o corpo decodificado, com a requisição e a conexão anexadas.
  4. Envie, de forma síncrona ou nãoCada verbo e cada RPC tem uma chamada bloqueante e uma versão Async, então a thread da interface continua livre.

A mesma estrutura em Object Pascal e em C++ Builder. A matriz de recursos completa →

Antes de comprar

Duas coisas que vale saber antes.

O que o sgcHTTP exige de você e o que não exige. As duas respostas são curtas, e ambas estão nesta página, não nas letras miúdas.

Dependências por cliente
cliente                             precisa do sgcCustomIndy
TsgcHTTPServer                      não, vem com o runtime Core
TsgcHTTP2Client                     sim, para o ALPN
TsgcGRPCClient                      sim, roda sobre o TsgcHTTP2Client
TsgcHTTPGoogleCloud_PubSub_Client   não, HTTPS simples
TsgcHTTPGoogleCloud_Calendar_Client não, HTTPS simples
TsgcHTTPGoogleCloud_FCM_Client      não, HTTPS simples

O HTTP/2 negocia o h2 com ALPN durante o handshake TLS.
  A biblioteca Indy padrão que acompanha o RAD Studio
  não tem suporte a ALPN, então HTTP/2 e gRPC são
  construídos sobre o sgcCustomIndy.

O sgcHTTP é independente

O runtime Core do sgcWebSockets está incluído: o servidor HTTP, a pilha de cliente HTTP/TLS por onde passam as requisições de todos os clientes e a camada JSON que decodifica as respostas do Google Cloud. Um instalador, código-fonte completo na caixa.

HTTP/2 e gRPC precisam do sgcCustomIndy

A negociação ALPN não é suportada pela biblioteca Indy padrão, então o TsgcHTTP2Client e, por extensão, o TsgcGRPCClient são construídos sobre o sgcCustomIndy em vez da biblioteca padrão. Ele é sempre incluído quando você pede o sgcHTTP, e o preço exibido já o cobre.

O Google Cloud precisa apenas de HTTPS

Os três clientes do Google Cloud se autenticam com o project id, o client email e a chave privada de uma conta de serviço do Google, e chamam as APIs REST pela pilha HTTPS simples do runtime Core. Sem biblioteca nativa, sem sgcCustomIndy.

Delphi e C++ Builder

O sgcHTTP funciona do Delphi 7 até o RAD Studio 13 e no C++ Builder. Os mesmos componentes também estão no sgcWebSockets Enterprise, então uma licença Enterprise ou All-Access que você já tenha pode cobrir o que precisa. O instalador de avaliação é o do sgcWebSockets All-Access, então o servidor HTTP e os cinco clientes podem ser avaliados hoje mesmo.

O sgcHTTP implementa as superfícies publicadas de HTTP/2, gRPC e REST do Google Cloud em vez de embrulhar um SDK de fornecedor. Assim, streams, cabeçalhos, RPCs e notificações push são métodos e eventos de primeira classe, e o código-fonte completo significa que nada no meio do caminho é uma caixa-preta.

Parte do sgcWebSockets

Um único pacote do sgcWebSockets, licenciado separadamente.

O sgcHTTP inclui o runtime Core do sgcWebSockets sobre o qual é construído, e o complemento sgcCustomIndy de que HTTP/2 e gRPC precisam está sempre incluído. Toda licença traz o código-fonte completo e distribuição livre de royalties.

Single

1 licença de desenvolvedor. Use em uma máquina por vez.

€398

Team

2 licenças de desenvolvedor. Use em duas máquinas por vez.

€648

Site

Desenvolvedores ilimitados. Todas as máquinas da empresa.

€1,048

Componentes cliente HTTP/2, gRPC e Google Cloud para Delphi e C++ Builder, com o runtime Core do sgcWebSockets incluído. Já usa o sgcWebSockets Enterprise? Os mesmos componentes também estão lá.

Ver preços e licenças
Depoimentos

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

HTTP moderno, gRPC e Google Cloud a partir de código nativo.

Um servidor HTTP, HTTP/2 multiplexado, gRPC com streaming e três clientes do Google Cloud, com o runtime Core do sgcWebSockets incluído e o código-fonte completo na caixa.

Mais da eSeGeCe

Outros Produtos da eSeGeCe

O sgcHTTP compartilha convenções com as outras bibliotecas de componentes da eSeGeCe para Delphi, C++ Builder e .NET. Todas acompanham o código-fonte completo e são distribuídas livres de royalties.

sgcWebSockets

WebSocket, HTTP/2, MQTT, AMQP, WebRTC, IA e mais de 30 integrações de API para Delphi, C++ Builder, Lazarus e .NET. A edição Enterprise inclui o gRPC também.

sgcREST

Componentes de servidor REST, servidor OpenAPI e 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.

sgcAuth

Cliente OAuth2, cliente JWT e suporte a WebAuthn para Delphi e C++ Builder. Independente, com o runtime Core do sgcWebSockets incluído.

sgcMQ

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

sgcSocial

Componentes cliente Telegram e WhatsApp Business para Delphi e C++ Builder. Independente, com o runtime Core do sgcWebSockets incluído.

sgcAI

Componentes de IA, LLM e MCP para Delphi e C++ Builder. Sete provedores de LLM atrás de um único componente, além de MCP, embeddings e fala.

sgcHTML

Componentes HTML e de interface no servidor sobre Bootstrap 5 e htmx para Delphi, C++ Builder e .NET.

sgcQUIC

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

sgcOpenAPI

Parser OpenAPI 3.x, gerador de SDK Pascal nativo, componente de servidor OpenAPI e mais de 1.195 SDKs de nuvem prontos.

sgcSign

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

sgcPDF

Crie, edite, visualize, assine, oculte trechos e valide arquivos PDF em Object Pascal puro, sem DLL para distribuir. Licenciado separadamente.

sgcBiometrics

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

sgcIndy

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

Últimas do blog

Ver todas as publicações →

Você está vendo a visão Servidor HTTP, HTTP/2 & gRPC 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