现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已是百花争鸣的景象了。现在我就对现有的各类开源ESB总线根据性能、可扩展性、资料文档完整程度以及整合难易程度等方面展开。数据库
一. CXF安全
CXF的定位不是ESB总线,而是一个服务框架(Service Framework),主要仍是为关于服务的应用提供API上的支持,或者上下文上的管理。多线程
但是它的前身之中的一个的Celtix就是IONA公司捐献给开源界的ESB总线,因此整体上仍是能提供ESB总线的功能(需依靠与其余的容器)。在CXF中的总线仅仅是起到一个共享资源的提供者的做用。这些贡献资源就至关于JBI规范中的绑定组件(BC)或服务引擎(SE)。即便如此CXF并无提供了对JBI规范的完整实现。可以说它仅仅是一个类似的JBI容器。架构
CXF支持与除了HTTP以外的其余协议的通讯绑定,好比REST、JSON和CORBA等,因此对于Ajax有较强的兼容性。这相对与其余的ESB总线而言可以说是一个较大的优点。负载均衡
但是CXF的ESB总线是根据Spring框架来实现的,由Spring来管理Bus中的各个组件。而Spring对各个Bean或组件的管理是经过一个上下文的配置文件来实现的。这种方式相对与其它的ESB总线(好比根据JMX)的方式而言,则不支持动态的热部署。也就是说CXF不是一个JBI容器,它必须依附与其它的容器来执行。现有的资料来看,CXF眼下可以部署在JBoss和BEA Weblogic中,Tomcatserver由于不支持完整的J2EE规范,特别是基于JCA的EJB,因此对CXF支持的程度不理想。尽管资料中没有涉及到Geronimo,但是以Geronimo对J2EE规范的兼容程度来看,特别是EAR文档的支持,在Geronimo中部署CXF应该没有什么太大的障碍。框架
相同你可以在使用Spring的应用中嵌入CXF,而这仅仅需要在Spring的配置文件里填写对应的配置信息就能够。分布式
关于CXF的文档较为丰富,这部分是由于它自己是整合了Xfire和Celtix这两个自己较为成熟的开源项目。另外它较大的依赖于Spring框架,因此假设对Spring较为熟悉的话,在使用上通常就没有太大的障碍了。性能
二. Open ESB学习
OpenESB是Sun公司提出来的开源ESB项目,因此对JBI规范的支持程度就不用多说了。而GlassFish ESB则是将OpenESB的核心执行环境与GlassFish应用server以及NetBean的集成开发环境整合在一块儿的有一个ESB项目,固然当中还包括了一些OpenESB中已有的组件(子集)。spa
在OpenESB中提供了能够支持WS-BPEL2.0的引擎。但是现在这个组件支持WSDL1.1,暂不支持WSDL2.0。而且这个引擎要依托与NetBean集成开发平台,起码仅仅能获得基于NetBean的对应开发包和组件包。但是这个组件对BPEL提供了强大的支持,当中包含支持端点状态的监控、支持多线程运行、业务流程的调试、系统错误的可靠性恢复中各个业务流程实例的数据库持久化以及负载均衡等。
在资料方面仅仅有一个演示视频,主要仍是基于NetBean平台的使用介绍。其它发布的资料则则较少,特别是API方面差点儿没有。因此假设要对OpenESB进行依照自身的要求进行扩展则较为困难,除非对OpenESB的源码进行全面的分析。
三. ServiceMix
ServiceMix是Apache基金会下的一个ESB总线,同一时候也是一个独立的JBI容器(也就是说它支持完整的JBI规范)。说它是一个独立的JBI容器,是因为它拥有本身独立的执行环境,能像应用server同样启动,并支持动态的热部署等,这一点则差异于CXF。
ServiceMix的容器执行环境採用内核的架构,并以Geronimo关于J2EE方面的实现为基础(固然也就支持J2EE的各方面规范,好比安全性方面的JAAS等),因此在性能上仍是较为出色的。在通讯上,整合了ActiveMQ,也支持多种的通讯协议,好比HTTP和JMS。同一时候在管理组件上採用了JMX的管理架构,从而能够对部署在总线上的各类组件进行动态的配置和管理,或经过Web的形式,或经过JMX远程訪问都可。ServiceMix内核能够整合到所处的操做系统中,从而做为OS的对外提供的服务。差异与其它总线的是,ServiceMix还提供了本身的脚本命令控制台,并经过一些简单命令来管理应用组件以及ServiceMix内核实例。
关于ServiceMix的资料也较为的完备,当中固然也包含一些简单的小样例。关于组件扩展方面和流程引擎整合方面的具体资料则不够具体。假设要作进一步的总线上的扩展,则需要对源码和样例进行较为深刻的学习和研究,固然这一切的基础是对JBI的规范有较为全面的了解。
四. JBoss ESB
JBoss ESB是JBoss社区为面向SOA而提出的一个EAI系统平台。它提供了很是多EAI自己所应具备的功能,好比业务流程监控、集成开发环境、工做流用户接口、业务流程管理、分布式计算架构以及做为应用容器的功能等。可以说JBossESB在功能上是较为强大的。但相对于上面的总线而言,它的技术架构方案是最独立的。因为它除了支持J2EE标准外,对于JBI规范压根就不沾边。固然也就不存在JBI规范中的规范化消息路由、服务引擎和绑定组件了。JBossESB除了支持 Web Service外,还支持多种的远程调用协议,好比JMS。仅仅是相对于ServiceMix和CXF而言,假设要对JBossESB进行扩展,可能要花费较大的时间和精力。
JBossESB相对上述的开源项目而言,一个很是大的优点在于文档资料是最为丰富和完备的。因此在开发和扩展上减少了不小的阻力。它并且依托于成熟的JBoss社区,周围齐全的开源项目支持,为后期的平台扩展提供了丰富的选择空间。