进入互联网时代,让人感兴趣的应用很少是独立存在的,比如手机的日历必须与公司的日历同步,销售的系统必须有库存系统交互。企业应用系统之间完成集成后会是的原来的应用变的更好,是一件看上去很美的事情,但是企业应用系统之间的集成远比想象的复杂,特别是一些比较老的应用,并没有提供互联网下相对标准的接口。
企业一般有成百上千个应用组成,这些应用要么定制,要么由第三方获得,什么原因造成这么混乱的局面呢?
首先,创建商业应用很不容易,创建一个独立的,大型的应用来完成一个企业所有的业务几乎是不可能的。即使是最著名的ERP开发商也只是实现了典型企业的部分业务功能。
其次,把业务分散到多个应用中,为企业提供了很大的灵活性,IT可以采购“最好”的财务和“最好”的客户关系管理系统(这里的“最好”指的是最合适自己的),选择灵活性会比选择一个大而全的系统灵活很多。
问题来了,为了支持常见的商业过程和多个应用间的数据共享,需要把这些应用集成起来,进行可靠安全的数据交换。比如:客户新下一个订单可能需要多个系统协完成才能最终实现订单的交付:检查库存,获得货运报价,联系三方运输,核算营业税,交付账单。。。,这些功能分散在不同的系统中,但从从客户角度看来是一个单独的商业交易,因此完成快速而高效的企业系统集成非常关键。
所有的企业集成方案可能会需要应对如下最基本的几个挑战
1. 网络是不可靠的。但是集成必须通过网络把一台计算机的数据传递到另外一台机器上
2. 网络速度慢。通过网络调用比执行一个本地方法慢点多,不是一个数量级的
3. 任何两个应用都是不同的,集成方案需要在使用不同的语言,不同操作系统,数据格式的系统之间完成信息的传递
4. 改变是不可避免的,应用会随时间的改变而改变,集成解决方案必须跟上应用系统改变的步伐。
随着时间的推移,目前市场上免费或者收费的企业集成产品,基本上用了如下四种方法去克服上述挑战
1. 文件传输
一个应用些文件,另一个应用读文件,为此应用之间需要协商文件名,文件位置,文件格式 等相关集成信息
2. 远程调用
一个应用开放部分功能,使得其它应用能够通过远程访问这些功能,这样的通讯是实时而且同步的。
3. 共享数据库
多个应用共享数据库,这样数据就不必从一个应用传递到另外一个应用
4. 消息传递
一个应用向公共的消息通道发布一个消息,其它应用可以从通道中获得这个消息,应用之间同样需要协商消息通道以及消息的格式,这种通道是异步的。
企业集成如此复杂多变,有没有像开发领域一样有解决相关问题的模式可供参考呢?答案是Yes, Gregor Hohpe和Bobby Woolf 两位大师总结了设计,构建和部署消息传递的解决方案,著称“企业集成模式”一书。很多产品框架的设计理念都是来自于本书。