强烈推荐使用 Hessian/Burlap 作为J2EE分布式系统内部 的 远程服务方案
在J2EE分布式系统中,我们需要选取某种远程服务协议,在分布的进程之间进行交互。可供选择的协议 EJB、 基于SOAP的Web Service 这些重量级的,也有像RMI、Socket这种比较原始的。但最近了解到了Caucho公司的 Hessian/Burlap方案,我觉得这种方案才是最合适的,因为它没有上文所述其他几种方案的缺点,而且,如果把Hessian/Burlap与Spring结合使用,设计者将感到无比的方便。
下面就逐个说说这些“不好的”方案,再介绍Hessian/Burlap方案。
a.EJB。
这就不用说了,EJB极其笨重,配置会累死人,性能也糟糕。
b.基于SOAP的Web Service。
有着和EJB类似的缺点。声明一个服务很麻烦,而且用SOAP协议传输数据会浪费大量的带宽,因为SOAP基于XML,而XML中大部分的数据并不一定是业务数据,而仅仅是元数据。
c.RMI。
如果与Spring结合使用,配置不算麻烦。但是其服务接口受到制约(必须继承java.rmi.Remote接口),而且RMI服务只能使用1109端口。
d.Socket。
这应该是最让程序员放心的协议了,因为程序员想怎么搞就怎么搞。但有两个代价:
i.要做很多底层的、基础性的事情。比如说,程序员不得不手写烦人的Socket客户端和服务端代码,要直接与 Socket、InputStream、OutputStream 等底层类打交道;要手工实现安全性、并发、转码、日志等功能;Socket服务器也要通过一个独立的MAIN程序来启动,而不能放到J2EE服务器产品运营,也就是说利用不了J2EE服务器的监控功能。
ii.使用SOCKET方式交互,需要设计交互的报文规范。这是一件非常累人的工作。报文既要使用统一的方式来组报和解报、又要保证报文不会引起歧义。当远程服务的接口变更时,报文可能要做极大的变更。举个例子,在原来的报文中插入一个字段,其后面的字段位置都要后移,这样的话,组报、解报代码可能都要大改。
e.Hessian/Burlap。
它的优点就是解决了以上几种方案的缺点。
i.易用性。非常方便,服务不需要继承奇怪的接口,也没有多少配置,只需包装成一个Servet即可。与Spring的注入机制结合使用的话,客户端和服务端都会很舒服。
ii.性能好。Burlap也是用XML传输数据,但比SOAP简约的多;而Hessian是二进制协议,更加节省带宽。
iii. 它也是基于Http的,它可以穿透防火墙,其实它也是Web Service的一种协议,
iv.为程序员免去了底层性、基础性的工作。因为它是一个Servlet,底层性的工作,比如 输入输出流、并发、日志等事情 都可以交给Tomcat之类的、现成的服务器; 有了应用服务器,还可以获得其他的一些功能,比如监控、集群什么的;它还可以配置用户名和密码,安全性的工作也包干了
v.不用设计报文了。因为服务端的服务是以 JAVA方法 的方式 暴露给客户端的。JAVA方法 很容易作到无歧义,而且改变签名也是件很简单的事情(比如Eclipse就有这种重构功能),这比Socket报文好侍侯多了。
综上所述,真的没有理由不选取 Hessian/Burlap方案。
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/20100105/186270.html
分享到:
相关推荐
同时,Spring鼓励使用标准技术如Servlet、JSP、JTA、JNDI、JDBC和JDO,以及与其他工具(如Hibernate、Velocity、Log4J和Hessian/Burlap)的配合使用。 6. 选择性使用: Spring的设计使得在需要时可以轻松地添加新...
Spring框架的设计鼓励集成标准技术(如Servlet、JSP、JTA、JNDI、JDBC、JDO)以及第三方工具(如Hibernate、Velocity、Log4J、Hessian/Burlap)。当应用需要扩展时,可以选择合适的技术,如分布式事务处理时,可以...
Spring框架设计为与其他标准技术如Servlet、JSP、JTA、JNDI、JDBC、JDO等无缝集成,同时兼容流行的工具如Hibernate、Velocity、Log4J以及Caucho的Hessian/Burlap。当应用需要改进时,开发者可以根据需要选择合适的...
- **技术兼容性**:Spring鼓励与标准技术(如Servlet、JSP、JTA、JNDI、JDBC、JDO)以及第三方工具(如Hibernate、Velocity、Log4J、Hessian/Burlap)的集成。 5. **事务管理** - **Spring的事务管理**:Spring...
- Spring MVC鼓励与标准技术(如Servlet、JSP、JTA、JNDI、JDBC、JDO)以及第三方工具(如Hibernate、Velocity、Log4J、Hessian/Burlap)集成,提供了灵活的选择。 7. **事务管理**: - Spring提供了多种事务管理...
- Java J2EE/JEE:一种广泛使用的Java企业级开发平台。 - jBPM:一个用于工作流和业务流程管理的引擎。 - JGroups:一个Java群集库。 - jQuery JavaScript Framework:一个流行的JavaScript库。 - Lucene:一个高...