`
tcxiang
  • 浏览: 84558 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

rpc、soap与rmi调用的区别

 
阅读更多

RPC与RMI区别,联系

 (2011-02-27 00:20:22)
标签: 

it

分类: 中间件

我自己理解:RPC和RMI都是远程调用,属于中间件技术。RMI是针对于java语言的,它使用的是JRMP协议通信,而RPC是更大众化的,使用http协议传输。还有?

 

摘自:http://baike.baidu.com/view/32726.htm#3

RPC:

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

 

工作原理  运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:
 
  1.调用客户端句柄;执行传送参数
 
  2.调用本地系统内核发送网络消息
 
  3.消息传送到远程主机
 
  4.服务器句柄得到消息并取得参数
 
  5.执行远程过程
 
  6.执行的过程将结果返回服务器句柄
 
  7.服务器句柄返回结果,调用远程系统内核
 
  8.消息传回本地主机
 
  9.客户句柄由内核接收消息
 
  10.客户接收句柄返回的数据

摘自:http://baike.baidu.com/view/99017.htm#3

RMI(远程方法调用)的组成

  一个正常工作的RMI系统由下面几个部分组成:
 
  ·远程服务的接口定义
 
  ·远程服务接口的具体实现
 
  ·桩(Stub)和框架(Skeleton)文件
 
  ·一个运行远程服务的服务器
 
  ·一个RMI命名服务,它允许客户端去发现这个远程服务
 
  ·类文件的提供者(一个HTTP或者FTP服务器
 
  ·一个需要这个远程服务的客户端程序
 

编辑本段RMI(远程方法调用)的原理

  RMI系统结构,在客户端和服务器端都有几层结构。
 
  --------- ----------
 
  | 客户 | | 服务器|
 
  ---------- ----------
 
  | |
 
  ------------- ----------
 
  | 占位程序 | | 骨干网 |
 
  -------------- -----------
 
  | |
 
  ------------------------------------
 
  | 远 程 引 用 层 |
 
  ------------------------------------
 
  | |
 
  ------------------------------------
 
  | 传 输 层 |
 
  ------------------------------------
 
  方法调用从客户对象经占位程序(Stub)、远程引用层(Remote Reference Layer)和传输层(Transport Layer)向下,传递给主机,然后再次经传 输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。 占位程序扮演着远程服务器对象的代理的角色,使该对象可被客户激活。 远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个服务器还是多个。传输层管理实际的连接,并且追追踪可以接受方法调用的远程对象。服务器端的骨干网完成对服务器对象实际的方法调用,并获取返回值。返回值向下经远程引用层、服务器端的传输层传递回客户端,再向上经传输层和远程调用层返回。最后,占位程序获得返回值。
 
  要完成以上步骤需要有以下几个步骤:
 
  1、生成一个远程接口
 
  2、实现远程对象(服务器端程序)
 
  3、生成占位程序和骨干网(服务器端程序)
 
  4、编写服务器程序
 
  5、编写客户程序
 
  6、注册远程对象
 

  7、启动远程对象

 

RMI和RPC之间最主要的区别在于方法是如何别调用的。在RMI中,远程接口使每个远程方法都具有方法签名。如果一个方法在服务器上执行,但是没有相匹配的签名被添加到这个远程接口上,那么这个新方法就不能被RMI客户方所调用。在RPC中,当一个请求到达RPC服务器时,这个请求就包含了一个参数集和一个文本值,通常形成“classname.methodname”的形式。这就向RPC服务器表明,被请求的方法在为“classname”的类中,名叫“methodname”。然后RPC服务器就去搜索与之相匹配的类和方法,并把它作为那种方法参数类型的输入。这里的参数类型是与RPC请求中的类型是匹配的。一旦匹配成功,这个方法就被调用了,其结果被编码后返回客户方。

http://guobetter.blog.sohu.com/159564844.html

  rpc、soap与rmi调用的区别:

       

        传输协议的区别:

           RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信,但由于JRMP是专为Java对象制定的,因此,RMI对于用非Java语言开发的应用系统的支持不足。不能与用非Java语言书写的对象进行通信。

          xml-rpc 这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式。Xml-Rpc的定义尽可能的保持了简单,但同时能够传送、处理、返回复杂的数据结构。

分享到:
评论

相关推荐

    .Net远程方法调用研究

    远程方法调用发展到现在,已经有以下几种框架实现:DCE/RPC,CORBA,DCOM,MTS/COM+,Java RMI,Java EJB,Web Services/SOAP/XML-RPC,NET Remoting,本文主要介绍了.NET远程方法调用的原理,实现以及与微软...

    soap破解版

    调试各种http webservice rmi等各种rpc远程接口调试。

    DWR的介绍以及使用范例.还有使用DWR的相关配置

    这种从Java到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。 Java从根本上讲是同步机制,然而AJAX却是异步的。...

    DWR中文教程 PDF格式

    DWR是一个可以允许你去创建AJAX WEB 站点的JAVA ...这种从Java 到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR 的优点在于不需要任何的网页浏览器插件就能运行在网页上。

    java开发oa系统源码-webservice-learning:网络服务学习

    RMI远程方法调用,简单,资源少 CORBA 通用对象请求代理架构,IIOP 协议中的二进制数据交换 RMI-IIOP 远程方法调用 - Internet Inter-Ojbect 协议,结合 RMI 和 CORBA 的优势 COM+ 公共对象模型 SOAP 简单对象访问...

    dwr2.0jar包

    DWR是一个Java开源库,帮助你实现Ajax网站。 它可以让你在浏览器中的Javascript...这种Java和Javascript之间的远程调用会让DWR用户感觉像是曾经习惯使用的RMI或SOAP的RPC机制。而且这一过程还不需要额外的浏览器插件。

    dwr.jar包+教程.pdf.ppt

    dwr 正版教程 第1章. DWR入门 1.1 简介 ...这种从Java到JavaScript的远程调用功能的方式使DWR用起来有种非常像RMI或者SOAP的常规RPC机制,而且DWR的优点在于不需要任何的网页浏览器插件就能运行在网页上。

    h_JAVA 2应用编程150例.rar

    实例99 访问SOAP RPC服务 339 实例100 SOAP消息编程 342 实例101 构建SOAP Script服务 347 实例102 应用SOAP EJB Bean服务 354 实例103 部署SOAP COM服务 358 实例104 查询UDDI信息 364 第10章 Java 2 Platform ...

    dwr框架包含帮助文档

    这个从JAVA到JavaScript的远程功能方法给DWR的用户带来非常像传统的RPC机制,就像RMI或者SOAP一样,而且拥有运行在WEB上但是不需要浏览器插件的好处. DWR不认为浏览器/WEB服务器协议是重要的,而更乐于保证编程界面的...

    java应用软件程序设计

    405 实例115 与时间有关的函数 407 实例116 EJB与UML的对应关系 412 实例117 C/S结构的RMI-IIOP应用 414 实例118 使用JTA与JTS 417 实例119 Request-Reply模式的JMS应用 421 实例120 使用Java IDL...

    hessian 在PHP中的使用介绍

    Hessian是一个轻量级的远程的数据交换工具,使用简单的方法提供了RMI(远程方法调用)的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据 ...

    Crispy-开源

    它是一种轻量级的API,用于调用Web服务(RMI,CORBA,WebService(SOAP),XML-RPC,EJB,Hessian,Burlap,REST等),以及如何调用简单的Java Object。 您可以将Crispy集成到面向服务的体系结构(SOA)或富客户端...

    Spring中文帮助文档

    14.2.2. 'Plain-old' JSPs versus JSTL 'Plain-old' JSP与JSTL 14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 ...

    Spring API

    14.2.2. 'Plain-old' JSPs versus JSTL 'Plain-old' JSP与JSTL 14.2.3. 帮助简化开发的额外的标签 14.3. Tiles 14.3.1. 需要的资源 14.3.2. 如何集成Tiles 14.4. Velocity和FreeMarker 14.4.1. 需要的资源 ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.5.1. iBATIS 1.x和2.x的概览与区别 12.5.2. iBATIS SQL Maps 1.x 12.5.2.1. 创建SqlMap 12.5.2.2. 使用 SqlMapTemplate 和 SqlMapDaoSupport 12.5.3. iBATIS SQL Maps 2.x 12.5.3.1. 创建SqlMapClient 12.5.3.2....

    Spring 2.0 开发参考手册

    12.5.1. iBATIS 1.x和2.x的概览与区别 12.5.2. iBATIS SQL Maps 1.x 12.5.3. iBATIS SQL Maps 2.x 12.6. JPA 12.6.1. 在Spring环境中建立JPA 12.6.2. JpaTemplate 和 JpaDaoSupport 12.6.3. 基于原生的JPA实现...

    spring chm文档

    12.5.1. iBATIS 1.x和2.x的概览与区别 12.5.2. iBATIS SQL Maps 1.x 12.5.3. iBATIS SQL Maps 2.x 12.6. JPA 12.6.1. 在Spring环境中建立JPA 12.6.2. JpaTemplate 和 JpaDaoSupport 12.6.3. 基于原生的JPA实现...

Global site tag (gtag.js) - Google Analytics