把 gRPC 放进软件城市类比里,这五个词必须一把抓住:
| gRPC 概念 | 城市类比 | 你该怎么理解 |
|---|---|---|
proto |
专线施工蓝图 | 定义线路、窗口、报文格式的总图纸 |
message |
标准公文箱 / 货箱 | 一次通信里传输的数据结构 |
service |
某部门的专线大厅 | 对外提供哪些能力 |
rpc |
大厅里某个具体窗口 | 某一个可远程调用的方法 |
stub |
本地代理窗口 | 客户端本地对象,看起来像本地调用,实际走远程专线 |
最小的 .proto 图纸长这样:
syntax = "proto3";
package city.dispatch.v1;
service DispatchCenter {
rpc GetRoute(RouteRequest) returns (RouteReply);
}
message RouteRequest {
string origin = 1;
string destination = 2;
}
message RouteReply {
string path = 1;
int32 eta_minutes = 2;
}这段图纸表达的是:
- 城市里有一个
DispatchCenter调度大厅 - 大厅里有一个窗口叫
GetRoute - 你交一个
RouteRequest - 它还你一个
RouteReply
注意这里最重要的心智不是“语法会不会写”,而是:
你不是先写 Controller 再想参数,而是先把“合同”写清楚,再让代码生成工具帮你造收发两端。