単体で完結する製品 HTTP Server, HTTP/2, gRPC & Google Cloud

sgcHTTP: Delphi & C++ Builder 向け HTTP Server, HTTP/2, gRPC & Google Cloud コンポーネント

HTTP サーバー 1 つと、5 つのクライアントコンポーネントです。TsgcHTTPServer は、お使いのアプリケーションから HTTP エンドポイントと静的ファイルを公開します。Port を設定し、OnCommandGet を処理して、Active を設定するだけです。TsgcHTTP2Client は、1 つの TLS 接続上で多重化されたストリームと HPACK ヘッダー圧縮により HTTP/2 を話します。TsgcGRPCClient はその上に構築された gRPC クライアントで、単項呼び出しとストリーミングの Protocol Buffers 呼び出しに対応します。さらに 3 つのクラスが、素の HTTPS 経由で Google Cloud の Pub/Sub、Calendar、Firebase Cloud Messaging に到達します。sgcHTTP は単体で完結しており、サーバーと 5 つのクライアントすべての土台となる sgcWebSockets Core ランタイムを同梱しています。

完全なソースコード
Delphi 7 から 13 & C++ Builder
同梱ランタイム sgcWebSockets Core HTTP サーバーに加え、すべてのクライアントの土台となる HTTP、TLS、JSON ランタイム
HTTP/2 TsgcHTTP2Client
gRPC TsgcGRPCClient

sgcHTTP を 2 分で見る

Delphi と C++Builder 向けの HTTP サーバー、HTTP/2 および gRPC クライアントに加えて、Google Cloud、Amazon、Apple Push との統合をすぐに利用できます。

3 パレットコンポーネント HTTP サーバー、HTTP/2 クライアント、gRPC クライアント、パレットの 1 ページに集約
5 クライアントクラスの総数 HTTP/2、gRPC、そして 3 つの Google Cloud クライアント
3 Google Cloud サービス Pub/Sub、Calendar、Firebase Cloud Messaging
100% ソースコード同梱 HTTP サーバー、5 つのクライアントすべてと同梱の Core ランタイム
12 か月のアップデート ライセンスが有効な間に公開されるすべてのリリース

最初に知っておきたい 2 点

sgcHTTP が求めるもの、そして求めないものです。どちらも答えは短くまとまります。

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

単体で完結しており、sgcWebSockets Core ランタイムが含まれています。HTTP サーバー、すべてのクライアントがリクエストを送信する HTTP/TLS クライアントスタック、そしてGoogle Cloud のレスポンスをデコードする JSON レイヤーです。SKU も 1 つ、インストーラーも 1 つです。

すべてのライセンスに完全なソースコードが付属するため、HTTP サーバー、5 つのクライアント、その土台となるランタイムは、バイナリの中に消えることなく、自分のデバッガでステップ実行できます。

5 つ中 2 つにアドオンが必要

HTTP/2 & gRPC には sgcCustomIndy が必要です

HTTP/2 は、TLS ハンドシェイク中に ALPN で h2 プロトコルを交渉しますが、RAD Studio に同梱されている標準の Indy ライブラリは ALPN に対応していません。そのため sgcHTTP の HTTP/2 クライアントと gRPC クライアントは、代わりに sgcCustomIndy の上に構築されており、sgcHTTP を注文すると常に含まれ、表示されている価格にすでに含まれています。

Pub/Sub、Calendar、Firebase Cloud Messaging の 3 つの Google Cloud クライアントは、素の HTTPS です。Core ランタイムだけで動作し、sgcCustomIndy はまったく必要ありません。

3 つのパレットコンポーネントと 3 つの Google Cloud クライアント

HTTP サーバー、HTTP/2 クライアント、gRPC クライアントは、SGC HTTP パレットページに登録される非ビジュアルコンポーネントです。サーバーは同梱 Core ランタイムの sgcHTTP_Server ユニットで、2 つのクライアントは sgcHTTP ユニットで宣言されています。フォームに配置するかコードで生成し、接続オプションを設定してイベントを接続してから、型付きのリクエストメソッドを呼び出します。3 つの Google Cloud クライアントは、同じユニットにコードオンリーのクラスとして存在し、フォームに配置するものは何もありません。生成して GoogleCloudOptions を設定し、メソッドを直接呼び出すだけです。

HTTP Server1 コンポーネント

HTTP エンドポイントと静的ファイルを公開

