sgcHTTP 機能一覧
sgcHTTP でできることすべてを、HTTP/2 クライアント、gRPC クライアント、そして 3 つの Google Cloud クライアントに対応付けて示します。すべての機能は Delphi と C++ Builder で同じように動作し、すべてのライセンスに完全なソースコードが付属します。今回のローンチではコンポーネントのサブページはまだ公開されておらず、以下の各項目はこのページ内で完結しています。
sgcHTTP でできることすべてを、HTTP/2 クライアント、gRPC クライアント、そして 3 つの Google Cloud クライアントに対応付けて示します。すべての機能は Delphi と C++ Builder で同じように動作し、すべてのライセンスに完全なソースコードが付属します。今回のローンチではコンポーネントのサブページはまだ公開されておらず、以下の各項目はこのページ内で完結しています。
多重化ストリーム、HPACK、ALPN
単項呼び出し & ストリーミング RPC
Pub/Sub、Calendar & FCM
Delphi 7 から 13、C++ Builder
sgcHTTP は単体で完結しています。sgcWebSockets Core ランタイムを同梱して出荷されるため、アドオンではありません。
HTTP/2 と gRPC には sgcCustomIndy が必要です。両クラスとも TLS プロトコル交渉に ALPN を必要としますが、標準の Indy ライブラリは対応していないため、代わりに sgcCustomIndy の上に構築されています。注文には自動的に追加されます。3 つの Google Cloud クライアントは素の HTTPS で、これを必要としません。
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/Sub | TsgcHTTPGoogleCloud_PubSub_Client | なし、コードオンリー | Google Cloud Pub/Sub REST API です。トピック、サブスクリプション、スナップショット、発行と取得。Core 上の素の HTTPS。 |
| Google Cloud Calendar | TsgcHTTPGoogleCloud_Calendar_Client | なし、コードオンリー | Google Calendar API v3 です。カレンダーとイベントの作成・更新・一覧・削除。Core 上の素の HTTPS。 |
| Google Cloud FCM | TsgcHTTPGoogleCloud_FCM_Client | なし、コードオンリー | Firebase Cloud Messaging HTTP v1 API です。1 回の呼び出しでプッシュ通知ペイロードを送信します。Core 上の素の HTTPS。 |
TsgcHTTP2Client は、ALPN で交渉される 1 つの TLS 接続上で HTTP/2(RFC 9113)を話します。これが sgcCustomIndy の上に構築されている理由です。
| 機能 | API | 備考 |
|---|---|---|
| 接続 | Host、Port、Active | 1 つの TLS 接続が、多重化されたすべてのリクエストストリームを運びます。 |
| 接続開始 | Connect、ConnectAsync | 接続を開き、同じ呼び出しの中で任意のリクエストを発行します。 |
| 読み取り | Get、GetAsync | 同期呼び出し、またはイベントでレスポンスを受け取る fire-and-forget 呼び出しです。 |
| 書き込み | Post、PostAsync、Put、PutAsync、Patch、PatchAsync | リクエストボディはストリームなので、アップロードがメモリに収まる必要はありません。 |
| Delete & Options | Delete、DeleteAsync、Options、OptionsAsync | 残りの HTTP メソッド一式で、同じ同期/非同期のペア構成です。 |
| レスポンス | OnHTTP2Response | リクエストとレスポンスのオブジェクトをまとめて渡し、Response.DataString やステータスも含みます。 |
| チャンク化されたボディ | OnHTTP2ResponseFragment | チャンク化されたレスポンスの各フラグメントが届くたびに、最終的な OnHTTP2Response より前に発生します。 |
| サーバープッシュ | OnHTTP2PushPromise | HTTP/2 サーバープッシュされたリソースが届いたときに伝えます。 |
| 接続のライフサイクル | OnHTTP2Connect、OnHTTP2Disconnect、OnHTTP2GoAway、OnHTTP2RSTStream | HTTP/2 が定める接続、切断、ストリームリセットの各シグナルです。 |
| 設定 | HTTP2Options、Settings | 相手に送信するローカルの HTTP/2 SETTINGS フレームの値です。 |
| 信頼性 | WatchDog、HeartBeat、Throttle | 自動再接続、キープアライブ、リクエストのスロットリングで、sgc HTTP スタックの他の部分と共通です。 |
| 認証 & TLS | Authentication、TLSOptions、OnHTTP2Authorization | 標準的な認証方式と TLS 設定に加え、カスタム認可ヘッダー用のフックです。 |
| 依存関係 | sgcCustomIndy | ALPN が TLS ハンドシェイク中に h2 プロトコルを交渉します。標準の Indy ライブラリにはこれができません。 |
TsgcGRPCClient は Protocol Buffers のペイロードを HTTP/2 クライアントの多重化ストリーム上に載せて運ぶため、4 つの gRPC 呼び出し形式すべてをカバーします。
| 機能 | API | 備考 |
|---|---|---|
| トランスポート | Client | TsgcHTTP2Client のインスタンスです。gRPC クライアントは自身の接続を開かず、これに乗って動作します。 |
| 単項 RPC | Call、CallAsync、CallString | 1 リクエスト、1 レスポンスです。Call はブロックして TsgcGRPCResponse を返し、CallAsync は OnGRPCResponse で結果を届けます。 |
| サーバーストリーミング | ServerStreamingCall | 1 リクエストに対し、OnGRPCStreamMessage で届くレスポンスのストリームが、OnGRPCStreamEnd まで続きます。 |
| クライアントストリーミング | OpenClientStream、SendStreamMessage、CloseClientStream、CloseClientStreamAsync | リクエストのストリームがあり、ストリームが閉じたときに最終レスポンスが 1 つ返ります。 |
| 双方向ストリーミング | OpenBidiStream、SendBidiMessage、CloseBidiStream | 同じ呼び出しの中で、両側が独立してストリーミングします。 |
| キャンセル | CancelCall | ストリーム ID を指定して、進行中の呼び出しをキャンセルします。 |
| レスポンス | OnGRPCResponse、OnGRPCStreamMessage、OnGRPCStreamEnd | TsgcGRPCResponse が StatusCode、Data/DataString、Headers、Trailers を保持します。 |
| エラー | OnGRPCError、OnGRPCException | gRPC のステータスコードエラーと、トランスポートレベルの例外を別々に届けます。 |
| メタデータ | DefaultMetadata、OnGRPCBeforeRequest | 呼び出しごと、または既定の gRPC メタデータヘッダーです。 |
| 耐障害性 | RetryPolicy、Interceptors、ServiceConfig | リトライ動作、横断的なインターセプターチェーン、サービス設定を、個々の呼び出し箇所に手を加えずに追加できます。 |
| 可観測性 | MetricsCollector | クライアントの呼び出しメトリクスを収集します。 |
| 依存関係 | sgcCustomIndy | 土台となる HTTP/2 クライアントから引き継ぎ、同様に ALPN が必要です。 |
Google サービスアカウントで認証され、素の HTTPS 経由で到達する、コードオンリーの 3 クラスです。いずれも sgcCustomIndy を必要としません。
| 機能 | API | 備考 |
|---|---|---|
| 認証 | GoogleCloudOptions.JWT、OnAuthToken、OnAuthTokenError | サービスアカウントの JWT です。プロジェクト ID、クライアントメール、秘密鍵。3 つのクライアントすべてで共通の形です。 |
| Pub/Sub: 発行 & プル | Publish、Pull、Acknowledge、Seek | TsgcHTTPGoogleCloud_PubSub_Client。トピックへのメッセージ送信、サブスクリプションからのプルと確認応答。 |
| Pub/Sub: トピック | CreateTopic、DeleteTopic、GetTopic、ListTopics | コードから直接トピックを管理します。 |
| Pub/Sub: サブスクリプション | CreateSubscription、DeleteSubscripton、ListSubscriptions、ModifyAckDeadlineSubscription | ack-deadline やプッシュ設定の変更を含む、サブスクリプションのライフサイクル全体です。 |
| Pub/Sub: スナップショット | CreateSnapshot、DeleteSnapshot、ListSnapshots | 後で再生するために、サブスクリプションの確認応答状態をスナップショットします。 |
| Calendar: カレンダー | NewCalendar、UpdateCalendar、DeleteCalendar、LoadCalendars | TsgcHTTPGoogleCloud_Calendar_Client。Google Calendar API v3 のカレンダー一覧をラップします。 |
| Calendar: イベント | NewEvent、UpdateEvent、DeleteEvent、LoadEvents | 指定したカレンダー上でイベントを作成・変更・削除します。 |
| Calendar: 同期 | LoadCalendarsChanged、LoadEventsChanged、OnGetCalendar、OnGetCalendarEvent | 前回の同期以降に変更されたカレンダーとイベントを対象にした、差分同期用フックです。 |
| FCM: プッシュ | SendMessage | TsgcHTTPGoogleCloud_FCM_Client。1 回の呼び出しで Firebase Cloud Messaging v1 のペイロードをプロジェクトに送信します。 |
| TLS とログ | TLSOptions、LogFile | 3 つの Google Cloud クライアントすべてで共通です。 |
通信経路上の公開規格と、対応するすべてのコンパイラで共通のソースです。
| 項目 | 内容 |
|---|---|
| HTTP/2 | RFC 9113、HPACK によるヘッダー圧縮と ALPN によるプロトコル交渉を伴います。 |
| gRPC | gRPC ワイヤープロトコルに従い、HTTP/2 ストリーム上を流れる Protocol Buffers ペイロードです。 |
| Google Cloud | Pub/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 ランタイムを同梱し、完全なソースコードが含まれます。 |