sgcHTTP 功能矩阵:HTTP/2、gRPC 与 Google Cloud | eSeGeCe

sgcHTTP 功能矩阵

sgcHTTP 的全部能力,对应到 HTTP/2 客户端、gRPC 客户端和三个 Google Cloud 客户端。每项能力在 Delphi 和 C++ Builder 中的表现完全一致,每份授权都提供完整源代码。本次发布尚未提供各组件的独立子页面,以下每一项内容都直接呈现在本页上。

HTTP/2 客户端

多路复用流、HPACK、ALPN

gRPC 客户端

一元和流式 RPC

Google Cloud

Pub/Sub、Calendar 和 FCM

标准与平台

Delphi 7 至 13,C++ Builder

sgcHTTP 是自包含的。它内置了 sgcWebSockets Core 运行时,因此它不是附加组件。

HTTP/2 和 gRPC 需要 sgcCustomIndy。这两个类都需要 ALPN 来完成 TLS 协议协商,而标准 Indy 库不支持 ALPN,因此它们改为构建在 sgcCustomIndy 之上,会自动添加到您的订单中。三个 Google Cloud 客户端是纯 HTTPS,不需要它。

五个类,一个单元

SGC HTTP 面板页上的两个组件,以及三个纯代码 Google Cloud 类,全部声明在 sgcHTTP 单元中。

组件是否在面板上描述
HTTP/2 客户端TsgcHTTP2Client原生 HTTP/2 客户端:多路复用流、HPACK 头部压缩、ALPN 协商。需要 sgcCustomIndy。
gRPC 客户端TsgcGRPCClient构建在 HTTP/2 客户端之上的 gRPC 客户端:一元、服务端流式、客户端流式和双向 RPC。需要 sgcCustomIndy。
Google Cloud Pub/SubTsgcHTTPGoogleCloud_PubSub_Client否,纯代码Google Cloud Pub/Sub REST API:主题、订阅、快照、发布和拉取。基于 Core 的纯 HTTPS。
Google Cloud CalendarTsgcHTTPGoogleCloud_Calendar_Client否,纯代码Google Calendar API v3:日历和事件的创建、更新、列出和删除。基于 Core 的纯 HTTPS。
Google Cloud FCMTsgcHTTPGoogleCloud_FCM_Client否,纯代码Firebase Cloud Messaging HTTP v1 API:一次调用即可发送推送通知负载。基于 Core 的纯 HTTPS。

多路复用请求、HPACK、ALPN

TsgcHTTP2Client 在一条通过 ALPN 协商的 TLS 连接上使用 HTTP/2(RFC 9113),这也是它构建在 sgcCustomIndy 之上的原因。

能力API说明
连接HostPortActive一条 TLS 连接承载所有多路复用的请求流。
连接方法ConnectConnectAsync打开连接,并可在同一次调用中发出一个可选请求。
读取GetGetAsync同步调用,或触发即忘、通过事件送达响应。
写入PostPostAsyncPutPutAsyncPatchPatchAsync请求体是流,因此上传内容无需完全载入内存。
Delete 与 OptionsDeleteDeleteAsyncOptionsOptionsAsync其余的 HTTP 动词,同样成对提供同步/异步版本。
响应OnHTTP2Response同时送达请求和响应对象,包括 Response.DataString 和状态码。
分块响应体OnHTTP2ResponseFragment在最终的 OnHTTP2Response 之前,分块响应的每个片段到达时触发。
服务器推送OnHTTP2PushPromiseHTTP/2 服务器推送的资源到达时呈现出来。
连接生命周期OnHTTP2ConnectOnHTTP2DisconnectOnHTTP2GoAwayOnHTTP2RSTStreamHTTP/2 定义的连接、断开和流重置信号。
设置HTTP2OptionsSettings发送给对端的本地 HTTP/2 SETTINGS 帧取值。
可靠性WatchDogHeartBeatThrottle自动重连、保活和请求限流,与 sgc HTTP 技术栈的其余部分共用。
身份验证与 TLSAuthenticationTLSOptionsOnHTTP2Authorization标准身份验证方案与 TLS 配置,外加一个用于自定义授权头的钩子。
依赖sgcCustomIndyALPN 在 TLS 握手期间协商 h2 协议;标准 Indy 库无法做到这一点。

一元、服务端流式、客户端流式与双向流式

TsgcGRPCClient 通过 HTTP/2 客户端的多路复用流传输 Protocol Buffers 负载,因此覆盖全部四种 gRPC 调用形态。

