天天看点

RMI,RPC,SOAP对比分析

1、rmi

    使用java的程序员,对于rmi(remotemethod invoke,远程方法调用)一定不陌生,在java中,为了在分布式应用开发时,能够方便调用远程对象,java提供了rmi的api。在 rmi 中,远程对象按照好象它是本地行事,客户机应用程序会直接调用远程对象存根上的方法,因此,调用起来就如本地对象一样方便。rmi中封装了对象和请求的网 络传送,使得异地的对象服务直接可用。

但rmi的使用必须是在能够识别java代码的环境下使用,即必须有jvm的支持。因此,他只适合在java程序间的对象通信。如果不在 java 环境下工作,或者需要与非 java 环境通信,那么soap、rpc、corar等都是可以的。.

2、rpc & xml-rpc

       rpc(remote method invocation,远端过程调用) 与rmi的区别很明显,相比于rmi直接获取远端方法的签名,进行调用的方式,rpc使用的是c/s方式,发送请求到服务器,等待服务器返回结果。

为了包装rpc的请求信息,推出了xml-rpc,客户端发送一条特定消息,该消息中必须包括名称、运行服务的程序以及输入参数。

xml-rpc只能使用有限的数据类型种类和一些简单的数据结构。soap最主要的工作是使用标准的xml描述了rpc的请求信息(uri/类/方法/参数/返回值)。soap的方式,soap 是对如corba 和 rmi-iiop 这样的重型 范例吸引人的替代。

3、soap

       soap的消息被称为一个soap envelope,包括soap header和soap body。其中,soap header可以方便的插入各种其它消息来扩充web service的功能,比如security(采用证书访问web service),soap body则是具体的消息正文,也就是marshall后的信息。

       某些程序员每天挣扎于 perl 和 c 组件、c 和 java 组件之间的通信。这些开发人员可以从转向基于 soap 或基于 xml-rpc 的通信模型中获益匪浅。另一方面,从不转向 java 以外语言的 java 开发人员可以转向 rmi 而不是使用 soap,他们会看到极大的性能改善。

4、wsdl

wsdl(web services description language)是描述web服务的,是描述怎样访问web服务的。wsdl是用来描述soap的,换句话说,wsdl 文件告诉你调用 soap 所需要知道的一切。wsdl也是一段xml。现在各个语言对wsdl的支持都很成熟,可以根据同一份wsdl文件生成自己语言的客户端。

5、其他

       其他还有rest、axis等

下面是rmi、rpc和soap的比较

rmi

rpc

soap

通信方式

远程对象按照好象它是本地行事.客户机应用程序直接调用远 程对象存根上的方法

客户机不直接调用方法,而是向服务器发送请求消息。

在xml-rpc上,使用规定的xml格式的数据格式来通信。比xml-rpc更具适用性,能够支持更多的类型及数据结构。

优点

远程对象按照好象它是本地行事,编译期可以检查错误

它允许客户机与服务器之间有更大的独立性。

服务器无需让客户机知道,就可以完全关机和被替换

非常适合异步通信和针对松耦合的客户机和服务器

缺点

只能基于java语言。异常信息容易丢失。客户机与服务器紧耦合。

丧失了许多可以确保方法和参数是正确的编译时便利。

必须做大量的运行时检查,而且开发人员丧失了许多可以确保方法和参数是正确的编译时便利。

特别说明:尊重作者的劳动成果,转载请注明出处哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp60