远程过程调用和Web服务之间有什么区别?


80

RPC和Web服务是否有明确定义?快速的维基百科搜索显示:

RPC:远程过程调用(RPC)是一种进程间通信技术,它使计算机程序可以使子例程或过程在另一个地址空间(通常在共享网络中的另一台计算机上)执行,而无需程序员明确为这种远程交互。

Web服务:Web服务通常是应用程序编程接口(API)或Web API,可通过超文本传输​​协议进行访问,并在托管请求的服务的远程系统上执行。Web服务倾向于落入两个阵营之一:Big Web Services [1]和RESTful Web Services。

我不清楚两件事之间的真正区别是什么。似乎一件事可能属于RPC,并且同时也是一种Web服务。

Web服务是RPC的高级表示吗?

Answers:


60

Web服务是RPC的高级表示吗?

是的。Web服务是RPC的特定实现。在最低级别,Web Service使用HTTP协议连接到Socket,以协商发送在远程空间(远程空间可以是同一台计算机)中执行的有效负载。所有这些远程调用抽象的核心都是RPC。


1
除了Wayne写道:Web服务的其他属性:允许RPC的平台独立方式,是可发现的并且可以自我描述(与Win32 RPC相比)。
亚历克斯(Alex)2010年

6
不,那是不正确的。RPC是Web服务的体系结构样式。另一种选择是REST。参考:ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber = 5339611
schlamar 2012年

@schlamar Web服务是否与RPC有关?如果是,我们在Web服务环境中是否有客户端和服务器存根?
过度兑换

8

我看到这个问题。这个问题已经很久以前问过了,但是我认为这个社区中任何人的回答都可以为以后的提问者提供帮助,它提供有关此主题的更多信息和明确信息。因此,我想添加我的增强功能以​​指出关键区别,希望对以后的读者有所帮助。

------------------------------------------------------------------------------
| 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 (Marshalling)  | Fast
------------------------------------------------------------------------------

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


5

出于功能性考虑,远程过程调用(RPC)和WebService都是并行的。但是它们的调用方式有细微的差别。Web Service可以由任何应用程序调用,使用XML格式通过HTTP协议进行处理,并且本质上可以互操作,而对于RPC,该功能可以由多个应用程序调用,因此它遵循序列化的路径来存储对象数据。它支持基于TCP协议的二进制格式。在更好的方法中,我们可以简化RPC工作流程,就像我们通过适当的Socket和消息的正确格式执行函数一样,但是不知道客户端服务器中特定功能的实际存在,即使提供的套接字可能不在该功能所在的同一服务器。但是每次给人的感觉都是该函数位于本地。


1

•使用XML格式化数据以进行传输,从而改善或消除了开发人员通常编码的编组,解组和与翻译相关的各种其他要求。•使用已发布明确定义的标准的标准化协议(例如HTTP或SMTP)传递数据。•使用已知的公认机制WSDL对底层公开服务进行了良好定义。•使用定义明确的标准UDDI和更高级的ebXML查找服务。

具体地说,WSDL提供了许多关键信息:

•使用和元素以及适当的架构定义来定义在两个端点之间传递的消息格式。•服务的语义:如何调用它以发出同步请求/答复,仅同步答复或异步通信。•通过以下元素进行服务的终点和运输:即由谁提供服务。•通过元素进行编码,即访问服务的方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.