远程过程调用和Web服务有什么区别?
有没有关于RPC和Web服务的明确定义? 一个快速的维基百科search显示:
RPC:远程过程调用(RPC)是一种进程间通信技术,允许计算机程序在另一个地址空间(通常在共享networking上的另一台计算机上)执行子例程或过程,而程序员不需要明确地编写详细信息这个远程交互。
Web服务:Web服务通常是通过超文本传输协议访问的应用程序编程接口(API)或Web API,并在托pipe所请求的服务的远程系统上执行。 Web服务往往分为两大阵营:Big Web Services [1]和REST风格的Web服务。
我不太清楚这两件事之间的真正区别。 似乎有一件事可能属于RPC,同时也是一种Web服务。
Web服务是RPC的更高层次的表示吗?
Web服务是RPC的更高层次的表示吗?
是的。 Web服务是RPC的特定实现。 在最低级别,所有Web服务都连接到一个套接字,使用HTTP协议来协商发送在远程空间中执行的有效载荷(它甚至可能在同一台计算机上,对于所有消费者都知道)。 所有这些抽象都在其核心RPC。
远程过程调用(RPC)和WebService为了function而并行。 但是他们的调用方式有一个细微的差别。 一个Web服务可以被任何应用程序调用,在HTTP协议上使用XML格式进行程序和本质上的互操作,而在RPC的情况下,这个函数可以被多个应用程序调用,所以它遵循序列化的path来存储对象数据。 它支持TCP协议上的二进制格式。 在一个更好的方法中,我们可以简要地介绍RPC工作stream,就像我们通过适当的Socket和正确的消息格式执行一个函数一样,但是不知道客户端服务器中特定函数的实际存在。即使提供的套接字可能不在该函数驻留在同一台服务器上。 但是每一次它都会给出一个像本地function一样的感觉。 在远程服务中,函数驻留在远程机器上,并且可以通过适当的格式和协议调用,并且允许可伸缩性。
•数据格式化为使用XML进行传输,改进或消除编码,反编组以及通常由开发人员编写的各种其他与翻译相关的要求。 •数据通过使用标准化协议(如HTTP或SMTP)传递,这些协议已经发布了定义明确的标准。 底层的暴露服务使用已知的接受机制WSDL来定义。 •使用定义良好的标准,UDDI和更高级的ebXML来发现服务。
具体来说,WSDL提供了一些关键信息:
•使用其元素和适当的模式定义在两个端点之间传递的消息格式的定义。 •服务的语义:如何调用它来进行同步请求/回复,同步回复或asynchronous通信。 •服务的终点和运输方式,即提供服务的人。 •通过元素进行编码,即如何访问服务。