现有的开源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中已有的组件(子集)。

在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社区,周围齐全的开源项目支持,为后期的平台扩展提供了丰富的选择空间。

现有一些开源ESB总线的比較的更多相关文章

  1. 几款开源ESB总线的比较

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...

  2. 几款开源ESB总线的比较(转)

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...

  3. ESB总线的核心架构

    根据近期对开源ESB产品的研究,已经对Oracle和Tibco的ESB总线产品的实施经验积累,对ESB总线的核心产品架构有了进一步的清晰认识,将ESB的核心架构整理为上图,上图中看到的内容也是做为一款 ...

  4. 开源消息总线ActiveMQ

    一.消息中间件MOM(Message-Oriented Middleware) 消息中间件是解决异步分布式系统中通讯和排队问题的中间件技术.它利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数 ...

  5. Java开源电商项目比較

    这里比較的都是国外的开源项目,备选项目有: Smilehouse Workspace.Pulse.Shopizer.ofbiz.bigfish.broadleaf 1.Smilehouse Works ...

  6. 现有.NET 开源框架浅析

    自己一直在关注框架,也喜欢捣鼓一些框架,最近我们自己一直是在用OSGI.NET 做插件式模块开发,感兴趣的可以到 http://www.iopenworks.com/   官网了解,在进行OSGI.N ...

  7. ESB(Enterprise Service Bus)企业服务总线介绍

    ESB(Enterprise Service Bus)企业服务总线介绍 ESB全称为Enterprise Service Bus,即企业服务总线.它是传统中间件技术与XML.Web服务等技术结合的产物 ...

  8. 架构设计:系统间通信(34)——被神化的ESB(上)

    1.概述 从本篇文章开始,我们将花一到两篇的篇幅介绍ESB(企业服务总线)技术的基本概念,为读者们理清多个和ESB技术有关名词.我们还将在其中为读者阐述什么情况下应该使用ESB技术.接下来,为了加深读 ...

  9. 【Other】最近在研究的, Java/Springboot/RPC/JPA等

    我的Springboot框架,欢迎关注: https://github.com/junneyang/common-web-starter Dubbo-大波-服务化框架 dubbo_百度搜索 Dubbo ...

随机推荐

  1. activity切换时的overridePendingTransition动画效

      注意,切换方法overridePendingTransition只能在startActivity和finish方法之后调用.第一个参数为第一个Activity离开时的动画,第二参数为所进入的Act ...

  2. 数据结构(11) -- 邻接表存储图的DFS和BFS

    /////////////////////////////////////////////////////////////// //图的邻接表表示法以及DFS和BFS //////////////// ...

  3. EventSource (node.js 与 OC)

    node.js服务器代码: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, ...

  4. mysql innobackupex xtrabackup 大数据量 备份 还原(转)

    原文:http://blog.51yip.com/mysql/1650.html 作者:海底苍鹰 大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.在这里推 ...

  5. Cocos2d-x 关于Android.mk 自动读入CPP

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  6. deque 居然已经实现了 insert 接口

    最近有个开发需求,根据server传递来的广告位来展示某条广告. 但最终存储广告的数据结构是deque,里面存储的东西还是对象(stl 基于拷贝语义). 想了半天,在开头和结尾插入比较方便,在中间插入 ...

  7. AJAX的工作原理及其优缺点

    1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用:使用XHTML ...

  8. Ajax.ActionLink与Ajax.BeginForm使用场所的思考

    Ajax.ActionLink使用在提交参数明确的情况下,如: Ajax.ActionLink("加入购物车", "AddToCart", "Cart ...

  9. SharePoint 2013 自定义翻页显示列表项

    项目需求:自定义开发一个能分页显示列表项的小部件,允许左右翻页,能根据用户权限来显示管理链接等. 效果如下: 技术要求:使用sharepoint rest API 来获取列表项,这样性能高,能够快速响 ...

  10. jQuery实现的瀑布流效果, 向下滚动即时加载内容

    下拉滚动条或鼠标滚轮滚动到页面底部时, 动态即时加载新内容. 后台用 json 传输数据, 示例程序中只写了示例数组.数据也只设置了两个属性, 需根据实际应用改写.   页面用了 ul li 做为容器 ...