能力API说明
传输Client一个 TsgcHTTP2Client 实例;gRPC 客户端搭载在其上,而不是自行打开连接。
一元 RPCCallCallAsyncCallString一个请求,一个响应。Call 阻塞并返回一个 TsgcGRPCResponseCallAsync 通过 OnGRPCResponse 送达结果。
服务端流式ServerStreamingCall一个请求,响应以流的形式通过 OnGRPCStreamMessage 持续送达,直到 OnGRPCStreamEnd
客户端流式OpenClientStreamSendStreamMessageCloseClientStreamCloseClientStreamAsync请求以流的形式发送,流关闭时得到一个最终响应。
双向流式OpenBidiStreamSendBidiMessageCloseBidiStream同一次调用中,双方各自独立地进行流式传输。
取消CancelCall根据流 id 取消正在进行的调用。
响应OnGRPCResponseOnGRPCStreamMessageOnGRPCStreamEndTsgcGRPCResponse 携带 StatusCodeData/DataStringHeadersTrailers
错误OnGRPCErrorOnGRPCExceptiongRPC 状态码错误与传输层异常分别送达。
元数据DefaultMetadataOnGRPCBeforeRequest按调用设置的以及默认的 gRPC 元数据头。
弹性RetryPolicyInterceptorsServiceConfig重试行为、横切拦截器链和服务配置,无需改动各个调用点。
可观测性MetricsCollector为客户端收集调用指标。
依赖sgcCustomIndy继承自其所基于的 HTTP/2 客户端;同样需要 ALPN。

Pub/Sub、Calendar 与推送通知

三个纯代码类,使用 Google 服务账号进行身份验证,通过纯 HTTPS 访问。均不需要 sgcCustomIndy。

能力API说明
身份验证GoogleCloudOptions.JWTOnAuthTokenOnAuthTokenError服务账号 JWT:项目 id、客户端邮箱和私钥。三个客户端形式统一。
Pub/Sub:发布与拉取PublishPullAcknowledgeSeekTsgcHTTPGoogleCloud_PubSub_Client。向主题发送消息,从订阅拉取并确认消息。
Pub/Sub:主题CreateTopicDeleteTopicGetTopicListTopics直接从代码管理主题。
Pub/Sub:订阅CreateSubscriptionDeleteSubscriptonListSubscriptionsModifyAckDeadlineSubscription完整的订阅生命周期,包括确认期限和推送配置的更改。
Pub/Sub:快照CreateSnapshotDeleteSnapshotListSnapshots为订阅的确认状态创建快照,供之后重放。
Calendar:日历NewCalendarUpdateCalendarDeleteCalendarLoadCalendarsTsgcHTTPGoogleCloud_Calendar_Client。封装 Google Calendar API v3 的日历列表。
Calendar:事件NewEventUpdateEventDeleteEventLoadEvents在指定日历上创建、修改和删除事件。
Calendar:同步LoadCalendarsChangedLoadEventsChangedOnGetCalendarOnGetCalendarEvent针对自上次同步以来发生变化的日历和事件的增量同步钩子。
FCM:推送SendMessageTsgcHTTPGoogleCloud_FCM_Client。一次调用即可向项目发送 Firebase Cloud Messaging v1 负载。
TLS 与日志TLSOptionsLogFile三个 Google Cloud 客户端共用。

API、编译器与目标平台

线路层面采用公开标准,并在每个受支持编译器上使用同一份源代码。

方面细节
HTTP/2RFC 9113,采用 HPACK 头部压缩和 ALPN 协议协商。
gRPC遵循 gRPC 线路协议,在 HTTP/2 流上传输 Protocol Buffers 负载。
Google CloudPub/Sub REST API、Google Calendar API v3 和 Firebase Cloud Messaging HTTP v1 API,均使用 Google 服务账号进行身份验证。
平台全部五个类均支持 Windows Win32、Windows Win64、Linux64、macOS、iOS 和 Android。
依赖HTTP/2 和 gRPC 客户端需要 sgcCustomIndy 来支持 ALPN。Google Cloud 客户端只需要内置的 Core 运行时。
编译器Delphi 和 C++ Builder 7 至 13。
版本HTTP/2 自 Professional 版本起也随 sgcWebSockets 提供,gRPC 自 Enterprise 版本起提供,Google Cloud 客户端自 Standard 版本起提供。
授权独立产品。已内置 sgcWebSockets Core 运行时,并包含完整源代码。
超值之选:All-AccesseSeGeCe 全部产品,含高级支持,每年 €1,059 起。
查看 All-Access 价格

用 sgcHTTP 构建

下载免费试用版,从 Delphi 或 C++ Builder 发起您的第一次 HTTP/2 或 gRPC 调用。