详解Java远程通讯可选技术及原理.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
详解Java远程通讯可选技术及原理.pdf

详解Java远程通讯可选技术及原理 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有 很多可实现远程通讯的技术,例如:RMI、MINA、ESB、 Burlap、Hessian、SOAP、EJB和JMS 等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些 是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那 深入了解这些技 术背后的机制就是必须的了,在这篇blog中我们将来一探究竟,抛砖引玉,欢迎大家提供更 多的实现远程通讯的技术和原理的介绍。 基本原理 要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面 去看,网络通信需要做的就是将流从一台计算机传输到另外一台计算 机,基于传输协议和 网络IO来实现,其中传输协议比较出名的有 http、tcp、udp等等,http、tcp、udp都是在 基于Socket概念上为某类应用场景而扩展出的传输协议,网络IO,主要有bio、 nio、aio 三种方式,所有的分布式应用通讯都基于这个原理而实现,只是为了应用的易用,各种语言 通常都会提供一些更为贴近应用易用的应用层协议。 应用级协议 远程服务通讯,需要达到的目标是在一台计算机发起请求,另外一台机器在接收到请求 后进行相应的处理并将结果返回给请求端,这其中又会有诸如onewayrequest、同步请求、 异步请求等等请求方式,按照网络通信原理,需要实现这个需要做的就是将请求转换成流, 通过传输协议传输至远端,远端计算机在接 收到请求的流后进行处理,处理完毕后将结果 转化为流,并通过传输协议返回给调用端。 原理是这样的,但为了应用的方便,业界推出了很多基于此原理之上的应用级的协议, 使得大家可以不用去直接操作这么底层的东西,通常应用级的远程通信协议会 提供: 1. 为了避免直接做流操作这么麻烦,提供一种更加易用或贴合语言的标准传输格式; 2. 网络通信机制的实现,就是替你完成了将传输格式转化为流,通过某种传输协议传 输至远端计算机,远端计算机在接收到流后转化为传输格式,并进行存储或以某种 方式通 知远端计算机。 所以在学习应用级的远程通信协议时,我们可以带着这几个问题进行学习: 1. 传输的标准格式是什么? 2. 怎么样将请求转化为传输的流? 3. 怎么接收和处理流? 4. 传输协议是? 不过应用级的远程通信协议并不会在传输协议上做什么多大的改进,主要是在流操作方 面,让应用层生成流和处理流的这个过程更加的贴合所使用的语言或标 准,至于传输协议 则通常都是可选的,在java领域中知名的有:RMI、XML-RPC、Binary-RPC、SOAP、CORBA、 JMS,来具体的 看看这些远程通信的应用级协议: RMI RMI是个典型的为java定制的远程通信协议,我们都知道,在singlevm中,我们可以通 过直接调用javaobjectinstance来实现通信,那么在远程通信时,如果也能按照这种方式 当然是最好了,这种远程通信的机制成为RPC(RemoteProcedureCall),RMI正是朝着这个 目标而诞生的。 来看下基于RMI的一次完整的远程通信过程的原理: 1. 客户端发起请求,请求转交至RMI客户端的stub类; 2. stub类将请求的接口、方法、参数等信息进行序列化; 3. 基于socket将序列化后的流传输至服务器端; 4. 服务器端接收到流后转发至相应的skelton类; 5. skelton类将请求的信息反序列化后调用实际的处理类; 6. 处理类处理完毕后将结果返回给skelton类; 7. Skelton类将结果序列化,通过socket将流传送给客户端的stub; 8. stub在接收到流后反序列化,将反序列化后的Java Object返回给调用者。 根据原理来回答下之前学习应用级协议带着的几个问题: 1. 传输的标准格式是什么? 是Java ObjectStream。 2. 怎么样将请求转化为传输的流? 基于Java串行化机制将请求的java object信息转化为流。 3. 怎么接收和处理流? 根据采用的协议启动相应的监听端口,当有流进入后基于Java串行化机制将流进行反序 列化,并根据RMI协议获取到相应的处理对象信息,进行调用并处理

文档评论(0)

tangtianxu1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档