EAI概述,需求,功能,技术要点
1. EAI的原始需求
2. 需要解决的问题
3. EAI平台软件
4. EAI项目开发过程
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1. EAI的原始需求
1.1 企业应用系统的构成因素
企业的信息化发展是一个渐进的过程,从最初的大型机系统到现在的SOA。 漫长的时间内,使用了各类各样的机器,平台,程序语言,数据格式,设计开发策略。在一个企业中(如果企业长命的话),通常都会存在很多由这些不同种类的元素构建的千差万别的系统。
表1 构成企业信息系统的元素
元素 |
种类 |
说明 |
机器 |
主机系统MainFrame, UNIX工作站,PC, 嵌入式设备 |
对于应用软件而言,机器的差别已经被程序语言和操作系统屏蔽 |
操作系统 |
ZOS, UNIX,Linux, Windows, Symbian |
单片机可以不使用操作系统 |
计算机编程语言 |
汇编,Cobol, C, C++, Java, Python, Ruby |
不同语言中的数据类型定义可能都是不一样的 |
远程方法调用技术 |
RMI, CORBA,COM,EJB,Web Service |
这些技术的调用机制都比较类似 |
数据格式, |
纯文本,XML |
不论在内存里,文件中,结构数据的存储都需要有预定义的格式 |
行业数据协议 |
ebXML, FIXML , ISO 20022 |
这是数据语义层面的协议,针对不同行业定义在行业内统一的数据模型 |
数据存储 |
文件,数据库 |
数据库也是使用文件来保存数据 |
设计开发策略 |
面向过程,面向对象,面向组件,面向服务 |
有一个目标贯穿这些方法的发展, 就是提高程序或者系统的复用性 |
|
|
|
1.2 系统互联的接口方式
这些系统自成一派,彼此或有星点联系,或者老死不相往来。系统互联接口的几种方式如下。
表2 程序互联接口方式
互联接口方式 |
使用技术 |
耦合性分析 |
进程间通信 |
信号灯,管道,文件锁 |
彼此会影响程序的流程 |
程序方法调用 |
调用程序API, 远程方法调用 |
API的功能,输入输出数据的改变会影响API的调用方 |
数据共享 |
共享内存,文件,数据库 |
数据格式,数据模型的改变对互联的系统都会造成影响 |
网络传输 |
TCP, HTTP, 消息中间件 |
通信协议,数据格式,数据模型的改变会造成影响。 使用消息中间件是现在最通用的程序互联的传输层方式。 |
组件,服务调用 |
CORBA,COM,EJB,Web Service |
组件和服务调用技术提供了耦合性最小的系统互联接口方式 |
1.3 数据的差异
其中各个系统数据的差异有三个层次
表3 数据差别的三个层次
数据差异的层次 |
描述 |
技术 |
数据类型 |
基本数据类型,复杂数据类型定义 |
不同程序语言可能有不同的数据类型定义 |
数据格式 |
内存,网络或者文件中的结构数据存放格式。不同的程序语言对内存中的结构数据有自己的数据格式,网络通信程序都有私有的线上数据格式。应用程序可以定义私有的数据序列化格式,用来把结构数据存放在文件中。 |
纯文本,XML |
数据定义 |
这是数据的语义,即各个数据定义代表什么含义。各个行业针对本行业内部的各种实体和操作,可定义相应的数据协议规范,方便行业应用系统的互通互联 |
ebXML, FIXML , ISO 20022 |
1.4 传统的应用集成方式
面对如此纷杂的IT系统, 不论是管理维护,还是基于已有系统开发一个新的产品或系统,都会是一项相当复杂难以控制的任务。 对于一个实施企业信息化工作在5—10年阶段的企业,这种情况十分常见。 事实上,对于这些企业现在面对很多新的需求,需要基于已有的系统的功能来实现新的业务需求。新系统需要跨很多已有系统或者第三方套件,平台,或者通过调用API, 或者通过网络通信,或者通过数据库同步,多种方式连互联互通。 在没有EAI平台的帮助时,传统的开发实现方式如下.
图1 传统方式的集成项目开发
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
如图所示我们需要基于已有系统实现一个新的业务需求,要按照即定的流程分别调用系统1,2,3的方法,得到最终的结果。在新的实现里,需要调用三种不同的API, 并且要在各个系统间做数据转换。 概括一下,为实现新的业务,我们将面对:
(1) 各个系统的不同接口,可能是不同程序语言的API, 消息,或者访问数据库。
(2) 不同系统的接口有不同的调用规范,即调用顺序,上下文关系,Session等。
(3) 不同的数据。包含上文提到的三个方面的不同。
(4) 新业务流程的编写。
我们需要了解三个系统的接口及其调用规范, 需要在新系统至系统1, 系统1至系统2,系统1至系统3, 系统2至新系统,系统3至新系统共5个端到端方向,在数据差异的三个层次上,做数据转化。极致情况下,需要在任意两个系统间做数据转换,假定系统数目为n, 那么需要做的数据转换的次数为C2n=n(n-1)/2。对于n的平方的数量级而言,这种数据转换的工作量是极其大的。同时还需要使用程序语言硬编码实现业务操作流程,很显然这种方式在业务流程经常发生变化时,更新的效率低下,同时也难以保证程序的可靠性。
综上所述,我们使用传统集成开发方法实现跨多种子系统,多种第三方软件平台的项目时,会遭遇开发工作量巨大,程序复杂难以管理,系统复用性差,扩展性差等问题。 这急需有一种新的集成开发方法, 新的集成开发平台来简化这些工作。 这就是EAI的需求由来。