sgcHTTP HTTP サーバー、HTTP/2 と gRPC が、 Delphi にネイティブ。 Google Cloud にも対応。

HTTP サーバー 1 つと 5 つのクライアントコンポーネントです。 TsgcHTTPServer は、ご自身のアプリケーションから HTTP エンドポイントと静的ファイルを公開します。 TsgcHTTP2Client は、1 つの TLS 接続上で多重化されたストリームと HPACK ヘッダー圧縮により HTTP/2 を話します。 TsgcGRPCClient は、その上に構築された gRPC クライアントで、Protocol Buffers によるユナリ呼び出しとストリーミング呼び出しに対応します。さらに 3 つのクラスが通常の HTTPS で Google Cloud(Pub/Sub、Calendar、Firebase Cloud Messaging)に接続します。

sgcWebSockets の単体パッケージで、Core ランタイムを同梱しています。価格を見る →
  • HTTP サーバー
  • HTTP/2
  • gRPC
  • Google Cloud
  • HPACK & ALPN
  • Delphi 7~13
  • C++ Builder
  • 3パレットのコンポーネント: HTTP サーバー、HTTP/2 クライアントと gRPC クライアント
  • 5クライアントクラスの合計
  • 3Google Cloud サービス: Pub/Sub、Calendar、FCM
  • 1単体のインストーラー、Core ランタイム同梱
  • 100%すべてのライセンスにソースコードが含まれます
動作を見る

2 分でわかる sgcHTTP。

ナレーションと字幕付きのクイックスタート: HTTP/2 クライアントが 1 つの接続で多数のリクエストを送信し、続いて同じトランスポート上で gRPC 呼び出しを行います。すべて Delphi から実行します。再生ボタンを押すまで何もダウンロードされません。

sgcHTTP クイックスタート

Delphi から HTTP/2 エンドポイントを呼び出し、gRPC 呼び出しを行います。

  1. HTTP/2 クライアントを作成TsgcHTTP2Client を作成し、OnHTTP2Response を処理して Get を呼び出します。h2 プロトコルは TLS ハンドシェイク中に ALPN で交渉されます。
  2. 多数のリクエストを 1 つの接続でリクエストは独立したストリームとして 1 つの TCP 接続を共有するため、1 つの遅いレスポンスが後続のリクエストをブロックすることはありません。
  3. 同じトランスポート上の gRPCHTTP/2 クライアントを gRPC クライアントに割り当て、サービス名とメソッド名を指定して呼び出します。メッセージは長さプレフィックス付きの Protocol Buffers として送信されます。
  4. 4 つの RPC パターンユナリ、サーバーストリーミング、クライアントストリーミング、双方向ストリーミングの 4 種類を、TsgcGRPCClient がそれぞれ専用のメソッドで提供します。
2 つのパレットコンポーネント

HTTP/2 クライアントと、その上で動作する gRPC。

両コンポーネントは sgcHTTP ユニットで宣言されており、 TsgcGRPCClient は、独自の HTTP/2 接続を Client プロパティを通じて持ちます。

sgcHTTP クイックスタートの HTTP/2 クライアント: Delphi のコードと、1 つのソケット上で処理中の 6 件のリクエスト

1 つの TLS 接続上で多重化されるストリーム

TsgcHTTP2Client は HTTP/2(RFC 9113)を話します。複数のリクエストが独立したストリームとして 1 つの TCP 接続を共有します。ヘッダーは HPACK で圧縮され、 h2 プロトコルは TLS ハンドシェイク中に ALPN で交渉されます。 Get、 Post、 Put、 Patch、 Delete と Optionsまで、すべての動詞をカバーしており、それぞれ同期呼び出しと Async の対を備えています。

sgcHTTP クイックスタートの gRPC: TsgcHTTP2Client をトランスポートとして使う TsgcGRPCClient と、4 つの RPC パターン一覧

HTTP/2 クライアント上のユナリ RPC とストリーミング RPC

TsgcGRPCClient は多重化された接続を引き継ぎ、その上に gRPC のワイヤーフォーマットを追加します。 Call と CallAsync が単項 RPC をカバーし、 ServerStreamingCall が 1 つのリクエストに対するレスポンスのストリームを処理し、 OpenClientStream と OpenBidiStream がクライアントストリーミングと双方向ストリーミングを担当します。 RetryPolicy、 Interceptors と ServiceConfig が、呼び出し箇所に手を加えることなくリトライ動作と横断的なロジックを追加します。

1 つのサーバーと 5 つのクライアントクラス

依存関係は 5 つではなく 2 つ。

