公司内部不同的应用程序在不同的公司需要沟通。企业级服务总线(ESB)就是这样被创建作为支持应用程序集成的工具。但是什么是ESB呢?什么时候适合用集成套件呢?还有哪一个产品是最适合下一个项目的呢?这篇文章就解释了为什么没有一种良好的解决方法,还有为什么ESB可能也是一种错误的选择。选择正确的产品是项目成功的关键。
来自不同厂商的大量产品都包含了“企业服务总线”名称。不幸地是,这个词汇并没有一个标准的定义。产品因此也提供许多不同的特性。在ESB被使用之前首先应该有个清晰的定义。在下面的内容中,ESB是被定义为一种协助开发者的应用集成软件产品,并且提供必要的基础设施去实现路由,转译和一些其他的集成工具。在集成的复杂路径,ESB通常介于框架和套件作为应用集成的替代,正如以下图片所示:
图片1:替代应用集成
在ESB被定义之后,下一节解释什么时候ESB应该被考虑,并且什么时候集成框架或者集成套件是一个更好的选择
就像一个框架一样,ESB用于集成应用程序。ESB是基于某一框架的隐式实现。然而,它是一种更为强大的产品。与框架相比,除了最基本的框架功能之外,ESB为应用程序在发布,管理和在运行时的监控提供了强壮的工具支持。另外,对于各类集成场景的实现提供了图形化编辑。集成逻辑能以“拖放”的方式建模,对应的源代码会自动生成。商业对ESB完全支持。
ESB相比于纯框架的最大优势在于有最好的工具,这些工具将大大降低成本和复杂度。集成问题在一个高度的抽象水平得以解决。
下表对比了商业的和开源的ESB产品及套件的长处和不足(绿色表示好,黄色表示一般,红色表示差)。总体来说商业产品和开源产品之间的差异在于:商业产品提供更多的功能和“强有力”的售后支持。然而,问题是“这些真的是必须的么?”必须记住的是所需的付出、系统的复杂性以及费用都会相应变得更高。开源产品在易用性、灵活性、扩展性和费用方面都更有竞争力。
标准 |
商业产品 |
开源产品 |
易用性 |
安装过程相当复杂(需要厂商的顾问来安装!?),"工具的地域" |
一键安装 (有时在Mac上也能实现),安装后几分钟即可使用,统一的操作平台 |
运维和监控 |
强大的工具支持(如运行管理和监控),无需关心源码,可通过图形界面进行定制 |
工具支持较弱(如运行管理、监控、和其他厂商的产品进行集成),无需关心源码,可通过图形界面进行定制 |
社区支持 |
购买服务,有论坛(但不是能获得帮助的真正的社区) |
开源项目有对应社区,同时产品也有自身的社区 |
商业支持 |
7×24商业支持,SLA任你选择, 无数的服务商 |
7×24商业支持,但选择面更小,需要去寻找本地的顾问和支持 |
功能性 |
集成功能再加上很多其他的功能(BAM, CEP, EDA,等等等等等) |
集成功能在加上少许其他功能 |
灵活性 |
提交变更申请、再等上很久、然后等来一个付款要求,或者,付上一大笔钱、然后马上就给你搞定 |
开源、想做啥都行 |
扩展性 |
自己做(很难很难)或付钱购买服务 |
扩展基于标准,或事实标准 |
连通性 |
提供各类技术和商业产品的连接适配器 |
提供各类技术和商业产品的连接适配器 |
费用 |
高(十分高) |
较少 |
许可 |
复杂的价格条款,什么东西都要付费(升级、迁移到虚拟机、随便其他什么。。。) |
订阅付费模式、可免费升级、成本可预见、可降级 |
解释完商业产品和开源产品之间的主要差异,接下来将特别介绍几个产品,将分别对这些候选产品做一个概览,包括少许实用性方面的意见。
几乎所有的商业集成产品厂商,如IBM和Oracle,提供的解决方案都包含应有尽有的功能。在开源软件方面,特别值得一提的是拓蓝统一平台和WSO2平台,因为这两家开源厂商同样提供完整的套件。此外,还有一些仅提供ESB产品,其中最终于的莫过于Mule ESB和Fuse ESB。
Oracle Service Bus是Oracle目前的ESB产品,它是Oracle Fusion中间件系列(就是本文定义的套件)的一个组成部分,Fusion中间件套件还包含很多其他产品,例如,SOA套件、Coherence(分布式缓存)、CEP(复杂事件处理)、BPEL过程管理、企业消息服务(MQ)、服务注册管理等等。
几乎没什么功能是Oracle的套件无法提供的,各类工具都很强大而稳定,绝大多数产品都有图形化的编辑界面,各种可想像到的商业服务等级应有尽有。如果这些都是你真正需要的,那么选择Oracle绝对没错。但这些强大的套件代价不菲,并且也不要低估这些产品带来的复杂性,此外,你还必须注意不那么透明的定价模式下高级许可和支持的花费。
OFM基于Java EE、BPEL、SOAP和SCA等标准,这些产品是Oracle自行开发或不断收购来的,因此,这些产品也基于不同的代码库,并且往往需要使用不同的开发工具。下载这些产品和工具的总量会很快会超过20G。安装过程相当繁琐,往往要搞上几天,哪怕你只是将在你的笔记本上简单装下也是如此。这些产品都相当重,运行会需要相当高的资源配置。
顺便说下,你只要把Oracle替换成IBM、把Fusion中间件替换成WebSphere,以上一切仍然成立,仅有的区别是IBM官方提供3个ESB产品:Message Broker、WebSphere ESB和DataPower SOA设备(一个盒子)。同样,Tibco、微软和SAP在商业ESB和集成套件市场上也扮演着重要的角色。
总的来说,商业集成套件能够提供应有尽有的功能和服务等级,然而,很多功能和服务等级在多数项目里并用不上。在此种情况下,有必要评估下开源产品,接下来将介绍几个最重要的产品。Mule ESB是第一个成功地开源ESB。它与之前提及到的开源ESB产品有很多共同的特性。包括非常简单的一键安装("one click")和直观的基于Eclipse的工具。通常,开源ESB是非常轻量级的和可扩展的解决方案。除了免费的开源版本和紫外,商业的企业版本是可获得的。这将就对产品提供了额外的功能和支持。
对于这些仍然不清楚的,应该知道“开源”并不意味着“免费”。即使是开原供应商也必须赚钱,免费的话将无法开发产品和提供支持。然而,对于客户的价格是非常优惠的,也没有像私有产品供应商那样,建立在一张模糊的价格单上。虽然开源产品版本能在没有授权成本的情况下使用(即使在产品中)。然而,时常开源版本只用于做实验或做一个概念证明,以后升级到企业版额外的功能和支持。
作为相同的建议,Mule ESB是纯ESB。相对于像Apache Camel或Spring 集成框架,对于集成场景提供了优秀的图形化编辑实现,如SAP或Salesforce的B2B产品提供可用的连接。然而,套件的功能在Mule ESB中却丢失了。对于这种情况,ESB必须和其他供应商的产品相结合。Mule ESB的短板是开发社区小,严格的licensing 模型和悠闲的源代码。在这一点,其竞争对手有明显的优势。
2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务