先看静态关系:
.proto 专线图纸
│
├── message:标准公文格式
├── service:对外服务大厅
│ └── rpc:大厅里的具体窗口
│
└── protoc / 代码生成
├── Message Classes:各语言里的数据类型
├── Client Stub:客户端代理窗口
└── Server Skeleton:服务端待实现骨架再看运行时关系:
业务代码(客户端)
│
▼
Stub 本地代理窗口
│ 序列化 message
▼
gRPC Channel
│
▼
HTTP/2 高速专线
│
▼
服务端传输层
│ 反序列化 message
▼
Service 实现
│
▼
返回 message / 返回 stream你可以把整个模型压缩成一句话:
.proto 负责定义“专线合同”,stub 负责把“本地调用”翻译成“远程通车”,message 负责统一货箱格式,service/rpc 负责定义对外能力边界。