远程服务差异比较

基于分布式的计算,远程服务发挥很大作用,能够让应用充分利用互联网带来的性能和资源利用率提升。目前,远程服务都是基于网络一些协议进行数据传输,完成所谓的client与server的交互。

 

一般使用的传输协议主要有RMI、Hessian、Burlap、Httpinvoker、WebService这5种协议。为什么会存在这么多协议,它们有什么不同的?很简单,只是现在没有一种完美的协议能使用于所有的应用场景,它们的出现只是为了更好的实现特有场景下的需求。

 

  • RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。特别适用于大量数据的传输,这种情况下,其性能可以说是几种服务协议效率最高的。但对于少量数据传输,则不如hessian灵活和高效。
  • Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可以用于任意语言。传输少量对象时,比RMI还要快速高效,但传输数据结构复杂的对象或大量数据对象时,较RMI要慢20%左右。Hessian的好处是精简高效,可以跨语言使用,而且协议规范公开,我们可以针对任意语言开发对其协议的实现。目前已有实现的语言有:java, c++, .net, python, ruby。
    另外,Hessian与WEB服务器结合非常好,借助WEB服务器的成熟功能,在处理大量用户并发访问时会有很大优势,在资源分配,线程排队,异常处理等 方面都可以由成熟的WEB服务器保证。而RMI本身并不提供多线程的服务器。而且,RMI需要开防火墙端口,Hessian不用。
  • Httpinvoker是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服务端和客户端必须使用SpringFramework。使用java的序列化技术传输对象,与RMI在本质上是一致的。从效率上看,两者也相差无几,HttpInvoker与RMI的传输时间基本持平。不过,它只能用于JAVA语言之间的通讯,而且,要求客户端和服务端都使用SPRING框架。
  • Web service是连接异构系统或异构语言的首选协议,它使用SOAP形式通讯,可以用于任何语言,目前的许多开发工具对其的支持也很好。Burlap采用xml的格式。Burlap和Web service效率是一个很大问题。Web service传输的冗余信息过多是其速度慢的原因之一。

目前,在开发的项目中,与外部系统合作时,比较通用的使用REST风格的远程服务请求。而在内部系统之间的跨应用请求,主要使用RMI和Hessian协议进行远程调用。

 

还有一种常用的方法,利用httpClient方式对外交互。这个对轻量级的请求是不错的选择。

你可能感兴趣的:(Web,应用服务器,网络协议,防火墙,网络应用)