- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RMI的基本概念和编程简介
RMI的基本概念和编程简介 RMI的基本概念
Java RMI(Remote Method Invocation)--Java的远程方法调用是Java所特有的分布式计算技术,它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象的方法,从而使Java编程人员可以方便地在网络环境中作分布式计算。面向对象设计要求每个任务由最适合该任务的对象执行,RMI将这个概念更深入了一步,使任务可以在最适合该任务的机器上完成。RMI定义了一组远程接口,可以用于生成远程对象。客户机可以象调用本地对象的方法一样用相同的语法调用远程对象。RMI API提供的类和方法可以处理所有访问远程方法的基础通信和参数引用要求的串行化。 远程方法调用类似于Sun公司1985年提出的远程过程调用(RPC)特征。RPC也要求串行化参数和返回数值数据,但由于没有涉及对象,情况比较简单。Sun开发了外部数据表示(XDR)系统,支持数据串行化。RPC和RMI之间的一个重要差别是RPC用快速而不够可靠的UDP协议,RMI用低速而可靠的TCP/IP协议。 远程方法调用(RMI)和CORBA都是分布式计算技术,在进行分布式时各有其优缺点,为了有助于了解RMI的特点和用途,有必要讨论一下CORBA和RMI的区别。 CORBA(Common Object Request Broker Architecture)是OMG的Object Management Architecture(对象管理结构),它是面向对象的分布式系统建立所依据的标准。CORBA被设计成一个能供所有编程语言使用的一个开放性说明,就是说一个机器上的Java客户可以要求另一个用SmallTalk或C++的机器服务。正是由于这种语言的独立性使得CORBA这么灵活和吸引人。为了适应语言独立性,CORBA采用了非常通用的标准作为其接口。在不同的语言中,远程调用、签名和对象的引入有各自不同的定义,所以CORBA必须尽可能的中立和开放。正是这种通用性是CORBA的一个弱点。当开发人员都采用CORBA时,他们要用一种新的标准定义语言接口,它要求开发者学习新的编程接口,从而减小了远程模型的透明性。 RMI是为仅在Java对Java的分布式计算中而开发的。远程调用的标准是为了Java和应用Java的自然Java签名和调用而开发的,这使得RMI对Java的开发者相当透明而且易于实现。RMI用Java语言紧密集成从而同CORBA相比能够提供非常好的容错能力及对异常的处理。尽管Java的RMI标准不像CORBA那样语言独立,但Java本身是一个独立的平台,这就使RMI在跨平台的分布软件开发中是一个很好的选择。 RMI是Java语言在分布式计算上的基本模型,很多Java的分布式系统,包括我们的EJB,都是建立在RMI的思想上的。RMI系统的一般结构RMI系统包括3层,端头/框架层(Stubs/Skeletons)、远程应用层(Remote Reference Layer)和传送层(Transport),如图所示: 客户机调用远程方法时,请求用客户机的端头调用。客户机引用端头作为远程机上对象的代表。上图所示的所有基础功能在客户机上都看不到。端头代码由rmic编译器长生,并用远程引用层(RRL)将方法调用请求传递到服务器对象。 1) 端头(Stub) 端头就是代表远程对象的客户机方代理,定义远程对象版本支持的所有接口。端头在客户机上运行的程序像本地对象一样引用,从客户机来看与本地对象相似,它还保持与服务器方对象的连接。客户机方的远程应用层返回端头的调动流。客户方的RRL用调用流与服务器方的RRL通信。端头将参数数据串行化,将串行化的数据传递到调动流。 执行完远程方法调用后,RRL将串行化的返回值送回端头,负责反串行化。 2) 框架(Skeleton) 框架是与服务器方RRL接口的服务器方构件。框架接受客户机方RRL的方法调用请求。服务器方RRL要反调动发送到远程方法的任何变元。然后框架调用服务器方的实际对象实现。框架还负责接收来自远程对象的返回值并将其调动到调动流中。 3) 远程引用层(Remote Reference Layer) 远程引用层(RRL)负责维护不与具体端头或框架模型相关的独立应用协议。这个灵活性使RRL的改变不会影响另外两层。RRL涉及低级传送接口,负责向端头和框架层提供流。 RRL通过传送层用客户机方面和服务器方构件通信。客户机方构件包含远程服务器的特定信息。这个信息传递到服务器方构件,因此只依赖于服务方RRL。服务器方RRL负责引用语法和处理这些语法之后再向框架发送远程方法调用。客户机和服务器方构件之间的通信由传送层处理。
原创力文档


文档评论(0)