全栈开发
微服务
【Q062】RPC 与 REST 有什么优劣

RPC 与 REST 有什么优劣

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 63 (opens in a new tab)

Author 回答者: shfshanyue (opens in a new tab)

TODO

Author 回答者: grace-shi (opens in a new tab)

rest的劣势可太多了。。

  1. 路由冲突,这个非常常见,尤其在层级很深的情况
  2. utils类的路由命名没有规范
  3. crud resource,但是批量的接口 没有路由规范,批量创建,删除,或者批量关联。
  4. 有时候资源之间的关系很难界定,写路由的时候很难清楚的表达两者的关系。

rpc不太了解,直接调用方法?

  1. 能想到的是 调用起来还是比rest麻烦的,
  2. 没有行业规范,命名之类的
  3. 文档可能比rest更麻烦一点,跟实现的语言有关,rest可以说是语言无关的。

两者场景 rest适合暴露给外部,作为外部的服务。

rpc更适合企业内部服务之间的调用。

Author 回答者: ansonlovecoding (opens in a new tab)

REST: 优势:编写简单,易于外部调用,浏览器支持,基于文本的响应可读性强,灵活性强 劣势:文本传输性能较差,不像RPC那样在使用上有严格的标准,所以不同人使用上差异化比较大

RPC: 优势:基于二进制协议的传输,性能比REST好,使用上有严格的标准以及强类型限制使可靠性增强,请求和响应必需借用相关的RPC库,这一特性天然适用于内部服务的的请求,安全性较强 劣势:使用上比REST复杂,需提前定义好请求和响应的结构,传输的数据由于是二进制必须进行序列化才可阅读

总体来说外部请求采用REST更为简单和兼容性强,内部请求采用RPC性能更强,可靠性高,更安全。