sgcQUIC — Delphi、C++ Builder、.NET 向け QUIC & HTTP/3

sgcQUIC — Delphi、C++ Builder、.NET 向け QUIC & HTTP/3

Delphi、C++ Builder、.NET 向けの完全な QUIC・HTTP/3 スタックです。sgcQUIC は 4 つのパレットコンポーネント — 生の QUIC トランスポートのクライアントとサーバー(RFC 9000)、および HTTP/3 のクライアントとサーバー(RFC 9114) — を、OpenSSL 3.5 のネイティブ QUIC エンジン上に構築して提供します。QPACK ヘッダー圧縮、Alt-Svc によるディスカバリー、0-RTT、コネクションマイグレーション、WebTransport を標準搭載しており、同じ API が Object Pascal と C# の両方で動作します。

QUIC トランスポート(RFC 9000)
HTTP/3(RFC 9114)+ QPACK
OpenSSL 3.5 ネイティブ QUIC
Delphi / C++ Builder / .NET
WebTransport(RFC 9220)

同じ HTTP セマンティクス、新しいトランスポート

HTTP/3 は、すでにおなじみのメソッド、ステータスコード、ヘッダーをそのまま使いながら、TCP を QUIC に置き換えます。QUIC は TLS 1.3 を内蔵した UDP ベースのトランスポートです。sgcQUIC は OpenSSL 3.5 のネイティブ QUIC サポートを通じてこれを制御するため、別のライブラリを用意することなく、Delphi、C++ Builder、.NET からモダンなトランスポートを利用できます。

1 回のハンドシェイク、ヘッドオブラインブロッキングなし

QUIC(RFC 9000)は、トランスポートと TLS 1.3 のハンドシェイクを 1 回のやり取りに統合し、トランスポートレベルのヘッドオブラインブロッキングを取り除きます — パケットが失われても、そのデータを運んでいたストリームだけが止まり、コネクション全体は止まりません。

OpenSSL 3.5 のネイティブ QUIC 上に構築

エンジンは OpenSSL のロード時に自動的に検出されます。同梱の OpenSSL 3.5 バイナリを使うと qmBuiltin エンジンが有効になり、1 つのコネクションで複数のストリームを扱えます。これはコンポーネントの中心となっているエンジンです。

QPACK ヘッダー圧縮

HTTP/3 は QPACK(RFC 9204)でヘッダーを圧縮します。QPACK は HTTP/3 における HPACK の後継で、QUIC の順不同配信に対応するよう設計されており、動的テーブルの更新は専用のエンコーダー・デコーダーストリームで伝送されます。

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

QUIC のコネクションはアドレスの 4 つ組ではなく connection ID によって識別されるため、クライアントがネットワークを切り替えてもセッションは維持されます — デバイスが Wi-Fi からモバイルデータに移っても、新たなハンドシェイクなしにコネクションを追従させられます。

0-RTT と複数ストリーム

新規コネクションは 1 回の往復で確立し、再開されたセッションは最初のやり取りで 0-RTT データを運べます。builtin エンジンでは、EnableMultiStreamOpenStream により、1 つのコネクション上に複数の独立した QUIC ストリームを配置できます。

WebTransport セッション

WebTransport(RFC 9220)は Extended CONNECT 経由でネゴシエートされ、アプリケーションに QUIC ストリームを直接渡します。builtin エンジン上で、低遅延な双方向トラフィック向けに設計されています。

4 つのコンポーネント、2 つのレイヤー

ストリームとデータグラムのための生の QUIC トランスポートのペアと、同じエンジン上でリクエスト/レスポンスを扱う HTTP/3 のペアです。それぞれが Delphi、C++ Builder、.NET のサンプルを備えた専用ページにリンクしています。

TsgcQUICClient

生の QUIC トランスポートクライアントです。QUIC コネクションを開き、1 つまたは複数のストリーム(RFC 9000)でバイト列を送受信します。0-RTT とコネクションマイグレーションに対応 — HTTP セマンティクスを伴わない QUIC です。

コンポーネントを見る →

TsgcQUICServer

生の QUIC トランスポートサーバーです。UDP ポートをバインドし、TLS 1.3 を終端し、QUIC のコネクションとストリームごとにイベントを発生させます。QUIC の上に独自のプロトコルを構築できます。

コンポーネントを見る →

TsgcHTTP3Client

HTTP/3 クライアント(RFC 9114)です。すべてのメソッドをブロッキングまたは非同期の呼び出しとして提供し、QPACK 圧縮、Alt-Svc によるディスカバリー、サーバープッシュ、Extended CONNECT トンネル、WebTransport セッションに対応します。

コンポーネントを見る →

TsgcHTTP3Server

