RPC和调用Web服务之间有什么区别

时间:2017-04-28 05:53:43

标签: java web-services rpc

我刚刚阅读了rpc http://www.grpc.io/远程过程调用,另一方面我们有webservice客户端向服务器发送请求并且服务器响应。

rpc也是如此,其中stub调用服务器端的方法。我认为同样的事情可以在webservice的帮助下实现。

rpc可以产生什么影响?哪个更好用?

5 个答案:

答案 0 :(得分:3)

RPC是一种协议,一个程序可以使用该协议从位于网络上另一台计算机上的程序请求服务,而无需了解网络的详细信息。过程调用有时也称为函数调用或子例程调用。

答案 1 :(得分:1)

Webservices促进松耦合。你应该更喜欢。 RPC限制您使用某种编程语言。当您使用Web服务时,您可以使用不同的语言甚至不同的操作系统来交换信息。当您考虑连接几种类型的设备时,您应该使用Web服务,但是当您构建具有多个模块的分布式应用程序时,RPC可能更适合。

答案 2 :(得分:0)

“亲爱的孩子有很多名字”。 RPC,Soap WS,REST,RMI和其他只是计算机之间通信的不同方式,无论您选择哪一种,都有很多相似之处可以达到相同的最终结果。在这种情况下(grpc),RPC只是一个通用的“远程过程调用”名称,表明它的用途。

在选择其中一种技术时,您需要了解其中的差异,因此,例如SOAP是一种仅限Java的技术,而不是在不在完整Java环境中时要使用的技术(和即便如此,我也不愿意这样做)。如果您真的喜欢XML和/或JSON,您可能希望使用常规的网络服务。如果您希望HTTP超过REST,那么grpc可能是您的选择。如果你想走向前沿,你可能想要选择{{1}}或其他类似的技术。

使用的技术通常由现有的代码库决定,因此,如果您之前使用过SOAP Web服务,那么您将继续使用它。

答案 3 :(得分:0)

  

什么rpc可以有所作为,哪些更好用?

rpc

的优点

我看到的主要优点是你在编译时被迫捕获更多错误。

gRPC-Web: Moving past REST+JSON towards type-safe Web APIs上的这篇帖子说:

  • 不再寻找API文档 - .proto是规范的 API合同的格式,就像其他团队一样
  • 不再需要手工制作的JSON调用对象 - 所有请求和响应都是强类型和代码生成的,并提供提示 在IDE中
  • 不再处理方法,标题,正文和低级网络 - 一切都在处理和抽象 GRPC-Web的客户端
  • 不再猜测HTTP错误代码的含义 - gRPC状态代码是表示API中问题的规范方式    在服务器上不再有手工制作的块编码流式传输 - gRPC-Web支持1:1 RPC和1:许多服务器端 流媒体请求
  • 在推出新二进制文件时,不再有数据解析错误 - 请求和响应的向后和向前兼容性 由协议缓冲区保证

面向协议架构的优点

我看到的主要优势是您拥有可在不同场景中重复使用的标准操作和常用概念。

Richardson Maturity Model - steps toward the glory of REST中引入了不同层次的概念。你可以从那里获得一些优势。

1级通过使用分而治之来解决处理复杂性的问题,将大型服务端点分解为多个资源。

2级引入了一组标准动词,以便我们以相同的方式处理类似的情况,消除不必要的变化。

3级引入了可发现性,提供了一种使协议更具自我文档的方法。

何时使用什么?

如果您拥有一个不熟悉HTTP或其他常见协议的域专家团队,那么 rpc可以用于内部使用。它还具有后端到后端通信的优点,其中不涉及任何浏览器。使用像gRPC这样的技术,可以支持多种语言/技术之间的通信。

在所有其他情况下类似HTTP的通信似乎仍然是2017年大多数用例的标准?

答案 4 :(得分:0)

即使这个问题是很久以前提出的,我也想补充一些简短的回答,并附上主要的不同之处,希望对以后的读者有所帮助。

------------------------------------------------------------------------------
| Category             |    RPC              |    Web Services
------------------------------------------------------------------------------
|Operation's Location  |   On top of TCP     |  on top of HTTP Protocol
------------------------------------------------------------------------------
|Data format           | Binary              | Text, XML, JSON, ect.
------------------------------------------------------------------------------
|Speed                 | Slow (Marshilling)   | Fast
------------------------------------------------------------------------------

我没有提到RPC和Web服务的描述,因为您在其他人的回答中清楚地看到了它们。