5 つのクラスは、土台に何を必要とするかで明確に分かれます。HTTP/2 と gRPC は ALPN を必要とし、それはつまり sgcCustomIndy が必要ということです。Google Cloud は HTTPS とサービスアカウント以上のものを必要とせず、それは同梱の Core ランタイムがすでに提供しています。HTTP サーバーは、そのランタイム自体に含まれています。

HTTP サーバー

TsgcHTTPServer は、ご自身のアプリケーションから HTTP エンドポイントを公開します。 Port を設定し、 OnCommandGet を処理して、 Active を有効にすれば、すべてのリクエストがコードに届きます。 OnCommandOther は PUT や DELETE などのメソッドに対応します。同梱の Core ランタイムに含まれています。

静的ファイルとアップロード

DocumentRoot をフォルダーに指定すると、サーバーはそこから静的ファイルを返します。 HTTPUploadFiles はアップロードされたファイルをディスクに保存し、 MaxRequestBodySize はリクエスト本文のサイズを制限します。 HTTPCompression と KeepAlive は、レスポンスを小さく保ち、接続を維持します。

本番運用に対応

SSL と SSLOptions で TLS を有効にし、 Authentication と OnAuthentication でエンドポイントを保護し、 SessionState でセッションを追跡し、 ThreadPool と MaxConnections でスケーラビリティを制御します。WebSocket サーバーと同じエンジンから、WebSocket の部分を除いたものです。

HTTP/2

TsgcHTTP2Client は 1 つの TLS 接続上で独立したストリームを多重化し、ヘッダーを HPACK で圧縮し、 h2 プロトコルを ALPN で交渉します。 Connect、 Get、 Post、 Put、 Patch、 Delete と Options。同期呼び出しと Async。

gRPC

TsgcGRPCClient は HTTP/2 クライアントの上で動作します。HTTP/2 ストリーム上で長さプレフィックス付きの Protocol Buffers メッセージを送受信し、ユナリ、サーバーストリーミング、クライアントストリーミング、双方向の各 RPC に加え、リトライポリシーとインターセプターにも対応します。

Google Cloud、通常の HTTPS

TsgcHTTPGoogleCloud_PubSub_Client、 TsgcHTTPGoogleCloud_Calendar_Client と TsgcHTTPGoogleCloud_FCM_Client は、Google サービスアカウントで認証して Pub/Sub、Calendar、Firebase Cloud Messaging に接続します。いずれも sgcCustomIndy は不要です。

サーバープッシュとチャンク本文

イベントが接続のライフサイクルを伝えます。 OnHTTP2Connect、 OnHTTP2Response、 OnHTTP2ResponseFragment 、サーバープッシュ向けの OnHTTP2PushPromise 、 OnHTTP2GoAway と OnHTTP2Disconnectです。ストリームのライフサイクルは、何も隠されていません。

2 つのクライアントに依存関係が 1 つ、残る 3 つには不要

HTTP/2 クライアントと gRPC クライアントは sgcCustomIndy の上に構築されており、対応プラットフォームは sgcWebSockets 本体と同じ範囲です。Google Cloud クライアントは通常の HTTPS を使うため、Core ランタイムが動作する環境ならどこでも動作します。Delphi 7 から RAD Studio 13、および C++ Builder に対応します。

ソースコード同梱

すべてのライセンスに HTTP サーバー、5 つのクライアント、同梱ランタイムの完全なソースコードが付属するため、ワイヤーレベルの実装を自分のデバッガでステップ実行できます。配布はロイヤリティフリーです。

コード

HTTP サーバー、HTTP/2、gRPC を並べて比較。

コンポーネントを作成し、ポートを設定するかホストを指定して、イベントを接続すれば準備完了です。同じコードが Delphi 7~13 と C++ Builder でコンパイルできます。

uses
  sgcHTTP;
var
  HTTP2: TsgcHTTP2Client;
begin
  // HTTP/2: multiplexed requests over one TLS connection
  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.Host := 'https://api.example.com';
  HTTP2.OnHTTP2Response := HTTP2Response;
  HTTP2.Active := True;

  HTTP2.GetAsync('/v1/status');
end;

procedure TForm1.HTTP2Response(Sender: TObject;
  const Connection: TsgcHTTP2ConnectionClient;
  const Request: TsgcHTTP2RequestProperty;
  const Response: TsgcHTTP2ResponseProperty);
begin
  Memo1.Lines.Add(Response.DataString);
end;
uses
  sgcHTTP;
var
  GRPC: TsgcGRPCClient;