TsgcHTTPServer は、Delphi または C++ Builder のアプリケーションを HTTP サーバーに変えます。Port を設定し、OnCommandGet を処理して、Active を true にするだけで、すべてのリクエストがリクエストオブジェクトとレスポンスオブジェクトとともにコードに届きます。PUT や DELETE などのメソッドは OnCommandOther が受け持ちます。DocumentRoot をフォルダーに向ければ、サーバーはそこから静的ファイルを返します。HTTPCompression はレスポンスを圧縮し、KeepAlive は接続を再利用し、SessionState と OnSessionStart、OnSessionEnd でセッションを追跡し、MaxRequestBodySize でリクエストボディのサイズを制限し、HTTPUploadFiles はアップロードされたファイルをディスクに保存します。本番運用では、SSL と SSLOptions で TLS を有効にし、Authentication と OnAuthentication でエンドポイントを保護し、ThreadPool と MaxConnections でスケーリングを制御します。これは sgcWebSockets の WebSocket サーバーと同じエンジンから WebSocket の部分を除いたもので、同梱の Core ランタイムに含まれています。

TsgcHTTPServer Core ランタイムに同梱
HTTP/21 コンポーネント

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

TsgcHTTP2Client は HTTP/2(RFC 9113)を話します。複数のリクエストが独立したストリームとして 1 つの TCP 接続を共有するため、1 つの遅いレスポンスが他をブロックすることはありません。ヘッダーは HPACK で圧縮され、h2 プロトコルは TLS ハンドシェイク中に ALPN で交渉されます。これが、このコンポーネントが標準の Indy ライブラリではなく sgcCustomIndy の上に構築されている理由です。Connect、Get、Post、Put、Patch、Delete、Options と、すべての HTTP メソッドをカバーしており、それぞれ同期呼び出しと Async の対を備えています。イベントが接続のライフサイクルを伝えます: OnHTTP2Connect、OnHTTP2Response、チャンク化されたボディ向けの OnHTTP2ResponseFragment、サーバープッシュ向けの OnHTTP2PushPromise、OnHTTP2GoAway、OnHTTP2Disconnect です。HTTP2Options がローカルの SETTINGS フレームを設定し、TLSOptions と Authentication は sgc HTTP スタックの他の部分から引き継がれます。

TsgcHTTP2Client sgcCustomIndy が必要
gRPC1 コンポーネント

HTTP/2 クライアント上の単項呼び出しとストリーミング RPC

TsgcGRPCClient は HTTP/2 クライアントの上に構築されているため、多重化された接続を引き継ぎ、その上に gRPC のワイヤーフォーマットを追加します。HTTP/2 ストリーム上を流れる、長さプレフィックス付きの Protocol Buffers メッセージです。Call と CallAsync が単項 RPC をカバーし、ServerStreamingCall が 1 つのリクエストに対するレスポンスのストリームを処理し、OpenClientStream/SendStreamMessage/CloseClientStream と OpenBidiStream/SendBidiMessage/CloseBidiStream が、クライアントストリーミングと双方向ストリーミングの RPC をカバーします。OnGRPCResponse、OnGRPCStreamMessage、OnGRPCStreamEnd が通信内容を届け、RetryPolicy、Interceptors、ServiceConfig が、呼び出し箇所に手を加えることなくリトライ動作、横断的なロジック、サービス設定を追加します。土台となる HTTP/2 クライアントと同様、ALPN のために sgcCustomIndy を必要とします。

TsgcGRPCClient sgcCustomIndy が必要
Google Cloud3 クラス

Pub/Sub、Calendar、プッシュ通知。すべて素の HTTPS

さらに 3 つのクラスが、Google サービスアカウントで認証された素の HTTPS 経由で Google Cloud サービスに到達します。いずれも sgcCustomIndy を必要としません。TsgcHTTPGoogleCloud_PubSub_Client はメッセージの発行とプル、トピック・サブスクリプション・スナップショットの管理を行います。Publish、Pull、Acknowledge、CreateTopic、CreateSubscription、そのほか Pub/Sub REST サーフェス全体です。TsgcHTTPGoogleCloud_Calendar_Client は Google Calendar API v3 をラップします。NewCalendar、NewEvent、LoadEvents、LoadCalendars、そして同期用の OnGetCalendar と OnGetCalendarEvent イベントです。TsgcHTTPGoogleCloud_FCM_Client は、SendMessage という 1 回の呼び出しで Firebase プロジェクトにプッシュ通知ペイロードを送信します。3 つとも、生成して GoogleCloudOptions を設定し、メソッドを呼び出すだけのコードオンリーのクラスです。

TsgcHTTPGoogleCloud_PubSub_Client TsgcHTTPGoogleCloud_Calendar_Client TsgcHTTPGoogleCloud_FCM_Client

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

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

HTTP/2 は ALPN を必要とし、そのため sgcCustomIndy が必要です

