远程服务差异比较
基于分布式的计算,远程服务发挥很大作用,能够让应用充分利用互联网带来的性能和资源利用率提升。目前,远程服务都是基于网络一些协议进行数据传输,完成所谓的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。目前,在开发的项目中,与外部系统合作时,比较通用的使用REST风格的远程服务请求。而在内部系统之间的跨应用请求,主要使用RMI和Hessian协议进行远程调用。
?
还有一种常用的方法,利用httpClient方式对外交互。这个对轻量级的请求是不错的选择。