begin
  // gRPC: built on the HTTP/2 client, unary and streaming RPC
  GRPC := TsgcGRPCClient.Create(nil);
  GRPC.Client.Host := 'https://grpc.example.com';
  GRPC.OnGRPCResponse := GRPCResponse;

  GRPC.CallAsync('example.OrderService', 'GetOrder', RequestBytes);
end;

procedure TForm1.GRPCResponse(Sender: TObject;
  const aResponse: TsgcGRPCResponse);
begin
  Memo1.Lines.Add(aResponse.DataString);
end;
uses
  sgcHTTP_Server;
var
  Server: TsgcHTTPServer;
begin
  // HTTP server: endpoints and static files
  Server := TsgcHTTPServer.Create(nil);
  Server.Port := 8080;
  Server.DocumentRoot := 'C:\www';
  Server.OnCommandGet := ServerCommandGet;
  Server.Active := True;
end;

procedure TForm1.ServerCommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo;
  AResponseInfo: TIdHTTPResponseInfo);
begin
  if ARequestInfo.Document = '/api/status' then
  begin
    AResponseInfo.ContentType := 'application/json';
    AResponseInfo.ContentText := '{"status":"ok"}';
  end;
end;
  1. クライアントを作成クライアントは sgcHTTP ユニット、サーバーは sgcHTTP_Server ユニットに含まれています。TsgcGRPCClient は Client プロパティを通じて独自の HTTP/2 接続を持ちます。
  2. ホストを指定必要なのは https:// のホストだけです。ALPN が TLS ハンドシェイク中に h2 を交渉し、HPACK がヘッダーを圧縮します。
  3. レスポンスイベントを接続OnHTTP2Response と OnGRPCResponse は、リクエストと接続の情報とともに、デコード済みの本文を渡します。
  4. 同期でも非同期でも送信すべてのメソッドとすべての RPC に、ブロッキング呼び出しと Async 版があるため、UI スレッドは自由なままです。

Object Pascal でも C++ Builder でも同じ形です。 完全な機能マトリックス →

購入前に

最初に知っておきたいことが 2 つあります。

sgcHTTP が求めるもの、そして求めないものです。どちらの答えも短く、細かい注記の中ではなく、このページに書いてあります。

クライアントごとの依存関係
client                              needs sgcCustomIndy
TsgcHTTPServer                      no, ships with the Core runtime
TsgcHTTP2Client                     yes, for ALPN
TsgcGRPCClient                      yes, rides on TsgcHTTP2Client
TsgcHTTPGoogleCloud_PubSub_Client   no, plain HTTPS
TsgcHTTPGoogleCloud_Calendar_Client no, plain HTTPS
TsgcHTTPGoogleCloud_FCM_Client      no, plain HTTPS

HTTP/2 negotiates h2 with ALPN during the TLS handshake.
  The standard Indy library that ships with RAD Studio
  has no ALPN support, so both HTTP/2 and gRPC are built
  on sgcCustomIndy instead.

sgcHTTP は単体で完結しています

sgcWebSockets Core ランタイムが含まれます。HTTP サーバー、すべてのクライアントがリクエストを送信する HTTP/TLS クライアントスタックと、Google Cloud のレスポンスをデコードする JSON レイヤーです。インストーラーは 1 つ、完全なソースコードも同梱されています。

HTTP/2 と gRPC には sgcCustomIndy が必要

標準の Indy ライブラリは ALPN の交渉に対応していないため、 TsgcHTTP2Client と、その延長にある TsgcGRPCClient は、代わりに sgcCustomIndy の上に構築されています。sgcHTTP を注文すると常に含まれ、表示されている価格にすでに含まれています。

Google Cloud には HTTPS だけが必要です

3 つの Google Cloud クライアントは、Google サービスアカウントのプロジェクト ID、クライアントメール、秘密鍵で認証を行い、Core ランタイムの素の HTTPS スタック上で REST API を呼び出します。ネイティブライブラリも sgcCustomIndy も不要です。

Delphi と C++ Builder

sgcHTTP は、Delphi 7 から RAD Studio 13 まで、そして C++ Builder をターゲットにしています。同じコンポーネントは sgcWebSockets Enterprise にも含まれているため、既存の Enterprise または All-Access ライセンスですでにカバーされている場合があります。体験版インストーラーは sgcWebSockets All-Access の体験版なので、5 つのクラスすべてを今すぐ評価できます。

sgcHTTP はベンダー SDK をラップするのではなく、公開された HTTP/2、gRPC、Google Cloud REST の仕様を直接実装しているため、ストリーム、ヘッダー、RPC、プッシュ通知はすべて第一級のメソッドとイベントであり、完全なソースコードにより、その間に何もブラックボックスは存在しません。

