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

时间:2010-06-12 13:54:01

标签: web-services rpc

RPC和Web Service有没有明确的定义?快速维基百科搜索显示:

  

RPC:远程过程调用(RPC)是一个   进程间通信技术   这允许计算机程序   导致子程序或程序   在另一个地址空间中执行   (通常在另一台计算机上   共享网络)没有程序员   明确地编写详细信息   远程互动。

     

Web服务:Web服务   通常是应用编程   接口(API)或Web API   通过超文本传输​​访问   协议并在远程执行   托管所请求服务的系统。   Web服务往往属于其中之一   两个阵营:Big Web Services [1]和   RESTful Web服务。

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

Web Service是RPC的更高级别表示吗?

4 个答案:

答案 0 :(得分:53)

  

Web Service是更高级别的   RPC的表示?

是的,确实如此。 Web服务是RPC的特定实现。在最低级别,所有Web服务都连接到套接字,使用HTTP协议协商发送在远程空间中执行的有效负载(它甚至可以在同一台计算机上,供所有消费者知道)。所有这些抽象都是其核心RPC。

答案 1 :(得分:5)

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

答案 2 :(得分:1)

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

具体而言,WSDL提供了许多关键信息:

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

答案 3 :(得分: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服务的描述,因为您在其他人的回答中清楚地看到了它们。