sgcHTTP 機能一覧: HTTP/2、gRPC & Google Cloud | eSeGeCe

sgcHTTP 機能一覧

sgcHTTP でできることすべてを、HTTP/2 クライアント、gRPC クライアント、そして 3 つの Google Cloud クライアントに対応付けて示します。すべての機能は Delphi と C++ Builder で同じように動作し、すべてのライセンスに完全なソースコードが付属します。今回のローンチではコンポーネントのサブページはまだ公開されておらず、以下の各項目はこのページ内で完結しています。

HTTP/2 クライアント

多重化ストリーム、HPACK、ALPN

gRPC クライアント

単項呼び出し & ストリーミング RPC

Google Cloud

Pub/Sub、Calendar & FCM

規格とプラットフォーム

Delphi 7 から 13、C++ Builder

sgcHTTP は単体で完結しています。sgcWebSockets Core ランタイムを同梱して出荷されるため、アドオンではありません。

HTTP/2 と gRPC には sgcCustomIndy が必要です。両クラスとも TLS プロトコル交渉に ALPN を必要としますが、標準の Indy ライブラリは対応していないため、代わりに sgcCustomIndy の上に構築されています。注文には自動的に追加されます。3 つの Google Cloud クライアントは素の HTTPS で、これを必要としません。

5 つのクラス、1 つのユニット

SGC HTTP パレットページの 2 つのコンポーネントと、コードオンリーの Google Cloud クラス 3 つ。いずれも sgcHTTP ユニットで宣言されています。

コンポーネントクラスパレット?説明
HTTP/2 クライアントTsgcHTTP2Clientありネイティブの HTTP/2 クライアントです。多重化されたストリーム、HPACK によるヘッダー圧縮、ALPN 交渉。sgcCustomIndy が必要です。
gRPC クライアントTsgcGRPCClientありHTTP/2 クライアントの上に構築された gRPC クライアントです。単項、サーバーストリーミング、クライアントストリーミング、双方向の各 RPC。sgcCustomIndy が必要です。
Google Cloud Pub/SubTsgcHTTPGoogleCloud_PubSub_Clientなし、コードオンリーGoogle Cloud Pub/Sub REST API です。トピック、サブスクリプション、スナップショット、発行と取得。Core 上の素の HTTPS。
Google Cloud CalendarTsgcHTTPGoogleCloud_Calendar_Clientなし、コードオンリーGoogle Calendar API v3 です。カレンダーとイベントの作成・更新・一覧・削除。Core 上の素の HTTPS。
Google Cloud FCMTsgcHTTPGoogleCloud_FCM_Clientなし、コードオンリーFirebase Cloud Messaging HTTP v1 API です。1 回の呼び出しでプッシュ通知ペイロードを送信します。Core 上の素の HTTPS。

多重化リクエスト、HPACK、ALPN

TsgcHTTP2Client は、ALPN で交渉される 1 つの TLS 接続上で HTTP/2(RFC 9113)を話します。これが sgcCustomIndy の上に構築されている理由です。

機能API備考
接続HostPortActive1 つの TLS 接続が、多重化されたすべてのリクエストストリームを運びます。
接続開始ConnectConnectAsync接続を開き、同じ呼び出しの中で任意のリクエストを発行します。
読み取りGetGetAsync同期呼び出し、またはイベントでレスポンスを受け取る fire-and-forget 呼び出しです。
書き込みPostPostAsyncPutPutAsyncPatchPatchAsyncリクエストボディはストリームなので、アップロードがメモリに収まる必要はありません。
Delete & OptionsDeleteDeleteAsyncOptionsOptionsAsync残りの HTTP メソッド一式で、同じ同期/非同期のペア構成です。
レスポンスOnHTTP2Responseリクエストとレスポンスのオブジェクトをまとめて渡し、Response.DataString やステータスも含みます。
チャンク化されたボディOnHTTP2ResponseFragmentチャンク化されたレスポンスの各フラグメントが届くたびに、最終的な OnHTTP2Response より前に発生します。
サーバープッシュOnHTTP2PushPromiseHTTP/2 サーバープッシュされたリソースが届いたときに伝えます。
接続のライフサイクルOnHTTP2ConnectOnHTTP2DisconnectOnHTTP2GoAwayOnHTTP2RSTStreamHTTP/2 が定める接続、切断、ストリームリセットの各シグナルです。
設定HTTP2OptionsSettings相手に送信するローカルの HTTP/2 SETTINGS フレームの値です。
信頼性WatchDogHeartBeatThrottle自動再接続、キープアライブ、リクエストのスロットリングで、sgc HTTP スタックの他の部分と共通です。
認証 & TLSAuthenticationTLSOptionsOnHTTP2Authorization標準的な認証方式と TLS 設定に加え、カスタム認可ヘッダー用のフックです。
依存関係sgcCustomIndyALPN が TLS ハンドシェイク中に h2 プロトコルを交渉します。標準の Indy ライブラリにはこれができません。

単項、サーバー、クライアント、双方向ストリーミング

TsgcGRPCClient は Protocol Buffers のペイロードを HTTP/2 クライアントの多重化ストリーム上に載せて運ぶため、4 つの gRPC 呼び出し形式すべてをカバーします。

