gRPC Client
Delphi/C++Builder 向けのネイティブ gRPC クライアントコンポーネントです。HTTP/2 上でのユナリおよびストリーミング呼び出し、カスタムメタデータ、デッドライン、gzip 圧縮、インターセプター、自動リトライ、OpenSSL または Windows SChannel による TLS に対応しています。任意の Protocol Buffers エンコーダーを利用でき、コンポーネントがメッセージのバイト列をフレーミングして送信します。
Delphi/C++Builder 向けのネイティブ gRPC クライアントコンポーネントです。HTTP/2 上でのユナリおよびストリーミング呼び出し、カスタムメタデータ、デッドライン、gzip 圧縮、インターセプター、自動リトライ、OpenSSL または Windows SChannel による TLS に対応しています。任意の Protocol Buffers エンコーダーを利用でき、コンポーネントがメッセージのバイト列をフレーミングして送信します。
ネイティブの TsgcHTTP2Client トランスポート上で動作する型付き gRPC クライアントです。ユナリと 3 種類のストリーミングモードすべて、ステータスおよびトレーラーの解析に対応しており、外部の 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 クライアントです。4 種類の呼び出しタイプ、チャネルの調整、メタデータ、デッドライン、インターセプター、リトライに対応しています。
Call はブロックして、StatusCode、StatusMessage、Data、Trailers を含む TsgcGRPCResponse を返します。CallAsync はすぐに戻り、OnGRPCResponse を発火します。
ServerStreamingCall は 1 つのリクエストを送信し、メッセージのストリームを受信します。各メッセージは OnGRPCStreamMessage を発生させ、最終ステータスとともに OnGRPCStreamEnd が発火します。
OpenClientStream がストリームを開き、SendStreamMessage が各メッセージを送出し、CloseClientStream がハーフクローズしてサーバーからの単一の応答を読み取ります。
OpenBidiStream、SendBidiMessage、CloseBidiStream により、単一の HTTP/2 ストリーム上で両側が同時に送信する全二重のやり取りを実行します。
DefaultMetadata と呼び出しごとのメタデータが認証やトレーシングのヘッダーを伝えます。呼び出しごとのタイムアウトは grpc-timeout ヘッダーにマッピングされ、CancelCall は処理中のストリームを中断します。
ChannelOptions は、チャネル全体に対して gzip の Compression、ContentType、MaxMessageSize、MaxMetadataSize を調整します。
Interceptors チェーンがすべての呼び出しをラップし、RetryPolicy が設定可能なステータスコードでリトライを行い、ServiceConfig と MetricsCollector がメソッドごとのポリシーとカウンターを追加します。
トランスポートは TsgcHTTP2Client です。ALPN h2、OpenSSL または SChannel による TLS、そして grpc-status / grpc-message トレーラーの型付きステータスコードへの解析を提供します。
呼び出しは生のメッセージバイト列を受け渡しするため、任意の Protocol Buffers ライブラリが利用できます。型付きの Google Cloud クライアント(Pub/Sub、Speech、Translation、Vision、BigQuery、Vertex AI)がその上に同梱されています。
このコンポーネントが実装するプロトコルの公式ソースです。
コンポーネントリファレンスへの直接リンク、すぐに実行できるデモプロジェクトの入手、体験版のダウンロードができます。
| オンラインヘルプ — TsgcGRPCClient このコンポーネントのプロパティ、メソッド、イベントの完全なリファレンスです。 | 開く | |
| デモプロジェクト — Demos\21.GRPC\01.GRPC_Client すぐに実行できるサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています。以下から体験版をダウンロードできます。 | 開く | |
| 技術ドキュメント (PDF) このコンポーネントの機能、クイックスタート、Delphi および C++ Builder 向けのコードサンプル、一次資料のリファレンスを掲載しています。 | 開く | |
| ユーザーマニュアル (PDF) ライブラリのすべてのコンポーネントを網羅した総合マニュアルです。 | 開く |