sgcHTTP 功能矩阵
sgcHTTP 的全部能力,对应到 HTTP/2 客户端、gRPC 客户端和三个 Google Cloud 客户端。每项能力在 Delphi 和 C++ Builder 中的表现完全一致,每份授权都提供完整源代码。本次发布尚未提供各组件的独立子页面,以下每一项内容都直接呈现在本页上。
sgcHTTP 的全部能力,对应到 HTTP/2 客户端、gRPC 客户端和三个 Google Cloud 客户端。每项能力在 Delphi 和 C++ Builder 中的表现完全一致,每份授权都提供完整源代码。本次发布尚未提供各组件的独立子页面,以下每一项内容都直接呈现在本页上。
多路复用流、HPACK、ALPN
一元和流式 RPC
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/Sub | TsgcHTTPGoogleCloud_PubSub_Client | 否,纯代码 | Google Cloud Pub/Sub REST API:主题、订阅、快照、发布和拉取。基于 Core 的纯 HTTPS。 |
| Google Cloud Calendar | TsgcHTTPGoogleCloud_Calendar_Client | 否,纯代码 | Google Calendar API v3:日历和事件的创建、更新、列出和删除。基于 Core 的纯 HTTPS。 |
| Google Cloud FCM | TsgcHTTPGoogleCloud_FCM_Client | 否,纯代码 | Firebase Cloud Messaging HTTP v1 API:一次调用即可发送推送通知负载。基于 Core 的纯 HTTPS。 |
TsgcHTTP2Client 在一条通过 ALPN 协商的 TLS 连接上使用 HTTP/2(RFC 9113),这也是它构建在 sgcCustomIndy 之上的原因。
| 能力 | API | 说明 |
|---|---|---|
| 连接 | Host、Port、Active | 一条 TLS 连接承载所有多路复用的请求流。 |
| 连接方法 | Connect、ConnectAsync | 打开连接,并可在同一次调用中发出一个可选请求。 |
| 读取 | Get、GetAsync | 同步调用,或触发即忘、通过事件送达响应。 |
| 写入 | Post、PostAsync、Put、PutAsync、Patch、PatchAsync | 请求体是流,因此上传内容无需完全载入内存。 |
| Delete 与 Options | Delete、DeleteAsync、Options、OptionsAsync | 其余的 HTTP 动词,同样成对提供同步/异步版本。 |
| 响应 | OnHTTP2Response | 同时送达请求和响应对象,包括 Response.DataString 和状态码。 |
| 分块响应体 | OnHTTP2ResponseFragment | 在最终的 OnHTTP2Response 之前,分块响应的每个片段到达时触发。 |
| 服务器推送 | OnHTTP2PushPromise | HTTP/2 服务器推送的资源到达时呈现出来。 |
| 连接生命周期 | OnHTTP2Connect、OnHTTP2Disconnect、OnHTTP2GoAway、OnHTTP2RSTStream | HTTP/2 定义的连接、断开和流重置信号。 |
| 设置 | HTTP2Options、Settings | 发送给对端的本地 HTTP/2 SETTINGS 帧取值。 |
| 可靠性 | WatchDog、HeartBeat、Throttle | 自动重连、保活和请求限流,与 sgc HTTP 技术栈的其余部分共用。 |
| 身份验证与 TLS | Authentication、TLSOptions、OnHTTP2Authorization | 标准身份验证方案与 TLS 配置,外加一个用于自定义授权头的钩子。 |
| 依赖 | sgcCustomIndy | ALPN 在 TLS 握手期间协商 h2 协议;标准 Indy 库无法做到这一点。 |
TsgcGRPCClient 通过 HTTP/2 客户端的多路复用流传输 Protocol Buffers 负载,因此覆盖全部四种 gRPC 调用形态。
| 能力 | API | 说明 |
|---|---|---|
| 传输 | Client | 一个 TsgcHTTP2Client 实例;gRPC 客户端搭载在其上,而不是自行打开连接。 |
| 一元 RPC | Call、CallAsync、CallString | 一个请求,一个响应。Call 阻塞并返回一个 TsgcGRPCResponse;CallAsync 通过 OnGRPCResponse 送达结果。 |
| 服务端流式 | ServerStreamingCall | 一个请求,响应以流的形式通过 OnGRPCStreamMessage 持续送达,直到 OnGRPCStreamEnd。 |
| 客户端流式 | OpenClientStream、SendStreamMessage、CloseClientStream、CloseClientStreamAsync | 请求以流的形式发送,流关闭时得到一个最终响应。 |
| 双向流式 | OpenBidiStream、SendBidiMessage、CloseBidiStream | 同一次调用中,双方各自独立地进行流式传输。 |
| 取消 | CancelCall | 根据流 id 取消正在进行的调用。 |
| 响应 | OnGRPCResponse、OnGRPCStreamMessage、OnGRPCStreamEnd | TsgcGRPCResponse 携带 StatusCode、Data/DataString、Headers 和 Trailers。 |
| 错误 | OnGRPCError、OnGRPCException | gRPC 状态码错误与传输层异常分别送达。 |
| 元数据 | DefaultMetadata、OnGRPCBeforeRequest | 按调用设置的以及默认的 gRPC 元数据头。 |
| 弹性 | RetryPolicy、Interceptors、ServiceConfig | 重试行为、横切拦截器链和服务配置,无需改动各个调用点。 |
| 可观测性 | MetricsCollector | 为客户端收集调用指标。 |
| 依赖 | sgcCustomIndy | 继承自其所基于的 HTTP/2 客户端;同样需要 ALPN。 |
三个纯代码类,使用 Google 服务账号进行身份验证,通过纯 HTTPS 访问。均不需要 sgcCustomIndy。
| 能力 | API | 说明 |
|---|---|---|
| 身份验证 | GoogleCloudOptions.JWT、OnAuthToken、OnAuthTokenError | 服务账号 JWT:项目 id、客户端邮箱和私钥。三个客户端形式统一。 |
| Pub/Sub:发布与拉取 | Publish、Pull、Acknowledge、Seek | TsgcHTTPGoogleCloud_PubSub_Client。向主题发送消息,从订阅拉取并确认消息。 |
| Pub/Sub:主题 | CreateTopic、DeleteTopic、GetTopic、ListTopics | 直接从代码管理主题。 |
| Pub/Sub:订阅 | CreateSubscription、DeleteSubscripton、ListSubscriptions、ModifyAckDeadlineSubscription | 完整的订阅生命周期,包括确认期限和推送配置的更改。 |
| Pub/Sub:快照 | CreateSnapshot、DeleteSnapshot、ListSnapshots | 为订阅的确认状态创建快照,供之后重放。 |
| Calendar:日历 | NewCalendar、UpdateCalendar、DeleteCalendar、LoadCalendars | TsgcHTTPGoogleCloud_Calendar_Client。封装 Google Calendar API v3 的日历列表。 |
| Calendar:事件 | NewEvent、UpdateEvent、DeleteEvent、LoadEvents | 在指定日历上创建、修改和删除事件。 |
| Calendar:同步 | LoadCalendarsChanged、LoadEventsChanged、OnGetCalendar、OnGetCalendarEvent | 针对自上次同步以来发生变化的日历和事件的增量同步钩子。 |
| FCM:推送 | SendMessage | TsgcHTTPGoogleCloud_FCM_Client。一次调用即可向项目发送 Firebase Cloud Messaging v1 负载。 |
| TLS 与日志 | TLSOptions、LogFile | 三个 Google Cloud 客户端共用。 |
线路层面采用公开标准,并在每个受支持编译器上使用同一份源代码。
| 方面 | 细节 |
|---|---|
| HTTP/2 | RFC 9113,采用 HPACK 头部压缩和 ALPN 协议协商。 |
| gRPC | 遵循 gRPC 线路协议,在 HTTP/2 流上传输 Protocol Buffers 负载。 |
| Google Cloud | Pub/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 运行时,并包含完整源代码。 |