gRPC Client

Componente client gRPC nativo per Delphi/C++Builder. Chiamate unary e streaming su HTTP/2, metadati personalizzati, deadline, compressione gzip, interceptor, retry automatico e TLS tramite OpenSSL o Windows SChannel. Porta qualsiasi encoder Protocol Buffers; il componente effettua il framing e invia i byte del tuo messaggio.

TsgcGRPCClient

Un client gRPC tipizzato che gira sul transport nativo TsgcHTTP2Client. Chiamate unary e tutte e tre le modalità di streaming, parsing di status e trailer, senza runtime gRPC esterno o librerie C.

Classe del componente

TsgcGRPCClient

Protocollo

gRPC su HTTP/2 (RFC 9113)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Enterprise

Collega il transport, esegui una chiamata

Trascina un TsgcHTTP2Client e un TsgcGRPCClient su un form, assegna il transport, poi chiama il metodo del tuo servizio con i byte della richiesta.

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;

Cosa contiene

Un client gRPC completo costruito sul motore di framing sgcHTTP2. Quattro tipi di chiamata, tuning del canale, metadati, deadline, interceptor e retry.

Chiamate unary

Call blocca e restituisce un TsgcGRPCResponse con StatusCode, StatusMessage, Data e Trailers. CallAsync ritorna immediatamente e scatena OnGRPCResponse.

Server streaming

ServerStreamingCall invia una richiesta e riceve uno stream di messaggi. Ogni messaggio scatena OnGRPCStreamMessage; OnGRPCStreamEnd scatta con lo status finale.

Client streaming

OpenClientStream apre lo stream, SendStreamMessage invia ogni messaggio e CloseClientStream esegue l'half-close e legge l'unica risposta del server.

Streaming bidirezionale

OpenBidiStream, SendBidiMessage e CloseBidiStream gestiscono uno scambio full-duplex su un singolo stream HTTP/2, con entrambi i lati che inviano contemporaneamente.

Metadati, deadline, cancel

DefaultMetadata e i metadati per chiamata trasportano gli header di autenticazione e tracing. Un timeout per chiamata viene mappato sull'header grpc-timeout e CancelCall interrompe uno stream in corso.

Opzioni del canale

ChannelOptions regola la Compression gzip, ContentType, MaxMessageSize e MaxMetadataSize per l'intero canale.

Interceptor, retry, service config

Una catena di Interceptors avvolge ogni chiamata, RetryPolicy ripete in base a status code configurabili e ServiceConfig insieme a MetricsCollector aggiungono policy e contatori per metodo.

Costruito su HTTP/2 e TLS

Il transport è TsgcHTTP2Client: ALPN h2, TLS tramite OpenSSL o SChannel e parsing dei trailer grpc-status / grpc-message in status code tipizzati.

Protobuf-agnostico, con client Google

Le chiamate accettano e restituiscono byte di messaggio grezzi, quindi qualsiasi libreria Protocol Buffers funziona. I client Google Cloud tipizzati (Pub/Sub, Speech, Translation, Vision, BigQuery, Vertex AI) sono inclusi sopra di esso.

Specifiche e riferimenti

Fonti autorevoli per il protocollo implementato da questo componente.

Documentazione e demo

Vai al riferimento del componente, scarica il progetto demo pronto all'uso e prova la versione trial.

Guida online — TsgcGRPCClient Riferimento completo di proprietà, metodi ed eventi per questo componente.
Progetto demo — Demos\21.GRPC\01.GRPC_Client Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie — solo per questo componente.
Manuale utente (PDF) Manuale completo che copre tutti i componenti della libreria.

Pronto a chiamare servizi gRPC da Delphi?

Scarica la versione di prova gratuita e aggiungi gRPC unary e streaming alle tue applicazioni Delphi.