因为公司今年推出了Apusic ESB集成平台,而销售同事希望能够用通俗的方式理解这个产品,于是一段谈话促成了这篇随笔。
Apusic ESB字面意思就是(Enterprise Service Bus)企业服务总线,顾名思义就是把(web services)注册在服务总线上,使应用程序通过统一的服务总线平台获取其他应用提供的服务,目的是可以获取其他应用程序里面的信息,再简单些就是让程序与程序之间可以交换数据。讲到这,有朋友肯定会问,这么简单的事情干吗要整得这么复杂呢,程序里面多写两段代码就可以完成了呀,而且现在市场上做数据交换的东西很多,程序自己写代码交换数据、通过MQ的消息机制交换数据、通过数据交换平台交换数据,现在金蝶又出个ESB交换数据,有什么区别吗?下面我将一一道来。
第一代通过协议传送数据。就是编写代码通过HTTP、FTP、SMB等协议实现数据在应用程序之间的交换,好处是开发过程简单、维护成本低,就像一个工厂买了电瓶车在不同厂房之间运送货物。问题也显而易见,如果是地区性甚至全国性的企业,自己运送货物的成本和效率都变得极为不值。
第二代通过消息传送数据。仍然需要写代码,但是不需要通过某个具体的协议,也不需要与最终目标打交道,只要按照Apusic MQ(消息中间件)提供的消息格式将数据打包,然后告诉MQ目的在哪里,MQ就会负责把打包成消息的数据传送到位,并且还保质保量。就像一个业务扩展后的企业,不再依靠自己找几个人、买几部车的方式来传送货物,而是通过专业化的物流公司,利用物流公司搭建的网络,并按照物流公司制定的货物标准将货物打包,就可以获得专业化的物流服务,从而大幅降低企业本身物流成本和更高的传送质量,因此选择物流公司必须关注网络质量和传送效率是否满足企业需要。
第三代通过数据交换平台传送数据。基于第二代消息中间件(MQ)搭建起一个数据交换平台,平台中还提供了直接访问数据的适配器,程序员不再编写代码,而是制定源数据与目标数据的格式和存取方式,剩下的数据抽取、转换和装载工作就由数据交换平台完成,大大减轻了程序员的工作量。就如物流公司希望提供差异化服务,不再局限于送个东西,而是为用户提供上门服务,用户只需要像点菜一样列出货物清单和送货地点,物流公司就会完成货物打包和发送的事情,大大减轻了企业送货的工作量,当然同样要多付出一点定制化成本。而物流公司在基础平台方面是否采用了优质高效的运输设备,在用户支持方面是否具备专业化的服务能力,就成为用户选型的重要参考条件。
第四代通过Apusic ESB(企业服务总线)传送数据。以前的数据传送方式都是以“推”为主,就是定义好需要传送的数据,然后推向接收方,接收者是被动的接收数据,而无法根据需要从数据源“拉”数据。传送的内容仅仅是数据,必须被接收方整合到自己的应用系统中才能变成有价值的信息。应用之间是数据的传送,数据被转换成信息后还需要整合到业务流程中才能最终完成业务的整合。如果业务发生变更,仍然需要修改代码完成业务整合工作,非常不利于未来应用整合的需要。Apusic ESB通过web service满足业务流程整合需要,这种整合方式就是当今流行的SOA(Service-Oriented Architechture),将数据包装成信息通过服务的方式暴露出来,并统一注册到企业服务总线上。如果是应用本身的业务发生变化,代码的修改不会影响到暴露出来的行为;如果是业务流程发生变化,通过改变业务流程定义文件,将业务流程重组从而实现新业务需要。应用程序通过服务将需要的数据“拉”到本地应用中,从而完成数据交换、信息交换及至业务整合工作,还可以通过自定义方式将常用数据按统一存储到数据仓库中,从而提升了数据使用效率、降低后期维护成本。就如物流公司不仅帮助企业运送货物,还协助企业维护货物清单、建立货物仓库,降低企业货物运输的成本和维护成本,使货物可以根据需求进行运输,从而使资源分配更加合理。