gRPC Client

Componente cliente gRPC nativo para Delphi/C++Builder. Chamadas unárias e em streaming sobre HTTP/2, metadados personalizados, deadlines, compressão gzip, interceptors, retry automático e TLS via OpenSSL ou Windows SChannel. Use qualquer codificador Protocol Buffers; o componente faz o framing e envia os bytes da sua mensagem.

TsgcGRPCClient

Um cliente gRPC tipado que roda sobre o transporte nativo TsgcHTTP2Client. Chamadas unárias e os três modos de streaming, parsing de status e trailers, sem runtime gRPC externo nem biblioteca C.

Classe do componente

TsgcGRPCClient

Protocolo

gRPC sobre HTTP/2 (RFC 9113)

Plataformas

Windows, macOS, Linux, iOS, Android

Edição

Enterprise

Conecte o transporte, faça uma chamada

Solte um TsgcHTTP2Client e um TsgcGRPCClient em um formulário, atribua o transporte e chame o método do seu serviço com os bytes da requisição.

uses
  sgcHTTP2, sgcGRPC_Client, sgcGRPC_Classes, sgcGRPC_Types;

var
  HTTP2: TsgcHTTP2Client;
  GRPC: TsgcGRPCClient;
  oResponse: TsgcGRPCResponse;
begin
  // gRPC runs over an HTTP/2 transport
  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.Host := 'grpc.example.com';
  HTTP2.Port := 443;
  HTTP2.TLS  := True;

  GRPC := TsgcGRPCClient.Create(nil);
  GRPC.Client := HTTP2;

  // default metadata sent on every call (auth, tracing...)
  GRPC.DefaultMetadata.Add('authorization', 'Bearer eyJ...');

  // unary call: pass your serialized protobuf message as TBytes
  oResponse := GRPC.Call('helloworld.Greeter', 'SayHello', RequestBytes);
  if oResponse.StatusCode = grpcOK then
    Memo1.Text := oResponse.DataString
  else
    ShowMessage('gRPC error: ' + oResponse.StatusMessage);
end;
// uses: sgcHTTP2, sgcGRPC_Client, sgcGRPC_Classes, sgcGRPC_Types
TsgcHTTP2Client *HTTP2 = new TsgcHTTP2Client(NULL);
HTTP2->Host = "grpc.example.com";
HTTP2->Port = 443;
HTTP2->TLS  = true;

TsgcGRPCClient *GRPC = new TsgcGRPCClient(NULL);
GRPC->Client = HTTP2;

GRPC->DefaultMetadata->Add("authorization", "Bearer eyJ...");

TsgcGRPCResponse *oResponse = GRPC->Call("helloworld.Greeter", "SayHello", RequestBytes);
if (oResponse->StatusCode == grpcOK)
  Memo1->Text = oResponse->DataString;

O que tem por dentro

Um cliente gRPC completo construído sobre o motor de framing sgcHTTP2. Quatro tipos de chamada, ajuste de canal, metadados, deadlines, interceptors e retry.

Chamadas unárias

Call bloqueia e retorna um TsgcGRPCResponse com StatusCode, StatusMessage, Data e Trailers. CallAsync retorna imediatamente e dispara OnGRPCResponse.

Server streaming

ServerStreamingCall envia uma requisição e recebe um fluxo de mensagens. Cada mensagem dispara OnGRPCStreamMessage; OnGRPCStreamEnd dispara com o status final.

Client streaming

OpenClientStream abre o stream, SendStreamMessage envia cada mensagem e CloseClientStream faz o half-close e lê a única resposta do servidor.

Streaming bidirecional

OpenBidiStream, SendBidiMessage e CloseBidiStream executam uma troca full-duplex sobre um único stream HTTP/2, com ambos os lados enviando ao mesmo tempo.

Metadados, deadlines, cancelamento

DefaultMetadata e os metadados por chamada carregam cabeçalhos de autenticação e tracing. Um timeout por chamada é mapeado para o cabeçalho grpc-timeout, e CancelCall aborta um stream em andamento.

Opções de canal

ChannelOptions ajusta a Compression gzip, o ContentType, o MaxMessageSize e o MaxMetadataSize para todo o canal.

Interceptors, retry, service config

Uma cadeia de Interceptors envolve cada chamada, RetryPolicy repete chamadas em status codes configuráveis, e ServiceConfig mais MetricsCollector adicionam política por método e contadores.

Construído sobre HTTP/2 e TLS

O transporte é o TsgcHTTP2Client: ALPN h2, TLS via OpenSSL ou SChannel, e parsing dos trailers grpc-status / grpc-message em status codes tipados.

Agnóstico de protobuf, com clientes Google

As chamadas recebem e retornam bytes brutos de mensagem, então qualquer biblioteca Protocol Buffers funciona. Clientes Google Cloud tipados (Pub/Sub, Speech, Translation, Vision, BigQuery, Vertex AI) vêm por cima.

Especificações e referências

Fontes autoritativas do protocolo que este componente implementa.

Documentação e demos

Acesse a referência do componente, obtenha o projeto demo pronto para executar e baixe a versão de avaliação.

Ajuda online — TsgcGRPCClient Referência completa de propriedades, métodos e eventos deste componente.
Projeto de demonstração — Demos\21.GRPC\01.GRPC_Client Projeto de exemplo pronto para executar. Acompanha o pacote sgcWebSockets — baixe a versão de avaliação abaixo.
Documento técnico (PDF) Recursos, início rápido, exemplos de código para Delphi & C++ Builder e referências de fontes primárias — somente este componente.
Manual do usuário (PDF) Manual abrangente cobrindo todos os componentes da biblioteca.

Pronto para chamar serviços gRPC a partir do Delphi?

Baixe a versão de avaliação gratuita e adicione gRPC unário e em streaming às suas aplicações Delphi.