gRPC Client

Delphi/C++ Builder용 네이티브 gRPC 클라이언트 컴포넌트예요. HTTP/2를 통한 Unary 및 스트리밍 호출, 사용자 정의 메타데이터, 데드라인, gzip 압축, 인터셉터, 자동 재시도, OpenSSL 또는 Windows SChannel을 통한 TLS를 제공해요. 원하는 Protocol Buffers 인코더를 가져오면 컴포넌트가 메시지 바이트를 프레이밍하고 전송해요.

TsgcGRPCClient

네이티브 TsgcHTTP2Client 전송 위에서 동작하는 타입 지정 gRPC 클라이언트예요. Unary 및 세 가지 스트리밍 모드, 상태 및 트레일러 파싱을 지원하며, 외부 gRPC 런타임이나 C 라이브러리가 필요 없어요.

컴포넌트 클래스

TsgcGRPCClient

프로토콜

gRPC over HTTP/2 (RFC 9113)

플랫폼

Windows, macOS, Linux, iOS, Android

에디션

Enterprise

전송을 연결하고 호출하기

폼에 TsgcHTTP2Client와 TsgcGRPCClient를 놓고 전송을 할당한 다음, 요청 바이트로 서비스 메서드를 호출하세요.

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;

내부 구성

sgcHTTP2 프레이밍 엔진 위에 구축된 완전한 gRPC 클라이언트예요. 네 가지 호출 유형, 채널 튜닝, 메타데이터, 데드라인, 인터셉터, 재시도를 제공해요.

Unary 호출

Call은 블로킹되며 StatusCode, StatusMessage, Data, Trailers를 담은 TsgcGRPCResponse를 반환해요. CallAsync는 즉시 반환하고 OnGRPCResponse를 발생시켜요.

서버 스트리밍

ServerStreamingCall은 하나의 요청을 보내고 메시지 스트림을 받아요. 각 메시지는 OnGRPCStreamMessage를 발생시키며, OnGRPCStreamEnd가 최종 상태와 함께 발생해요.

클라이언트 스트리밍

OpenClientStream이 스트림을 열고, SendStreamMessage가 각 메시지를 보내며, CloseClientStream이 절반 닫기 후 단일 서버 응답을 읽어요.

양방향 스트리밍

OpenBidiStream, SendBidiMessage, CloseBidiStream은 단일 HTTP/2 스트림에서 전이중 교환을 수행하여 양쪽이 동시에 전송해요.

메타데이터, 데드라인, 취소

DefaultMetadata와 호출별 메타데이터가 인증 및 추적 헤더를 전달해요. 호출별 타임아웃은 grpc-timeout 헤더로 매핑되며, CancelCall은 진행 중인 스트림을 중단해요.

채널 옵션

ChannelOptions는 채널 전체에 대해 gzip Compression, ContentType, MaxMessageSize, MaxMetadataSize를 튜닝해요.

인터셉터, 재시도, 서비스 구성

Interceptors 체인이 모든 호출을 감싸고, RetryPolicy가 구성 가능한 상태 코드에서 재시도하며, ServiceConfigMetricsCollector가 메서드별 정책과 카운터를 추가해요.

HTTP/2 및 TLS 기반

전송은 TsgcHTTP2Client예요: ALPN h2, OpenSSL 또는 SChannel을 통한 TLS, grpc-status / grpc-message 트레일러를 타입 지정 상태 코드로 파싱해요.

Protobuf 비종속, Google 클라이언트 포함

호출은 원시 메시지 바이트를 주고받으므로 모든 Protocol Buffers 라이브러리가 동작해요. 타입 지정 Google Cloud 클라이언트(Pub/Sub, Speech, Translation, Vision, BigQuery, Vertex AI)가 그 위에 함께 제공돼요.

사양 및 참조

이 컴포넌트가 구현하는 프로토콜의 공식 출처예요.

문서 및 데모

컴포넌트 레퍼런스 링크, 즉시 실행 가능한 데모 프로젝트, 체험판 다운로드를 제공해요.

온라인 도움말 — TsgcGRPCClient 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스예요.
Demo Project — Demos\21.GRPC\01.GRPC_Client 즉시 실행 가능한 예제 프로젝트예요. sgcWebSockets 패키지에 포함돼 있어요 — 아래에서 체험판을 다운로드하세요.
기술 문서 (PDF) 이 컴포넌트의 기능, 빠른 시작, Delphi 및 C++ Builder 코드 샘플, 기본 출처 참조를 포함해요.
사용자 매뉴얼 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 매뉴얼이에요.

Delphi에서 gRPC 서비스를 호출할 준비가 됐나요?

무료 체험판을 다운로드하고 Delphi 애플리케이션에 Unary 및 스트리밍 gRPC를 추가하세요.