eSeGeCe — Delphi & .NET 向けエンタープライズ通信コンポーネント
注目 · sgcQUIC

往復を省略する

TCP と TLS では、レスポンスの最初の 1 バイトが届くまでに 3 回の往復が必要です。QUIC はトランスポートと暗号ハンドシェイクを 1 つに折りたたみ、再開されたコネクションは最初のパケットでデータを送信できます。sgcQUIC は、Delphi、C++ Builder、.NET に、ネイティブな QUIC トランスポートと、その上に構築された HTTP/3 のクライアントとサーバーを、OpenSSL 3.5 の QUIC エンジン上で提供します。

  • RFC 9000、9114、9204
  • WebTransport(RFC 9220)
  • 0-RTT とコネクションマイグレーション
  • Delphi · C++ Builder · .NET

QUIC と HTTP/3 を、RFC の仕様に忠実に実装

sgcQUIC は部分的な実装ではありません。トランスポート、フレーミング、ヘッダー圧縮、そして WebTransport 拡張のすべてを、ネイティブ OpenSSL 3.5 QUIC エンジンの上でカバーしています。

4 コンポーネント TsgcQUICClient、TsgcQUICServer、TsgcHTTP3Client、TsgcHTTP3Server が、1 つのパレットページにまとまっています。
9000 RFC 9000 QUIC トランスポートプロトコル: ストリーム、データグラム、フロー制御、コネクションマイグレーション。
9114 RFC 9114 HTTP/3。HTTP/2 と同じリクエスト/レスポンスのセマンティクスを、QUIC ストリーム上で運びます。
9204 RFC 9204 QPACK ヘッダー圧縮。QUIC の順不同なストリーム配信に対応するよう設計されています。
9220 RFC 9220 HTTP/3 上の WebTransport。1 つの Extended CONNECT リクエストで、双方向ストリームとデータグラムを実現します。
sgcQUIC

Delphi、C++ Builder、.NET 向けの、生の QUIC トランスポートと HTTP/3 のクライアントおよびサーバーです。sgcWebSockets Enterprise のアドオンとして、同じネイティブ OpenSSL 3.5 QUIC エンジン上で動作します。完全なソースコード、ロイヤリティフリーの配布。

生の QUIC、あるいはその上の HTTP/3

独自のフレーミングを使う素のトランスポートには TsgcQUICClientTsgcQUICServer を、ワイヤーフォーマットが HTTP であれば TsgcHTTP3ClientTsgcHTTP3Server を直接使用します。

RFC 9000

QUIC クライアント・サーバー

TsgcQUICClientTsgcQUICServer は、生の QUIC を話します: 1 つの暗号化されたコネクション上での複数の独立したストリーム、信頼性のないデータグラム、そしてセッション途中でクライアントの IP アドレスが変わった場合のコネクションマイグレーションです。

QUIC コンポーネントを見る →
RFC 9114

HTTP/3 クライアント・サーバー

TsgcHTTP3ClientTsgcHTTP3Server は、その上に HTTP のセマンティクスを重ねます: QPACK で圧縮されたリクエスト/レスポンスヘッダー、Alt-Svc によるディスカバリー、そしてすでに HTTP/2 のコードで使っているのと同じメソッドとステータスコードです。

HTTP/3 コンポーネントを見る →
0-RTT

セッション再開

以前に接続したことがあるクライアントは、ハンドシェイクが完了する前に、最初のパケットで最初のリクエストを送信できます。

マイグレーション

コネクションマイグレーション

IP アドレスではなく Connection ID がセッションを識別するため、スマートフォンが Wi-Fi からモバイル回線に切り替わっても、ストリームは開いたままです。

WebTransport

RFC 9220

1 つの Extended CONNECT リクエスト上での双方向ストリームと信頼性のないデータグラムを、WebTransport に対応したブラウザクライアントに提供します。

QUIC と HTTP/3 コンポーネントの実践ガイド:

HTTP/3 で 1 つのリクエストを送る

他の sgcWebSockets の HTTP クライアントと同じ形です: プロパティを設定し、イベントを処理し、メソッドを呼び出します。

uses
  sgcHTTP3_Client;
var
  vClient: TsgcHTTP3Client;
begin
  vClient := TsgcHTTP3Client.Create(nil);
  vClient.Host := 'api.example.com';
  vClient.Port := 443;
  vClient.OnResponse :=
    procedure(Sender: TObject; const AStatus: Integer; const ABody: string)
    begin
      Memo1.Lines.Add(Format('%d: %s', [AStatus, ABody]));
    end;
  vClient.OnAltSvc :=
    procedure(Sender: TObject; const AAltSvc: string)
    begin
      Memo1.Lines.Add('Alt-Svc: ' + AAltSvc);  // h3 advertised over HTTP/2
    end;
  vClient.Connect;
  vClient.Get('/pets/42');
end;
uses
  sgcQUIC_Client;
var
  vQUIC: TsgcQUICClient;
begin
  vQUIC := TsgcQUICClient.Create(nil);
  vQUIC.Host := 'quic.example.com';
  vQUIC.Port := 4433;
  vQUIC.EnableMultiStream := True;
  vQUIC.OnQUICConnect :=
    procedure(Sender: TObject)
    var
      vStreamId: Int64;
    begin
      vStreamId := vQUIC.OpenStream;
      vQUIC.WriteData(vStreamId, 'ping');
    end;
  vQUIC.OnQUICStreamData :=
    procedure(Sender: TObject; const AStreamId: Int64; const AData: string)
    begin
      Memo1.Lines.Add(Format('stream %d: %s', [AStreamId, AData]));
    end;
  vQUIC.Active := True;