Application-Layer Protocol Negotiation が、TLS ハンドシェイク中に h2 を選択しますが、RAD Studio に同梱されている標準の Indy ライブラリには ALPN のサポートがありません。そのため TsgcHTTP2Client は、eSeGeCe のカスタム Indy ビルドである sgcCustomIndy の上に構築されています。

gRPC は HTTP/2 クライアントに乗る Protocol Buffers です

TsgcGRPCClient は自分自身の接続を開きません。その Client プロパティは TsgcHTTP2Client です。単項呼び出し、サーバーストリーミング、クライアントストリーミング、双方向呼び出しは、いずれも内部では HTTP/2 ストリームとして流れます。

Google Cloud は HTTPS とサービスアカウントだけです

3 つの Google Cloud クライアントは、Google サービスアカウントのプロジェクト ID、クライアントメール、秘密鍵からなる GoogleCloudOptions.JWT で認証を行い、Core ランタイムの素の HTTPS スタック上で REST API を呼び出します。OnAuthToken と OnAuthTokenError がトークン交換を伝えます。

Core ランタイムは箱の中に入っています

単体で完結しており、sgcWebSockets Core ランタイムが含まれています。TsgcHTTPServer と、5 つのクライアントすべてが呼び出しに使う HTTP/TLS クライアントスタックを提供し、その完全なソースコードも他のすべてと同様にパッケージの一部です。

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

2 つのクライアントは sgcHTTP ユニットで、サーバーは sgcHTTP_Server で宣言されており、TsgcGRPCClient は Client プロパティを通じて自身の HTTP/2 接続を保持します。同じコードが Delphi 7 から 13、そして C++ Builder でコンパイルできます。

uses
  sgcHTTP, sgcHTTP_Server;

var
  Server: TsgcHTTPServer;
  HTTP2: TsgcHTTP2Client;
  GRPC: TsgcGRPCClient;
begin
  // HTTP server: endpoints and static files
  Server := TsgcHTTPServer.Create(nil);
  Server.Port := 8080;
  Server.DocumentRoot := 'C:\www';
  Server.OnCommandGet := ServerCommandGet;
  Server.Active := True;

  // 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');

  // 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.HTTP2Response(Sender: TObject;
  const Connection: TsgcHTTP2ConnectionClient;
  const Request: TsgcHTTP2RequestProperty;
  const Response: TsgcHTTP2ResponseProperty);
begin
  Memo1.Lines.Add(Response.DataString);
end;

procedure TForm1.GRPCResponse(Sender: TObject;
  const aResponse: TsgcGRPCResponse);
begin
  Memo1.Lines.Add(aResponse.DataString);
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;
// include: sgcHTTP.hpp, sgcHTTP_Server.hpp

// HTTP server: endpoints and static files
TsgcHTTPServer *Server = new TsgcHTTPServer(this);
Server->Port = 8080;
Server->DocumentRoot = "C:\\www";
Server->OnCommandGet = ServerCommandGet;
Server->Active = true;

// HTTP/2: multiplexed requests over one TLS connection
TsgcHTTP2Client *HTTP2 = new TsgcHTTP2Client(this);
HTTP2->Host = "https://api.example.com";
HTTP2->OnHTTP2Response = HTTP2Response;
HTTP2->Active = true;

HTTP2->GetAsync("/v1/status");

// gRPC: built on the HTTP/2 client, unary and streaming RPC
TsgcGRPCClient *GRPC = new TsgcGRPCClient(this);
GRPC->Client->Host = "https://grpc.example.com";
GRPC->OnGRPCResponse = GRPCResponse;

GRPC->CallAsync("example.OrderService", "GetOrder", RequestBytes);

void __fastcall TForm1::HTTP2Response(TObject *Sender,
    const TsgcHTTP2ConnectionClient* Connection,
    const TsgcHTTP2RequestProperty* Request,
    const TsgcHTTP2ResponseProperty* Response)
{
  Memo1->Lines->Add(Response->DataString);
}

void __fastcall TForm1::GRPCResponse(TObject *Sender,
    const TsgcGRPCResponse* aResponse)
{
  Memo1->Lines->Add(aResponse->DataString);
}

void __fastcall TForm1::ServerCommandGet(TIdContext *AContext,
    TIdHTTPRequestInfo *ARequestInfo, TIdHTTPResponseInfo *AResponseInfo)
{
  if (ARequestInfo->Document == "/api/status")
  {
    AResponseInfo->ContentType = "application/json";
    AResponseInfo->ContentText = "{\"status\":\"ok\"}";
  }
}

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

HTTP/2 クライアントと gRPC クライアントは sgcCustomIndy の上に構築されており、sgcWebSockets 自体と同じプラットフォーム範囲をカバーします。Google Cloud クライアントは素の HTTPS のため、Core ランタイムが動作する場所であればどこでも動作します。