sgcWebSockets の一部

sgcWebSockets の単一パッケージで、単独でライセンスされます。

sgcHTTP は土台となる sgcWebSockets Core ランタイムを同梱しており、HTTP/2 と gRPC に必要な sgcCustomIndy アドオンも常に含まれます。すべてのライセンスに完全なソースコードが付属し、配布はロイヤリティフリーです。

Single

開発者ライセンス 1 つ。一度に 1 台のマシンで使用できます。

€398

Team

開発者ライセンス 2 つ。一度に 2 台のマシンで使用できます。

€648

Site

開発者数無制限。会社のすべてのマシンで使用できます。

€1,048

Delphi と C++ Builder 向けの HTTP/2、gRPC、Google Cloud クライアントコンポーネントで、sgcWebSockets Core ランタイムを同梱しています。すでに sgcWebSockets Enterprise をお使いですか?同じコンポーネントがそちらにも含まれています。

価格とライセンスを見る
お客様の声

開発者の声

世界中の Delphi、C++ Builder、Lazarus、.NET 開発者から信頼されています。

sgcWebSockets ライブラリはとても便利でセットアップも簡単です。これからも頑張ってください!
Simone Moretti Delphi 開発者
sgcWebSockets は素晴らしく、サポートも最高です!
Christian Meyer 創業者 & CTO
ご支援とサポートに本当に感謝しています。コンポーネントが大好きです。
Mark Steinfeld CTO

ネイティブコードから使う最新の HTTP、gRPC、Google Cloud。

多重化された HTTP/2、ストリーミング gRPC、そして 3 つの Google Cloud クライアントを 1 つに。sgcWebSockets Core ランタイムを同梱し、完全なソースコードも同梱済みです。

eSeGeCe のその他の製品

eSeGeCe のその他の製品

sgcHTTP は、Delphi、C++ Builder、.NET 向けの他の eSeGeCe コンポーネントライブラリと規約を共有しています。いずれも完全なソースコード付きで、配布はロイヤリティフリーです。

sgcWebSockets

Delphi、C++ Builder、Lazarus、.NET 向けの WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI、そして 30 を超える API 統合。Enterprise エディションには gRPC も含まれています。

sgcREST

Delphi と C++ Builder 向けの REST サーバー、OpenAPI サーバー、OpenAPI クライアントのコンポーネントです。OpenAPI 3.x の契約から REST API を公開したり、OpenAPI で記述された任意の API を利用したりできます。

sgcAuth

Delphi と C++ Builder 向けの OAuth2 クライアント、JWT クライアント、WebAuthn 対応。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

sgcMQ

Delphi と C++ Builder 向けの MQTT、AMQP 0.9.1 および 1.0、Apache Kafka、STOMP のクライアントコンポーネント。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

sgcSocial

Delphi と C++ Builder 向けの Telegram および WhatsApp Business のクライアントコンポーネント。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

sgcAI

Delphi と C++ Builder 向けの AI、LLM、MCP コンポーネント。1 つのコンポーネントの背後に 7 つの LLM プロバイダー、さらに MCP、埋め込み、音声。

sgcHTML

Delphi、C++ Builder、.NET 向けの、Bootstrap 5 と htmx を基盤とするサーバーサイド HTML / UI コンポーネントです。

sgcQUIC

生の QUIC トランスポートと HTTP/3 のクライアントおよびサーバー、WebTransport 対応。sgcWebSockets Enterprise のアドオンです。

sgcOpenAPI

OpenAPI 3.x パーサー、ネイティブ Pascal SDK ジェネレーター、OpenAPI サーバーコンポーネント、そして 1,195 以上のビルド済みクラウド SDK。

sgcSign

ドキュメントには XAdES、PAdES、CAdES、ASiC、コードには Authenticode、ClickOnce、NuGet、VSIX。

sgcPDF

PDF ファイルの作成、編集、表示、署名、墨消し、検証を純粋な Object Pascal で提供します。DLL の配布は不要で、単体でライセンスされます。

sgcBiometrics

Delphi と C++ Builder 向けの Windows Hello、指紋センサー、Windows Biometric Framework。

sgcIndy

モダンな TLS、IPv6、HTTP/2 に対応した更新版 Indy TCP/IP コンポーネント。Delphi 7 から 13 まで対応します。

ブログの最新記事

すべての記事を見る →

現在は eSeGeCe の HTTP/2 & gRPC ビューを表示しています。

別の切り口を見る →
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る