end;

クライアントとサーバーは、双方で同じコネクション・ストリーム・データグラムモデルを共有します。完全な機能マトリックス →

1 つのポート、1 つの証明書、2 つのプロトコル

TsgcHTTP3Server は UDP ポート上で QUIC 経由の HTTP/3 を話します。一方、既存の HTTP/2 サーバーと TsgcHTTP3ServerBridge のような形でペアにすれば、レガシークライアントは引き続き TCP 上で動作できます。Alt-Svc をアドバタイズすれば、モダンなクライアントは自らアップグレードします。

HTTP3Server.pas
uses
  sgcHTTP3_Server;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FServer := TsgcHTTP3Server.Create(nil);
  FServer.Port := 443;
  FServer.QUICOptions.SSLOptions.CertFile := 'server.crt';
  FServer.QUICOptions.SSLOptions.KeyFile  := 'server.key';

  // One handler for every incoming HTTP/3 request
  FServer.OnH3Request :=
    procedure(const Ctx: TsgcHTTP3Context)
    begin
      if Ctx.Path = '/pets/42' then
        Ctx.RespondJSON(200, '{"name":"Rex"}')
      else
        Ctx.Respond(404, 'Not found');
    end;

  FServer.Active := True;
end;

これで得られるもの

QUIC を終端し、h3 をネゴシエートし、すべてのリクエストを 1 つのハンドラーにルーティングする、1 つの Delphi コンポーネントです。証明書は、すでに HTTP/2 サーバーが読み込んでいるものと同じものを使います。

Alt-Svc で、アップグレードは自動的に

通常の HTTP/2 レスポンスには Alt-Svc: h3=":443" ヘッダーが含まれます。これを理解するクライアントは、リダイレクトや別ドメインを介さずに、次のリクエストで QUIC を開きます。

WebTransport を、同じポートで

Extended CONNECT リクエストがストリームを WebTransport にアップグレードし、通常の HTTP/3 リクエストと並行して、ブラウザクライアントに双方向ストリームとデータグラムを提供します。

ネイティブ QUIC、外部依存なし

QUIC と TLS 1.3 のハンドシェイクは、OpenSSL 3.5 自身の QUIC エンジン上で動作します。別途ビルドしたりベンダリングしたりする QUIC ライブラリはありません。

OpenSSL 3.5 TLS 1.3 Alt-Svc QPACK WebTransport

HTTP/3 サーバーコンポーネント →

sgcQUIC は sgcWebSockets Enterprise のアドオンです。ライセンス、サポート窓口、アップデートの頻度は、すでにお使いのものがそのまま適用されます。

9 つのライブラリ、1 つのツールボックス

sgcQUIC は、Delphi、C++ Builder、.NET 向けの eSeGeCe コンポーネントライブラリ 9 製品のひとつです。共通の設計思想を持ち、完全なソースが付属し、ロイヤリティフリーで配布できます。

sgcQUIC

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

詳しく見る →

sgcWebSockets

WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI、そして 30 を超える API 統合。sgcQUIC の土台となる Enterprise ライセンスです。

詳しく見る →

sgcHTML

Bootstrap 5 と htmx を基盤とする、サーバーサイド HTML / UI コンポーネント。同じ HTTP/3 トランスポート上で、レンダリングされた UI を配信できます。

詳しく見る →

sgcAI

Delphi と C++ Builder 向けの AI、LLM、MCP コンポーネント。1 つのコンポーネントで 7 社の LLM プロバイダーに対応し、MCP、埋め込み、音声も利用できます。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

詳しく見る →

sgcMQ

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

詳しく見る →

sgcAuth

Delphi と C++ Builder 向けの OAuth2 クライアント、JWT クライアント、WebAuthn 対応。任意の OAuth2/OIDC プロバイダーでサインインし、JWT を発行・検証し、ネイティブアプリにパスキー認証を追加できます。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

詳しく見る →

sgcHTTP

Delphi と C++ Builder 向けの HTTP/2 クライアント、gRPC クライアント、そして Google Cloud の Pub/Sub、Calendar、FCM クライアントです。単体製品で、sgcWebSockets Core ランタイムを同梱しています。

詳しく見る →

sgcREST

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

詳しく見る →

sgcOpenAPI

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

詳しく見る →

sgcSign

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

詳しく見る →

sgcBiometrics

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

詳しく見る →

sgcIndy

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

詳しく見る →

価格とエディションを見る 体験版をダウンロード

開発者の声

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

sgcWebSockets ライブラリはとても便利でセットアップも簡単です。これからも頑張ってください!

Simone Moretti Delphi Developer

sgcWebSockets は素晴らしく、サポートも最高です!

Christian Meyer Founder & CTO

ご支援とサポートに本当に感謝しています。コンポーネントが大好きです。

Mark Steinfeld CTO

ブログの最新記事

すべての記事を見る →

現在は eSeGeCe の QUIC ビューを表示しています。

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

IDE を離れずに QUIC と HTTP/3 を実装

生の QUIC トランスポート、HTTP/3 のクライアントとサーバー、そして WebTransport を、OpenSSL 3.5 の QUIC エンジン上で。完全なソースコード、ロイヤリティフリーの配布、sgcWebSockets Enterprise のアドオンとして。