機能API備考
トランスポートClientTsgcHTTP2Client のインスタンスです。gRPC クライアントは自身の接続を開かず、これに乗って動作します。
単項 RPCCallCallAsyncCallString1 リクエスト、1 レスポンスです。Call はブロックして TsgcGRPCResponse を返し、CallAsyncOnGRPCResponse で結果を届けます。
サーバーストリーミングServerStreamingCall1 リクエストに対し、OnGRPCStreamMessage で届くレスポンスのストリームが、OnGRPCStreamEnd まで続きます。
クライアントストリーミングOpenClientStreamSendStreamMessageCloseClientStreamCloseClientStreamAsyncリクエストのストリームがあり、ストリームが閉じたときに最終レスポンスが 1 つ返ります。
双方向ストリーミングOpenBidiStreamSendBidiMessageCloseBidiStream同じ呼び出しの中で、両側が独立してストリーミングします。
キャンセルCancelCallストリーム ID を指定して、進行中の呼び出しをキャンセルします。
レスポンスOnGRPCResponseOnGRPCStreamMessageOnGRPCStreamEndTsgcGRPCResponseStatusCodeData/DataStringHeadersTrailers を保持します。
エラーOnGRPCErrorOnGRPCExceptiongRPC のステータスコードエラーと、トランスポートレベルの例外を別々に届けます。
メタデータDefaultMetadataOnGRPCBeforeRequest呼び出しごと、または既定の gRPC メタデータヘッダーです。
耐障害性RetryPolicyInterceptorsServiceConfigリトライ動作、横断的なインターセプターチェーン、サービス設定を、個々の呼び出し箇所に手を加えずに追加できます。
可観測性MetricsCollectorクライアントの呼び出しメトリクスを収集します。
依存関係sgcCustomIndy土台となる HTTP/2 クライアントから引き継ぎ、同様に ALPN が必要です。

Pub/Sub、Calendar、プッシュ通知

Google サービスアカウントで認証され、素の HTTPS 経由で到達する、コードオンリーの 3 クラスです。いずれも sgcCustomIndy を必要としません。

機能API備考
認証GoogleCloudOptions.JWTOnAuthTokenOnAuthTokenErrorサービスアカウントの JWT です。プロジェクト ID、クライアントメール、秘密鍵。3 つのクライアントすべてで共通の形です。
Pub/Sub: 発行 & プルPublishPullAcknowledgeSeekTsgcHTTPGoogleCloud_PubSub_Client。トピックへのメッセージ送信、サブスクリプションからのプルと確認応答。
Pub/Sub: トピックCreateTopicDeleteTopicGetTopicListTopicsコードから直接トピックを管理します。
Pub/Sub: サブスクリプションCreateSubscriptionDeleteSubscriptonListSubscriptionsModifyAckDeadlineSubscriptionack-deadline やプッシュ設定の変更を含む、サブスクリプションのライフサイクル全体です。
Pub/Sub: スナップショットCreateSnapshotDeleteSnapshotListSnapshots後で再生するために、サブスクリプションの確認応答状態をスナップショットします。
Calendar: カレンダーNewCalendarUpdateCalendarDeleteCalendarLoadCalendarsTsgcHTTPGoogleCloud_Calendar_Client。Google Calendar API v3 のカレンダー一覧をラップします。
Calendar: イベントNewEventUpdateEventDeleteEventLoadEvents指定したカレンダー上でイベントを作成・変更・削除します。
Calendar: 同期LoadCalendarsChangedLoadEventsChangedOnGetCalendarOnGetCalendarEvent前回の同期以降に変更されたカレンダーとイベントを対象にした、差分同期用フックです。
FCM: プッシュSendMessageTsgcHTTPGoogleCloud_FCM_Client。1 回の呼び出しで Firebase Cloud Messaging v1 のペイロードをプロジェクトに送信します。
TLS とログTLSOptionsLogFile3 つの Google Cloud クライアントすべてで共通です。

API、コンパイラ、ターゲット

通信経路上の公開規格と、対応するすべてのコンパイラで共通のソースです。

項目内容
HTTP/2RFC 9113、HPACK によるヘッダー圧縮と ALPN によるプロトコル交渉を伴います。
gRPCgRPC ワイヤープロトコルに従い、HTTP/2 ストリーム上を流れる Protocol Buffers ペイロードです。
Google CloudPub/Sub REST API、Google Calendar API v3、Firebase Cloud Messaging HTTP v1 API のすべてが、Google サービスアカウントで認証されます。
プラットフォーム5 つのクラスすべてで、Windows Win32、Windows Win64、Linux64、macOS、iOS、Android に対応します。
依存関係HTTP/2 クライアントと gRPC クライアントは、ALPN のために sgcCustomIndy を必要とします。Google Cloud クライアントは、同梱の Core ランタイムだけで動作します。
コンパイラDelphi および C++ Builder 7 から 13 まで。
エディションHTTP/2 は sgcWebSockets の Professional エディション以上にも、gRPC は Enterprise エディション以上にも、Google Cloud クライアントは Standard エディション以上にも含まれています。
ライセンス単体で完結します。sgcWebSockets Core ランタイムを同梱し、完全なソースコードが含まれます。
最もお得な選択: All-AccesseSeGeCe の全製品にプレミアムサポートが付いて、年間 €1,059 からご利用いただけます。
All-Access の価格を見る

sgcHTTP で開発する

無料体験版をダウンロードして、Delphi や C++ Builder から最初の HTTP/2 または gRPC 呼び出しを行いましょう。