sgcHTTP:面向 Delphi 和 C++ Builder 的 HTTP/2、gRPC 与 Google Cloud 组件
独立产品 HTTP/2、gRPC 与 Google Cloud

sgcHTTP:面向 Delphi 和 C++ Builder 的 HTTP/2、gRPC 与 Google Cloud 组件

五个客户端组件,涵盖三大类任务。TsgcHTTP2Client 在一条 TLS 连接上以多路复用流的方式使用 HTTP/2 协议,并采用 HPACK 头部压缩。TsgcGRPCClient 是构建在其之上的 gRPC 客户端,用于一元和流式 Protocol Buffers 调用。另外三个类通过纯 HTTPS 对接 Google Cloud:Pub/Sub、Calendar 和 Firebase Cloud Messaging。sgcHTTP 是独立产品,内置这五者所基于的 sgcWebSockets Core 运行时。

完整源代码
Delphi 7 到 13 和 C++ Builder
内置运行时 sgcWebSockets Core 所有客户端底层共用的 HTTP、TLS 和 JSON 运行时
HTTP/2 TsgcHTTP2Client
gRPC TsgcGRPCClient
2 面板组件 HTTP/2 客户端和 gRPC 客户端,面板上的一个页面
5 客户端类总数 HTTP/2、gRPC 和三个 Google Cloud 客户端
3 Google Cloud 服务 Pub/Sub、Calendar 和 Firebase Cloud Messaging
100% 包含源代码 全部五个客户端及内置的 Core 运行时
12 个月更新 授权有效期内发布的每个版本

两件值得先了解的事

sgcHTTP 需要您准备什么,以及不需要什么。两个答案都很简短。

sgcHTTP 是自包含的

作为独立产品,已包含 sgcWebSockets Core 运行时:每个组件发出请求所使用的 HTTP/TLS 客户端栈,以及解析 Google Cloud 响应的 JSON 层。一个 SKU,一个安装程序。

每份授权都附带完整源代码,因此全部五个客户端及其底层运行时都可以在您自己的调试器中单步跟踪,而不会消失在二进制文件里。

五分之二需要附加包

HTTP/2 和 gRPC 需要 sgcCustomIndy

HTTP/2 在 TLS 握手期间通过 ALPN 协商 h2 协议,而 RAD Studio 自带的标准 Indy 库不支持 ALPN。因此 sgcHTTP 的 HTTP/2 客户端和 gRPC 客户端改为构建在 sgcCustomIndy 之上,订购 sgcHTTP 时会自动添加到您的购物车。已经拥有授权?可以在结账时移除。

三个 Google Cloud 客户端 Pub/Sub、Calendar 和 Firebase Cloud Messaging 都是纯 HTTPS。它们直接运行在 Core 运行时之上,完全不需要 sgcCustomIndy。

两个面板组件,三个 Google Cloud 客户端

HTTP/2 客户端和 gRPC 客户端是 SGC HTTP 面板页上的非可视化组件,声明在 sgcHTTP 单元中。可以拖放到窗体上,也可以在代码中创建,设置连接选项,接好事件,然后调用带类型的请求方法。三个 Google Cloud 客户端位于同一个单元中,是纯代码类,没有可拖放到窗体上的内容:创建一个实例,设置 GoogleCloudOptions,然后直接调用其方法。

HTTP/21 个组件

在一条 TLS 连接上实现多路复用流

TsgcHTTP2Client 使用 HTTP/2(RFC 9113)协议:多个请求作为独立的流共享同一条 TCP 连接,因此一个响应慢不会阻塞排在它后面的其他请求。头部使用 HPACK 压缩,h2 协议在 TLS 握手期间通过 ALPN 协商,这也是该组件构建在 sgcCustomIndy 而非标准 Indy 库之上的原因。所有动词均已覆盖:ConnectGetPostPutPatchDeleteOptions,每一个都有同步调用和对应的 Async 版本。事件覆盖连接的整个生命周期:OnHTTP2ConnectOnHTTP2Response、用于分块响应体的 OnHTTP2ResponseFragment、用于服务器推送的 OnHTTP2PushPromise,以及 OnHTTP2GoAwayOnHTTP2DisconnectHTTP2Options 配置本地设置帧,TLSOptionsAuthentication 则沿用 sgc HTTP 技术栈的其余部分。

TsgcHTTP2Client 需要 sgcCustomIndy
gRPC1 个组件

基于 HTTP/2 客户端的一元和流式 RPC

TsgcGRPCClient 构建在 HTTP/2 客户端之上,因此继承了多路复用连接,并在其上添加了 gRPC 线路格式:在 HTTP/2 流上传输带长度前缀的 Protocol Buffers 消息。CallCallAsync 覆盖一元 RPC,ServerStreamingCall 处理针对一个请求的响应流,OpenClientStream/SendStreamMessage/CloseClientStream 以及 OpenBidiStream/SendBidiMessage/CloseBidiStream 则覆盖客户端流式和双向流式 RPC。OnGRPCResponseOnGRPCStreamMessageOnGRPCStreamEnd 负责传递流量,RetryPolicyInterceptorsServiceConfig 在不改动调用点的情况下添加重试行为、横切逻辑和服务配置。与它所基于的 HTTP/2 客户端一样,它也需要 sgcCustomIndy 来支持 ALPN。

