Java远程通讯可选技术及原理(二)

RMI

  RMI 是个典型的为java定制的远程通信协议,我们都知道,在single vm中,我们可以通过直接调用java object instance来实现通信,那么在远程通信时,如果也能按照这种方式当然是最好了,这种远程通信的机制成为RPC(Remote Procedure Call),RMI正是朝着这个目标而诞生的。

  来看下基于RMI的一次完整的远程通信过程的原理:

  1、客户端发起请求,请求转交至RMI客户端的stub类;

  2、stub类将请求的接口、方法、参数等信息进行序列化;

  3、基于socket将序列化后的流传输至服务器端;

  4、服务器端接收到流后转发至相应的skelton类;

  5、skelton类将请求的信息反序列化后调用实际的处理类;

  6、处理类处理完毕后将结果返回给skelton类;

  7、Skelton类将结果序列化

,通过socket将流传送给客户端的stub;
  8、stub在接收到流后反序列化,将反序列化后的Java Object返回给调用者。

  来看jboss-remoting对于此过程的一个更好的图示:

  根据原理来回答下之前学习应用级协议带着的几个问题:

  1、传输的标准格式是什么?

  是Java ObjectStream。

  2、怎么样将请求转化为传输的流?

  基于Java串行化机制将请求的java object信息转化为流。

  3、怎么接收和处理流?

  根据采用的协议启动相应的监听端口,当有流进入后基于Java串行化机制将流进行反序列化,并根据RMI协议获取到相应的处理对象信息,进行调用并处理,处理完毕后的结果同样基于java串行化机制进行返回。

  4、传输协议是?

  Socket。

XML-RPC

  XML-RPC也是一种和RMI类似的远程调用的协议,它和RMI的不同之处在于它以标准的xml格式来定义请求的信息(请求的对象、方法、参数等),这样的好处是什么呢,就是在跨语言通讯的时候也可以使用。

  来看下XML-RPC协议的一次远程通信过程:

  1、客户端发起请求,按照XML-RPC协议将请求信息进行填充;

  2、填充完毕后将xml转化为流,通过传输协议进行传输;

  3、接收到在接收到流后转换为xml,按照XML-RPC协议获取请求的信息并进行处理;

  4、处理完毕后将结果按照XML-RPC协议写入xml中并返回。

  图示以上过程:

  同样来回答问题:

  1、传输的标准格式是?

  标准格式的XML。

  2、怎么样将请求转化为传输的流?

  将XML转化为流。

  3、怎么接收和处理流?

  通过监听的端口获取到请求的流,转化为XML,并根据协议获取请求的信息,进行处理并将结果写入XML中返回。

  4、传输协议是?

  Http。

  --------------------------------------------------------------------------------------------------------------------------------------------------

Binary-RPC

  Binary-RPC看名字就知道和XML-RPC是差不多的了,不同之处仅在于传输的标准格式由XML转为了二进制的格式。

  同样来回答问题:

  1、传输的标准格式是?

  标准格式的二进制文件。

  2、怎么样将请求转化为传输的流?

  将二进制格式文件转化为流。

  3、怎么接收和处理流?

  通过监听的端口获取到请求的流,转化为二进制文件,根据协议获取请求的信息,进行处理并将结果写入XML中返回。

  4、传输协议是?

  Http。

  --------------------------------------------------------------------------------------------------------------------------------------------------
  SOAP

  SOAP 原意为Simple Object Access Protocol,是一个用于分布式环境的、轻量级的、基于XML进行信息交换的通信协议,可以认为SOAP是XML RPC的高级版,两者的原理完全相同,都是http+XML,不同的仅在于两者定义的XML规范不同,SOAP也是Webservice采用的服务调用协议标准,因此在此就不多加阐述了。

  --------------------------------------------------------------------------------------------------------------------------------------------------
CORBA

  Common Object Request Broker Architecture(公用对象请求代理[调度]程序体系结构),是一组用来定义“分布式对象系统”的标准,由OMG(Object Menagement Group)作为发起和标准制定单位。CORBA的目的是定义一套协议,符合这个协议的对象可以互相交互,不论它们是用什么样的语言写的,不论它们运行于什么样的机器和操作系统。
  CORBA在我看来是个类似于SOA的体系架构,涵盖可选的远程通信协议,但其本身不能列入通信协议这里来讲,而且CORBA基本淘汰,再加上对CORBA也不怎么懂,在此就不进行阐述了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值