看这次谈话后的休息,再利用和缘分由史蒂夫Vinoski的,我不知道是否有商业案例在新建项目(基于XML)RPC十岁上下的设置,即REST不能以更好的方式解决。
他提到了一些RPC问题:
- 专注于语言(使分布式系统适应该语言,而不是相反)
- “使它看起来是本地的”(并将失败和延迟作为例外而不是规则来处理)
- 旨在独立于语言,但仍将跨语言的“函数调用”作为主要成分
- IDL样板
- 类型安全的错觉
- 还有更多...
只是为了生动起见,RPC vs REST的一些Google Instant结果:
看这次谈话后的休息,再利用和缘分由史蒂夫Vinoski的,我不知道是否有商业案例在新建项目(基于XML)RPC十岁上下的设置,即REST不能以更好的方式解决。
他提到了一些RPC问题:
只是为了生动起见,RPC vs REST的一些Google Instant结果:
Answers:
通常,RPC提供的语言集成远超过REST。如您所提到的,这在规模,错误处理,类型安全性等方面存在许多问题,尤其是当单个分布式系统涉及多个主机并运行以多种语言编写的代码时。但是,在编写了使用RPC,REST甚至同时使用RPC和REST的业务系统之后,我发现在某些情况下有很多理由选择RPC而不是REST。
在以下情况下,我发现RPC更适合:
关于IDL,在REST系统中,您还必须编写将REST请求和响应中的数据转换为您正在使用的任何内部数据表示形式的代码。IDL源代码(带有良好的注释)也可以用作接口的文档,对于REST API,必须单独编写和维护该接口。
当您要构建较大系统的一个组件时,通常会发生以上三个项目。以我的经验,这些组件通常是其子系统需要能够独立发生故障且不会导致其他子系统或整个组件完全故障的组件。许多系统也是用Erlang编写的,也可以实现这些目标,在某些情况下,与使用另一种语言编写系统并使用RPC以获得这些好处相比,Erlang可能是更好的选择。
像大多数工程问题一样,进程间通信问题也没有单一的解决方案。您需要查看正在设计的系统,并为用例做出最佳选择。