`
houfeng0923
  • 浏览: 145276 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

RMI\XML-RPC\JSON-RPC\SOAP概念比较

阅读更多

   今天被这几个概念混淆了,特地搜索整理一番, 本文只做概念比较,不足与错误之处欢迎大家指正

 

 

RMI:Romote Method  Invocation,远程方法调用。基于java远程消息交换协议JRMP通信;JRMP是专为java远程对象制定的协议。是分布式应用程序的100%java解决方法。RMI对非java语言应用程序支持不足,不能实现互通。

RMI是面向对象的编程模型。广泛应用与EJB架构系统中。

RMI基于调用的模式,调用过程如下:客户端程序调用服务对象的客户端代理,代理负责打包参数并通过JRMP协议发送到服务端,服务端使用同样协议解析,执行业务逻辑处理,用同样方法返回结果给客户端。

 

 

RPC:RPC算是这几类的统称(这样说有点不准确,但也可以这么理解)。  RPC(Remote Procedure Call)远程过程调用,是实现分布式计算的一种技术。在某种传输协议(TCP\HTTP等)上携带信息数据,通过网络从远程计算机程序上请求服务。在OSI模型中,RPC跨越了传输层和应用层,使开发网络分布式应用程序变得容易。客户端代码像调用本地方法一样调用远程方法。

RPC基于请求应答模式,客户端发送调用信息(将远程方法名、参数打包进请求信息)到服务端,服务端解析到要调用的对象和方法执行后返回应答信息;客户端接受相应获取应答信息。

        RPC是跨语言的通信标准,sun和微软都有其实现,微软的DCOM就是建立在ORPC协议之上。

RPC是面向过程的编程模型。

 

XML-RPC:XML Remote Procedure Call,即XML远程方法调用,利用http+xml封装进行RPC调用。基于http协议传输、XML作为信息编码格式。一个xml-rpc消息就是一个请求体为xml的http-post请求,服务端执行后也以xml格式编码返回。这个标准面前已经演变为下面的SOAP协议。可以理解SOAP是XML-RPC的高级版本。

 

SOAP:Simple Object Access Protocol ,简单对象访问协议,是一种轻量的、简单的、基于xml的远程访问协议。可以与现有的多种传输层或应用层协议结合使用,如TCP、HTTP、SMTP等。SOAP广泛使用的是基于HTTP和xml协议的实现(SOAP=RPC+HTTP+XML),也就是大家常提的Web Service使用的通信协议。一个SOAP方法可以简单地看作遵循SOAP编码规则的HTTP请求和响应。

比较:XML-RPC是启动web服务最容易的方法,在很多方面比SOAP更简单易用,但不同于SOAP的是,XML-RPC没有相应的服务描述语法,这妨碍了XML-RPC服务的自动调用。

 

JSON-RPC:JSON Remote Procedure Call,即JSON远程方法调用 。类似于XML-RPC,不同之处是使用JSON作为信息交换格式。

 

 

 

(关于sun java版本的一些web服务规范:

  JAX-RPC1.1:Java API for XML-Based RPC 1.1 

JAX-WS2.0:Java API for XML Web Service 2.0,是前者的升级版本。

 使用JAXB处理xml与java对象映射;xml解析使用StAX拉式解析器规范。

详细可参考  Web 服务提示与技巧: JAX-RPC 与 JAX-WS 的比较

 

 JAX-RS: (Java API for RESTful Web Services (JSR-311) )  

Java 上构建 RESTful 风格的 web services 提供的一组标准 API。

 另附开源的JSON-RPC实现

1,JSON-RPC for Java

2,国人的 JSON-RPC 

 )

 


分享到:
评论
7 楼 houfeng0923 2011-05-31  
<div class="quote_title">eredlab 写道</div>
<div class="quote_div">
<p> </p>
<div class="quote_title"> 写道</div>
<div class="quote_div"><span>
<p style="padding: 0px; margin: 0px;"> 另附开源的JSON-RPC实现</p>
<p style="padding: 0px; margin: 0px;"><span style="white-space: pre;"> </span>1,<a style="color: #006699; text-decoration: underline;" href="http://code.google.com/p/jsonrpc4j/">JSON-RPC for Java</a></p>
<p style="padding: 0px; margin: 0px;"><span style="white-space: pre;"> </span>2,国人的 <a style="color: #006699; text-decoration: underline;" href="http://code.google.com/p/json-rpc-for-java/">JSON-RPC</a> </p>
<p style="padding: 0px; margin: 0px;"> )</p>
</span></div>
<p>
 据我所知后者明显和其他这些不是同类型产品啊。</p>
</div>
<p>是吗?我还没深入学习这两个开源工具,简单看了一下,第二个功能性和使用方式更多样。不是同类型的产品?说的详细点吧。</p>
6 楼 eredlab 2011-05-31  
<p> </p>
<div class="quote_title"> 写道</div>
<div class="quote_div"><span>
<p style="padding: 0px; margin: 0px;"> 另附开源的JSON-RPC实现</p>
<p style="padding: 0px; margin: 0px;"><span style="white-space: pre;"> </span>1,<a style="color: #006699; text-decoration: underline;" href="http://code.google.com/p/jsonrpc4j/">JSON-RPC for Java</a></p>
<p style="padding: 0px; margin: 0px;"><span style="white-space: pre;"> </span>2,国人的 <a style="color: #006699; text-decoration: underline;" href="http://code.google.com/p/json-rpc-for-java/">JSON-RPC</a> </p>
<p style="padding: 0px; margin: 0px;"> )</p>
</span></div>
<p>
 据我所知后者明显和其他这些不是同类型产品啊。</p>
5 楼 ray_linn 2011-05-31  
houfeng0923 写道
java_user 写道
请问,一般做分布式应用程序开发都是使用哪种协议?

个人理解
早期的解决方案是微软的DCOM,sun的RMI、JMS,和OMG的CORBA。后一种是平台无关的。
目前主要还是以SOAP协议的分布式应用程序为主流, 也是延续了RPC的思想。
还有上面 朋友提到的基于binary-RPC的hessian、protocol buffer和thrift都是RPC的进化;
另外还有一个值得关注的REST风格的web服务,比较看好。




讲究效率就用二进制报文,不讲究效率就用文本报文,就这么简单
4 楼 houfeng0923 2011-05-31  
java_user 写道
请问,一般做分布式应用程序开发都是使用哪种协议?

个人理解
早期的解决方案是微软的DCOM,sun的RMI、JMS,和OMG的CORBA。后一种是平台无关的。
目前主要还是以SOAP协议的分布式应用程序为主流, 也是延续了RPC的思想。
还有上面 朋友提到的基于binary-RPC的hessian、protocol buffer和thrift都是RPC的进化;
另外还有一个值得关注的REST风格的web服务,比较看好。
3 楼 kimmking 2011-05-31  
hessian火了一阵子。
现在protocol buffer和thrift又火了。~
2 楼 duronshi 2011-05-31  
个人补充以一点,使用体会:

xmprpc好像一两年都没有更新了,目前的版本好像还是2.0;

jsonrpc的好处是demo比较多,支持的语言也比较多。之前用xmlrpc,现在改用jsonrpc了。用jsonrpc要注意编码的转换。

soap早期用过,现在已经没什么印象了。

RMI没有用过。
1 楼 java_user 2011-05-31  
请问,一般做分布式应用程序开发都是使用哪种协议?

相关推荐

    Dubbo-RPC分布式服务框架.pptx

    Dubbo-RPC分布式服务框架 Dubbo 是阿里巴巴开发的一个分布式服务框架,每天为2千多个服务提供大于30亿次...5. Webservice – 基于 SOAP 协议的 RPC 框架,支持多种数据类型,例如 XML、JSON 等,适合企业之间的集成。

    RPC的简单实现

    - ** 调用协议 **:定义请求和响应的结构,如SOAP、JSON-RPC或gRPC的protobuf。 **4. RPC的实现方式** - **基于接口的RPC**:如Java的RMI(Remote Method Invocation),通过接口来定义服务。 - **基于HTTP的RPC**...

    modern-rpc:RPC,现代方式

    随着技术的发展,RPC已经进化出了多种实现方式,包括REST、SOAP、gRPC和RMI等。让我们深入探讨这些现代RPC技术。 1. REST(Representational State Transfer):REST是一种基于HTTP协议的网络应用程序设计风格和...

    Java术语详解(JMS、RPC、Ajax、SOAP、WSDL、JPA、ORM、mvc和JNDI)

    Ajax不是一种单一的技术,而是一种使用JavaScript、XML(或JSON)和其他Web技术实现页面异步更新的方法。通过Ajax,网页可以在不重新加载整个页面的情况下与服务器交换数据并更新部分页面内容,提升了用户体验。 4...

    REST与面向资源的Web开发

    - **远程过程调用(Remote Procedure Call, RPC)**:如SOAP/XML-RPC/JSON-RPC/Flash AMF/Hessian/Burlap/DWR等。 - **表述性状态转移(Representational State Transfer, REST)**:通过使用HTTP、URI等标准来操作...

    CXF+RMI+HESSIAN

    它采用紧凑的二进制格式,相比文本格式如JSON或XML,数据传输更快速,且占用带宽更少。Hessian在CXF中可以作为一个绑定,提供快速、轻量级的服务调用。 【CXF+RMI+HESSIAN整合】 将CXF与RMI和HESSIAN结合,可以在...

    最新系统分析师考试复习资料

    - **SOAP (Simple Object Access Protocol)**:用于传输 XML 消息的标准协议。 - **UDDI (Universal Description, Discovery, and Integration)**:用于发布、查找和集成 WebService 的目录服务。 - **WSDL (Web ...

    软件系统开发中的数据交换协议

    数据交换协议在软件系统开发中扮演着至关重要的角色,它定义...众多开源实现如SOAP、REST、XML-RPC、JSON-RPC、gRPC等提供了丰富的选项,开发者可以根据实际需求选择最适合的协议,以实现高效、可靠的系统间数据交换。

    东南融通面试题 内部

    - JSON-RPC:基于JSON格式的远程过程调用协议,轻量级。 3. **Web服务的实现原理:** - Web服务通过标准化的接口定义来实现跨平台的服务交互。 - WSDL(Web Service Description Language)描述了服务的接口,...

    RemoteCall.zip

    - **编解码**:请求和响应在传输过程中需要进行编码和解码,以适应不同的数据格式(如XML、JSON等)和网络协议(如TCP/IP)。 3. **远程调用的关键技术**: - **marshalling/unmarshalling**:序列化和反序列化...

    Java EE 学习路线图

    Web服务是现代企业级应用不可或缺的部分,学习JAX-WS、SAAJ和JAX-RPC,理解WSDL和SOAP协议,实现服务的发布和调用。 最后,Java EE应用实践涉及工作流规范,通过重构和项目经验提升技能。深入研究EJB,理解JPA、JTA...

    simple-parent

    2. ** Burlap**:与Hessian类似,Burlap也是一种RPC协议,但它使用XML进行序列化,因此具有更好的可读性,但可能会牺牲一些性能。 3. **Web Services (SOAP/WSDL)**:这种基于标准的远程调用方式提供了高度的互操作...

    远程调用

    RMI不仅包括RPC的概念,还包含了对象的序列化和反序列化,使得复杂对象可以在网络间传递。 3. **Web Services**:基于HTTP协议的远程调用方式,通过XML进行数据交换,实现跨语言、跨平台的调用。常见的Web Service...

    Dubbo序列化协议5连问,你接得住不?.docx

    PB是Google开发的一种高效、轻量级的结构化数据存储格式,其性能优于JSON和XML。PB效率高的原因在于: - 使用proto编译器,自动进行序列化和反序列化,速度快。 - 序列化后的数据体积小,压缩效果好,减少了传输...

    java系统间通信(分布式调用)

    SOAP(Simple Object Access Protocol)基于XML的协议,通过WSDL(Web Services Description Language)定义服务接口。虽然比RESTful复杂,但在安全性、规范性和互操作性方面有优势。 5. **Socket编程**: 基于...

    34_dubbo都支持哪些通信协议以及序列化协议?.zip

    2. **RMI (Remote Method Invocation)**:这是一种Java平台上的标准协议,基于JDK的RMI实现,适用于本地或者内网环境,对于简单的RPC调用有一定的优势。 3. **HTTP/HTTPS**:Dubbo支持通过HTTP或HTTPS协议进行通信...

Global site tag (gtag.js) - Google Analytics