TsgcHTTP2Client & TsgcGRPCClient ALPN のために sgcCustomIndy の上に構築
Windows Win32 Windows Win64 Linux64 macOS iOS Android
Google Cloud クライアント 素の HTTPS で、sgcCustomIndy は不要
Windows Win32 Windows Win64 Linux64 macOS iOS Android
IDE 対応 ソースツリーは 1 つで、設計時パッケージはバージョンごとに用意されています
Delphi 7 から 13 C++ Builder
体験版インストーラー sgcWebSockets All-Access の体験版には sgcHTTP コンポーネントが含まれています
1 つのダウンロードで、サーバーと 5 つのクライアントすべて

体験版インストーラーをダウンロード →

単体で完結するパッケージ

sgcHTTP は単体でライセンスされ、開発者 1 名向けの €398 から始められます。すべてのライセンスに、完全なソースコード、1 年間のアップデート、更新時 50% から 70% の割引が含まれます。パック 1 つの更新で 50%、2 つで 60%、3 つ以上で 70% になります。sgcAI、sgcMQ、sgcSocial、sgcCustomIndy、sgcAuth、sgcHTTP、sgcREST はそれぞれ 1 パックとして数えます。sgcHTTP は All-Access バンドルにも含まれています。

sgcHTTP

€398

Single、Team、Site の各ライセンスをご用意しています。

  • 静的ファイル、セッション、TLS に対応した HTTP サーバー
  • 多重化と HPACK に対応した HTTP/2 クライアント
  • 単項呼び出しとストリーミング RPC に対応した gRPC クライアント
  • Google Cloud の Pub/Sub、Calendar、FCM クライアント
  • sgcWebSockets Core ランタイムを同梱
  • Delphi 7 から 13 & C++ Builder
  • 完全なソースコード
  • 1 年間のアップデート

HTTP/2 と gRPC には sgcCustomIndy アドオンが必要です。注文に常に含まれ、表示されている価格にすでに含まれています。

購入手続きには 3 つの項目が表示されます。金額 0 で計上される sgcWebSockets Core ランタイムの利用権、sgcHTTP パック本体、そして常に含まれる sgcCustomIndy アドオンです。価格の詳細はこちら。

3,000+開発者
20+年
761+コンポーネント
30+API 連携
5プラットフォーム
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

ネイティブコードから、モダンな HTTP、gRPC、Google Cloud を

HTTP サーバー、多重化された HTTP/2、ストリーミング gRPC、そして 3 つの Google Cloud クライアントを扱えます。ランタイムを同梱し、完全なソースコードも同梱済みです。All-Access の体験版インストーラーをダウンロードして、今日にもすべてのコンポーネントを試してみてください。

eSeGeCe のその他の製品

sgcHTTP と、Delphi、C++ Builder、.NET 向けの他のコンポーネントライブラリを組み合わせてご利用いただけます。

sgcCustomIndy

sgcHTTP の HTTP/2 クライアントと gRPC クライアントが土台とするカスタム Indy ライブラリです。ALPN、TLS 1.3、静的 OpenSSL リンクに対応します。

詳しく見る →

sgcWebSockets

フルライブラリです。WebSocket のクライアントとサーバー、HTTP/2、gRPC、IoT、P2P、AI の各コンポーネントを収録しています。Enterprise エディションには gRPC も含まれています。

詳しく見る →

sgcAI

AI、LLM、MCP のコンポーネントです。1 つのチャットコンポーネントで OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok、Mistral に接続できます。

詳しく見る →

sgcMQ

ネイティブな MQTT 3.1.1/5.0、AMQP 0.9.1、AMQP 1.0、Apache Kafka、STOMP のクライアントコンポーネントで、Core ランタイムを同梱しています。

詳しく見る →

sgcSocial

WhatsApp Business Cloud API と Telegram TDLib のクライアントコンポーネントで、Core ランタイムを同梱しています。

詳しく見る →

sgcQUIC

OpenSSL 3.5 のネイティブ QUIC エンジン上に構築された、QUIC(RFC 9000)および HTTP/3(RFC 9114)のクライアント・サーバーコンポーネントです。

詳しく見る →

sgcWebRTC

Delphi と C++ Builder 向けのフル機能 WebRTC メディアエンジンです。音声・動画通話、データチャネル、画面共有に対応し、STUN/TURN/ICE を内蔵しています。sgcWebSockets Enterprise のアドオンです。

詳しく見る →

sgcCrypto

Delphi と C++ Builder 向けの汎用暗号ライブラリです。対称・非対称暗号、ハッシュ、鍵管理に対応します。sgcWebSockets Standard 以上に無料で同梱、または単体でも利用できます。

詳しく見る →