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

问题描述 投票:4回答:5

我刚读到关于rpc http://www.grpc.io/远程过程调用,另一方面我们有一个webservice,其中客户端向服务器和服务器响应请求。

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

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

java web-services rpc
5个回答
1
投票

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


3
投票

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


0
投票

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

在选择其中一种技术时,您需要了解其中的差异,因此,例如,RMI是一种仅限Java的技术,当您不在完整的Java环境中时,您不想使用它(即便如此,我也不会去为了它)。如果你真的喜欢SOAP和/或XML,你可能想要使用常规的web服务。如果您更喜欢JSON而不是HTTP,那么REST可能是您的选择。如果你想走向前沿,你可能想选择grpc或其他类似的技术。

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


0
投票

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

Advantages of rpc

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

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

"

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

"

Advantages of protocol oriented architecture

我看到的主要优点是您具有可在不同场景中重用的标准操作和通用概念。

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

"

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

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

Level 3引入了可发现性,提供了一种使协议更加自我记录的方法。

"

When to use what?

当你拥有一个不熟悉HTTP或其他常用协议的领域专家团队时,rpc可能适合内部使用。它在后端到后端通信中也具有优势,其中不涉及浏览器。使用像gRPC这样的技术,可以支持多种语言/技术之间的通信。

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


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服务的描述,因为你可以清楚地看到其他人的回答。

© www.soinside.com 2019 - 2024. All rights reserved.