码迷,mamicode.com
首页 > 其他好文 > 详细

远程调用的几种方式

时间:2015-06-29 22:22:31      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

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


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也是常用的实现远程异步调用的方法之一。

版权声明:本文为博主原创文章,未经博主允许不得转载。

远程调用的几种方式

标签:

原文地址:http://blog.csdn.net/kanglix1an/article/details/46686263

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!