传输层设计
Transport 抽象「如何发 A2A 调用」;同一套 Client/Server 逻辑可跑在 JSON-RPC、HTTP+JSON(REST)、gRPC 上,流式常用 SSE。
1. Transport 接口(语义)
sendMessage、getTask、cancelTask…supportsStreaming- 序列化/反序列化与 协议版本 绑定
2. JSON-RPC Transport
| 特点 | 说明 |
|---|---|
| 负载 | JSON-RPC 2.0 |
| 适用 | 默认、易调试 |
| 流式 | 常配合 SSE 端点 |
3. HTTP + JSON (REST) / ProtoJSON
| 特点 | 说明 |
|---|---|
| 路径 | RESTful 资源风格 |
| 序列化 | ProtoJSON 与 a2a.proto 对齐 |
| 适用 | 网关、现有 HTTP 基础设施 |
4. gRPC Transport
| 特点 | 说明 |
|---|---|
| 性能 | 二进制、强类型 |
| 适用 | 服务间、高吞吐 |
5. SSE 流式
- 服务端推送事件流。
- 解析器按行/事件切分,不依赖 ReadableStream 默认 async iterator(见 06 决策)。
- 断线重连由客户端策略处理。
6. 协议名大小写
注册传输时 大小写不敏感,减少配置错误。
7. 错误处理
HTTP 状态 + 协议 error 对象;解析失败 fail fast。
8. 总结
选传输 = 看 Agent Card 的 preferredTransport 与部署环境;业务代码保持 Transport 无关。