TsgcGRPCClient 需要 sgcCustomIndy
Google Cloud3 个类

Pub/Sub、Calendar 与推送通知,纯 HTTPS

另外三个类通过纯 HTTPS 对接 Google Cloud 服务,使用 Google 服务账号进行身份验证,且都不需要 sgcCustomIndy。TsgcHTTPGoogleCloud_PubSub_Client 发布和拉取消息,并管理主题、订阅和快照:PublishPullAcknowledgeCreateTopicCreateSubscription,以及其余 Pub/Sub REST 接口。TsgcHTTPGoogleCloud_Calendar_Client 封装了 Google Calendar API v3:NewCalendarNewEventLoadEventsLoadCalendars,并提供 OnGetCalendarOnGetCalendarEvent 事件用于同步。TsgcHTTPGoogleCloud_FCM_Client 只需一次调用 SendMessage 即可向 Firebase 项目发送推送通知负载。三者都是纯代码类:创建实例,设置 GoogleCloudOptions,调用方法即可。

TsgcHTTPGoogleCloud_PubSub_Client TsgcHTTPGoogleCloud_Calendar_Client TsgcHTTPGoogleCloud_FCM_Client

两个依赖,而不是五个

这五个类根据底层所需依赖清晰地分成两组。HTTP/2 和 gRPC 需要 ALPN,也就是需要 sgcCustomIndy。Google Cloud 除了 HTTPS 和一个服务账号之外什么都不需要,而内置的 Core 运行时已经提供了这些。

HTTP/2 需要 ALPN,因此需要 sgcCustomIndy

应用层协议协商(ALPN)在 TLS 握手期间选定 h2 协议,而 RAD Studio 自带的标准 Indy 库不支持 ALPN。因此 TsgcHTTP2Client 改为构建在 eSeGeCe 定制的 Indy 编译版本 sgcCustomIndy 之上。

gRPC 是搭载在 HTTP/2 客户端上的 Protocol Buffers

TsgcGRPCClient 不会打开自己的连接,它的 Client 属性就是一个 TsgcHTTP2Client。一元、服务端流式、客户端流式和双向调用底层都是作为 HTTP/2 流传输的。

Google Cloud 就是 HTTPS 加一个服务账号

三个 Google Cloud 客户端使用 GoogleCloudOptions.JWT 进行身份验证,即 Google 服务账号的项目 id、客户端邮箱和私钥,并通过 Core 运行时的纯 HTTPS 栈调用 REST API。OnAuthTokenOnAuthTokenError 呈现令牌交换过程。

内置 Core 运行时

作为独立产品,已包含 sgcWebSockets Core 运行时。它提供全部五个客户端调用所使用的 HTTP/TLS 客户端栈,其完整源代码也和其他一切一样,是本产品包的一部分。

HTTP/2 与 gRPC,并肩使用

两个组件都声明在 sgcHTTP 单元中,TsgcGRPCClient 通过其 Client 属性携带自己的 HTTP/2 连接。同一份代码可在 Delphi 7 到 13 以及 C++ Builder 中编译。

uses
  sgcHTTP;

var
  HTTP2: TsgcHTTP2Client;
  GRPC: TsgcGRPCClient;
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');

  // 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;
// include: sgcHTTP.hpp

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

两个客户端需要一个依赖,另外三个则不需要

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 支持 一份源码树,每个版本各有设计期包
Delphi 7 到 13 C++ Builder
试用安装程序 sgcWebSockets All-Access 试用版包含 sgcHTTP 组件
一次下载,全部五个类

下载试用安装程序 →

一个独立的包

sgcHTTP 单独授权,单个开发者起价 €249。所有授权均包含完整源代码、1 年更新,以及 50% 到 70% 的续订折扣:续订 1 个包为 50%,2 个包为 60%,3 个及以上为 70%。sgcAI、sgcMQ、sgcSocial、sgcCustomIndy、sgcAuth 和 sgcHTTP 各算作一个包。sgcHTTP 也包含在 All-Access 套装中。

sgcHTTP

€249

提供 Single、Team 和 Site 授权。

  • HTTP/2 客户端,支持多路复用和 HPACK
  • gRPC 客户端,支持一元和流式 RPC
  • Google Cloud Pub/Sub、Calendar 和 FCM 客户端
  • 已包含 sgcWebSockets Core 运行时
  • Delphi 7 到 13 和 C++ Builder
  • 完整源代码
  • 1 年更新

HTTP/2 和 gRPC 需要 sgcCustomIndy 附加包。结算时会自动添加,如果您已经拥有授权,可以将其移除。

结算页面会列出三项:计价为零的 sgcWebSockets Core 运行时授权、sgcHTTP 包本身,以及自动添加的 sgcCustomIndy 附加包。查看完整价格详情

3,000+Developers
20+Years
761+Components
30+API Integrations
5Platforms
30 天退款保证不满意?可在购买后 30 天内申请全额退款。 查看退款政策

在原生代码中使用现代 HTTP、gRPC 和 Google Cloud

多路复用 HTTP/2、流式 gRPC 以及三个 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 组件。一个聊天组件即可接入 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) 客户端和服务器组件。

了解更多 →