远程调用的几种方式

      在分布式服务框架中。最基础的问题就是远程服务是怎么通讯的。首先来看看计算机系统网络通信的基本原理。网络通信须要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO来实现。当中传输协议有tcpudp等等。tcpudp都是在基于Socket概念上为某类应用场景而扩展出的传输协议。网络IO。主要有bio nioaio三种方式,全部的分布式应用通讯都基于这个原理而实现,仅仅是为了应用的易用。各种语言通常都会提供一些更为贴近应用易用的应用层协议。在java领域中知名的有:RMIXML-RPCBinary-RPCSOAPCORBAJMS等。
Java领域中有非常多可实现远程通讯的技术。比如:RMIMINAESBBurlapHessianSOAPEJBJMS 等,这些技术都是在协议基础上实现的。那么我们主要讨论一下各个协议。

RMI
     RMI是个典型的为java定制的远程通信协议, 我们都知道,在single vm中,我们能够通过直接调用java object instance来实现通信,那么在远程通信时,假设也能依照这样的方式当然是最好了。这样的远程通信的机制称为RPCRemoteProcedure Call),RMI正是朝着这个目标而诞生的。
     传输的标准格式是Java Object Stream;基于Java串行化机制将请求的Java Object信息转化为流。传输协议是Socket

 
XML-RPC
      XML-RPC也是一种和RMI类似的远程调用的协议,它和RMI的不同之处在于它以标准的xml格式来定义请求的信息(请求的对象、方法、參数 ),这种优点是在跨语言通讯的时候也能够使用。所以RMIRPC的差别之中的一个是RPC是跨语言的

      传输的标准格式是XML。将XML转化为流。传输协议是HTTP

Binary-RPC
       Binary-RPCXML-RPC是差点儿相同,不同之处仅在于传输的标准格式由XML转为了二进制的格式。
       传输的标准格式是二进制文件。将二进制文件转化为传输的流。传输协议是HTTP
 
SOAP
        SOAPSimpleObject Access Protocol),是一个用于分布式环境的、轻量级的、基于XML进行信息交换的通信协议,可以理解为SOAPXML RPC的高级版。两者的原理全然同样。都是http+XML,不同的仅在于两者定义的XML规范不同。SOAP也是Webservice采用的服务调用协议标准。
 
CORBA
      Common Object Request BrokerArchitecture(公用对象请求代理[调度]程序体系结构),是一组用来定义“分布式对象系统”的标准,由OMG(Object Menagement Group)作为发起和标准制定单位。CORBA的目的是定义一套协议,符合这个协议的对象能够互相交互,不论它们是用什么样的语言写的。不论它们执行于 什么样的机器和操作系统。CORBA是个类似于SOA的体系架构。涵盖可选的远程通信协议,但其本身不能列入通信协议。
 
JMS
      JMS。是实现java领域远程通信的一种手段和方法。基于JMS实现远程通信时和RPC是不同的。尽管能够做到RPC的效果,但由于不是从协议 级别定义的。因此我们不觉得JMS是个RPC协议,但它确实是个远程通信协议,在其它的语言体系中也存在着类似JMS的东西,能够统一的将这类机制称为消 息机制。而消息机制呢,一般是高并发、分布式领域推荐的一种通信机制,这里的主要一个问题是容错。JMS注重的是消息交换,RMI注重的是对象方法调用,所以目的不同。JMS大多时候是异步的松耦合,RMI大多时候是同步的紧耦合。

      JMS规定的传输格式是Message,将參数信息放入Message中,传输协议不限。基于JMS也是经常使用的实现远程异步调用的方法之中的一个。
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值