HTTP/3 サーバーです。QUIC 上でリクエストを処理し、TsgcQUICServer を継承します。リクエストごとにイベントを発生させ、レスポンスのプッシュ、WebTransport セッションのオープン、データグラムの送信が可能です。

コンポーネントを見る →

完全な機能マトリックスを見る →

HTTP/3 での GET リクエスト

ホストとポートに接続し、リクエストを発行します。デフォルトポートは 443 です。Delphi、C++ Builder、.NET で同じ API を使用します。

uses
  sgcHTTP3_Client;

var
  oClient: TsgcHTTP3Client;
  vBody: string;
begin
  oClient := TsgcHTTP3Client.Create(nil);
  oClient.OnResponse := OnResponseHandler;
  oClient.OnAltSvc   := OnAltSvcHandler;

  oClient.Connect('www.example.com', 443);
  vBody := oClient.Get('https://www.example.com/');   // request over QUIC
  oClient.Disconnect;
end;
// includes: sgcHTTP3_Client.hpp

TsgcHTTP3Client *oClient = new TsgcHTTP3Client(NULL);
oClient->OnResponse = OnResponseHandler;
oClient->OnAltSvc   = OnAltSvcHandler;

oClient->Connect("www.example.com", 443);
String vBody = oClient->Get("https://www.example.com/");   // request over QUIC
oClient->Disconnect();
using esegece.sgcWebSockets;

var oClient = new TsgcHTTP3Client();
oClient.OnResponse += OnResponseHandler;
oClient.OnAltSvc   += OnAltSvcHandler;

oClient.Connect("www.example.com", 443);
var vBody = oClient.Get("https://www.example.com/");   // request over QUIC
oClient.Disconnect();

sgcQUIC が実装する RFC

独自のトランスポートではなく、標準に基づいたスタックです。

RFC 9000 — QUIC

QUIC トランスポート: トランスポートと TLS 1.3 のハンドシェイクを統合した単一の手順、独立したストリーム、connection ID、マイグレーションです。TsgcQUICClientTsgcQUICServer を通じて直接公開されます。

RFC 9114 — HTTP/3

QUIC 上の HTTP セマンティクス: おなじみのメソッド、ステータスコード、ヘッダーを QUIC ストリームにマッピングします。TsgcHTTP3ClientTsgcHTTP3Server が実装しています。

RFC 9204 — QPACK

HTTP/3 向けのヘッダー圧縮で、QUIC の順不同配信に対応するよう設計されています。動的テーブルは専用のエンコーダー・デコーダーストリームで同期されます。

RFC 9220 — WebTransport

Extended CONNECT を用いて HTTP/3 上で WebTransport をブートストラップし、低遅延な双方向トラフィックのためにアプリケーションへ QUIC ストリームを渡します。

sgcWebSockets のアドオン

sgcQUIC はアドオンとしてライセンスされます。すべてのライセンスには、完全なソースコード、1 年間のアップデート、70% の更新割引が含まれます。

sgcQUIC

€149

Single、Team、Site の各ライセンスをご用意しています。完全なソースコードが含まれます。

  • TsgcQUICClient & TsgcQUICServer
  • TsgcHTTP3Client & TsgcHTTP3Server
  • Delphi、C++ Builder & .NET
  • 完全なソースコード
  • 1 年間のアップデート

★ sgcWebSockets が必要です

sgcQUIC には sgcWebSockets Enterprise が必要です。

価格を見て注文する
3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

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

モダンな Web が向かっているトランスポートを、すでに使い慣れた言語のまま、あなたの Delphi、C++ Builder、.NET アプリケーションに追加できます。

eSeGeCe のその他の製品

sgcQUIC を、他の Delphi、C++ Builder、.NET コンポーネントライブラリと組み合わせましょう。

sgcWebSockets

エンタープライズ向けの WebSocket、HTTP/2、MQTT、AMQP、WebRTC、AI/LLM コンポーネントです。sgcQUIC は sgcWebSockets Enterprise のアドオンです。

詳しく見る →

sgcHTML

Delphi、C++ Builder、.NET 向けの、データアウェアなサーバーサイド HTML/UI コンポーネント 89 種類。Bootstrap 5 と htmx を採用しています。

詳しく見る →

sgcSign

エンタープライズ向けデジタル署名 — XAdES、PAdES、CAdES、ASiC に対応し、10 種類のキープロバイダーと EU 21 か国のプロファイルを備えています。

詳しく見る →

sgcOpenAPI

OpenAPI 3.0 パーサーと SDK ジェネレーター。任意の OpenAPI 仕様を、数秒で厳密に型付けされた Delphi クライアントに変換します。

詳しく見る →

sgcBiometrics

Delphi と C++ Builder 向けの、ネイティブな Windows Hello、指紋認証、Windows Biometric Framework コンポーネント。

詳しく見る →

sgcIndy

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

詳しく見る →