RPC、RMI和SOAP的详细解释
RPC与RMI的区别
============================================================================
RPC:(远程过程调用)
它被设计成应用程序之间的平台中立的通信方式,它忽略了操作系统和语言之间的差异。
RMI(远程方法调用)
RPC的java版本,EJB的基本技术
RMI使用JRMP(java远程方法协议)通信协议,这是一个远程调用的方法建立在TCP / IP协议。
RMI使用存根和骨架来传输远程对象。
存根充当远程对象的客户端代理,与远程对象具有相同的远程接口。
远程对象的调用实际上是通过调用对象的客户端代理对象存根来完成的。
创建远程方法调用的5个步骤:
1)定义一个扩展的远程接口,这接口中每个方法必须声明,它将产生一个RemoteException异常;
2)定义实现接口的类;
3)使用rmic程序生成远程实现所需的存根和框架;
(例如,在运行目录下demo.rmi.echoserver.java位于:rmic演示。RMI。echoserver)
4)为RMI调用创建一个客户端程序和服务器;
5)启动rmiregistry和运行自己的服务程序和客户程序。
RMI和RPC之间的区别在于:
1)该方法是如何被调用的
对于RMI,如果在服务器上执行一个方法,但在远程接口中没有添加匹配的签名,则RMI客户端不能调用新方法。
在中国,当一个请求到达的RPC服务器,请求包含一组参数和一个文本值,通常在classname.methodname形式。
这表明请求的方法是在类名的类称为语句。
然后,RPC服务器搜索与之匹配的类和方法,并将其用作方法参数类型的输入。
这里的参数类型与RPC请求中的类型相匹配。一旦匹配成功,就调用该方法,并将结果编码返回到客户机。
2)对信息传输的限制
RMI调用远程对象的方法,使该方法返回到java对象和基本数据类型。
RPC是不允许通过的物体,和RPC服务信息由外部数据表示(外部数据表示,XDR)语言。
3)所使用的不同协议
RPC不支持对象和使用HTTP protocol.rmi支持传输对象,使用TCP / IP协议
4)轮辋是限于java语言,和RPC是跨语言
此外,RMI优于RPC或SOAP:在程序开发过程中,在编译时可以找到对象或方法不匹配造成的错误,而不是等待运行时。
============================================================================
RPC、SOAP、WSDL之间的关系
============================================================================
RPC、SOAP和WSDL都是Web服务的关键字。他们的关系在这里描述。下面的解释可能比较窄,主要是为了帮助理解三者之间的关系。
1.rpc
如果您想调用远端方法,可以使用RMI和RPC,它们是2种非常不同的样式。
RMI(远程方法调用):直接获取远程方法的签名和调用它。优点是强类型,在编译时可以检查错误;缺点是只有java语言
RPC(远程过程调用)使用客户机/服务器模式(请求/响应)将请求发送到服务器端,服务器在执行该方法后返回结果,具有跨语言跨平台的优点,缺点是不仅编译时调试,而且在运行时检查。
2.soap
为了将RPC请求信息,介绍了XML-RPC,但XML-RPC只能使用有限的数据类型和一些简单的数据结构,所以SOAP(简单对象访问协议)出现了。肥皂的主要任务是使用标准的XML描述的RPC请求信息(URI /类/方法/参数/返回值)。理论上,肥皂是一段XML,你可以把它通过HTTP,SMTP等(复制到软盘,叫快递公司来做)。同样的肥皂也是跨语言。
3.wsdl
WSDL(Web服务描述语言)是Web服务的描述和说明如何用于描述SOAP访问Web service.wsdl,换句话说,WSDL文件告诉你一切你需要知道的关于叫SOAP.WSDL也是一段XML。现在每一种语言都有一个成熟的支持WSDL,它可以被用来生成基于相同的WSDL文件自身语言的客户端。