对比维度 | RPC(Remote Procedure Call) | REST(Representational State Transfer) |
---|---|---|
出现时间 | 1970s(最早) 广泛使用于1980s~1990s |
2000年 由 Roy Fielding 提出 |
提出者 | 最早由 Bruce Jay Nelson 提出(1976) | Roy Fielding(HTTP 的核心作者之一) |
设计理念 | 像调用本地函数一样远程调用服务的方法 | 通过传输资源状态的表述,使用标准的 HTTP 方法 |
通信方式 | 自定义协议 / HTTP / TCP / SOAP 等 | 只使用 HTTP 协议 |
接口风格 | 方法导向:调用远程方法(如 getUser() ) |
资源导向:操作资源(如 GET /users/1 ) |
常见协议 | SOAP、gRPC、XML-RPC、JSON-RPC | 纯 HTTP(GET、POST、PUT、DELETE) |
数据格式 | 通常是 XML、protobuf、JSON | 通常是 JSON、XML、HTML |
资源定义 | 方法名即 API(如 createUser() ) |
URI 即资源名(如 /users ) |
耦合程度 | 较高:客户端需要知道方法签名 | 较低:基于资源、统一协议 |
常见使用场景 | 微服务之间高效通信(如 gRPC) 内部系统集成 |
Web服务、前后端通信、开放API、移动端接口 |
扩展性 | 强,但需遵守接口协议 | 高,适合互联网和跨平台 |
调试难度 | 通常较难(尤其是二进制协议如 gRPC) | 调试方便(浏览器、Postman 可直接测试) |
对比:RPC 的作者 Nelson 专注于分布式计算的透明性,而 Fielding 的 REST 更关注 Web 的可扩展性和标准化。两者作者背景不同,分别代表了不同时代的技术需求。
对比:
我想等网站访问量多了,在这个位置放个广告。网站纯公益,但是用爱发电服务器也要钱啊 ----------狂奔的小蜗牛