很多比较只停留在:
- gRPC 用 Protobuf
- REST 常用 JSON
这不够深。
真正的根本差异在这里:
| 维度 | REST | gRPC |
|---|---|---|
| 核心抽象 | 资源 | 能力 / 方法 |
| 设计入口 | URL + HTTP 语义 | Service + RPC 合同 |
| 常见载荷 | JSON | Protobuf(二进制为主) |
| 人类可读性 | 强 | 弱 |
| 代码生成依赖 | 可选 | 非常核心 |
| 浏览器直连友好度 | 很强 | 原生标准 gRPC 不如 REST 直接 |
| 流式通信 | 能做,但不是默认心智 | 一等公民 |
| 适合对象 | 公网、开放平台、跨组织集成 | 内部服务、低延迟协作、强类型系统 |
更深一层地说:
REST 假设“我要开放一个通用接口世界”;gRPC 假设“我在协调一群彼此信任、追求效率的内部部门”。
所以它们不是简单替代关系,而是常常共存:
浏览器 / 第三方开发者
│
▼
REST / JSON 公共道路
内部订单服务 <====> 库存服务 <====> 调度服务
│
▼
gRPC 高速专线网一个成熟的软件城市,往往是:
- 对外:REST/HTTP API 更友好
- 对内:gRPC 更高效、更稳、更统一