分享

远程调用框架选型

 KILLKISS 2012-03-29
最近看了几个远程调用框架的文档资料,也google了不少与java远程调用相关的日志和文章。感觉受益颇深,整理出来和大家分享。
    到目前为止,我所接触到的java远程调用的框架或技术有如下几种:RMI、Hessian、Burlap、Spring HttpInvoker And Web Service。结合实际情况,我就这几种框架或技术做了一个大致的比较,总结如下。

   RMI:最原始也是最“低级”的远程调用技术,它是在网络传输层TCP/IP协议的基础上实现了一个JRMP协议,但也正因如此,使得它在服务器和客户端之间的字节流传输速度或者调用速度是最快的。RMI传输层通常试图将直接套接字在Internet的主机上打开。然而,许多Intranet的防火墙不允许这样做。所以,RMI调用会遇到被防火墙阻拦的情况。(PS:要透过防火墙,传输层可在防火墙信任的HTTP协议范围内嵌入RMI调用。将RMI调用数据作为HTTPPOST请求的主体发送出去后,反馈信息将返回到HTTP响应主体内。)
   Hessian/Burlap:这是由同一家叫Caucho Technology的公司(http://www./)提供的基于HTTP协议的两个不同的轻量级远程服务框架。你可能会好奇,为什么Caucho对同一个问题有两种解决办法。事实上,Hessian和Burlap是同一个问题的两个方面,但每个都服务于略微不同的目的。Hessian,像RMI那样,使用二进制消息来建立客户端和服务端之间的交流。但与其他二进制远程技术(如RMI)不同的是,它的二进制消息可以移植到其他非Java的语言中(它实现了一种跨编程语言的对象序列化方法)。Burlap是一种基于XML的远程技术,这使得它自然而然地可以移植到任何可以解析XML的语言中。正由于它的XML,比起Hessian的二进制格式 来,它的可读性更强。)但和其他基于XML的远程技术(例如SOAP或XML-RPC)不同,Burlap的消息结构是尽可能的简单,不需要额外的外部定义 语言(如WSDL或IDL等)。
    Spring HttpInvoker:Spring HttpInvoker则是吸取了上述两种远程调用实现的长处,首先是基于HTTP协议,可穿透防火墙;其次,它采用了java语言本身提供的序列化方法,易于实现。再结合Spring本身轻量级,可灵活配置等的特点,为我们提供了一种很好的远程调用实现方案。但由于依赖java语言本身的序列化方法,它只能限于在java语言环境中使用(服务器和客户端必须同时使用java语言)。
    Web Service:这是最后也是最强大的一种远程调用解决方案。它基于SOAP协议(http+binding),采用XML技术来描述服务器端服务接口和客户端的调用,不受编程语言和平台环境限制。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多