一、境遇
不同web项目之间需要交互些数据。当然WebService是项目本来就提供了的接口。很多客户对它很介意。
解决方案1、
相同架构情况下,直接把项目重构再一起。
优点:无。缺点一堆,还不如使用webservice。
解决方案2、
使用远程调用通讯的一些开源框架帮忙
eg:RMI /Httpinvoker/Hessian /Burlap/WebService 等等...
优点:如RMI,Httpinvoker,Hessian传输速度都很快。
二、远程调用解决方案
RMI :
Remote Method Invocation为Java非常重要的底层技术,传输稳定高效。有一些开源的远程调用组件以rmi为底层可以选择。但是仅仅支持Java,有一些局限。
Httpinvoker:
这是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服务端和客户端必须使用SpringFramework。
Hessian:
hessian支持跨语言,采用的是二进制RPC协议,基于HTTP传输,服务端不用开防火墙端口。传输速度速度也不错,对象过于复杂会影响速度。
效率区别
RMI > Httpinvoker >= Hessian >> Burlap >> web service
最终决定采用Hessian来解决远程交互。
三、使用Hessian构建系统之间的桥梁
系统B、系统C 获取系统A数据。
1、系统A开发对外传输数据的接口。
2、开发适配系统A对外接口的hession客户端接口组件(包含对象、接口方法)。
3、系统B/C等其他系统依赖该组件,就可以直接调用该组件的方法获取数据。
4、配置A系统与组件的连接设置。
适用于 A系统为主数据中心,其他周边系统多为依赖的情况。
四、关于Hessian的使用....
当然,这种方式只适合简单的提供远程服务,如果企业应用到了一定规模,采用面向服务的分布式架构是必不可少的。那么Zookeeper+Dubbo是比较适合的方式。