企业应用集成(EA I:Enterp rise Application Integration) 是指对企业中完成不同业务功能的应用系统进行集成, 在它们之间建立起可供数据交流和应用沟通的纽带, 进而使他们之间的信息交互成为可能。通过这种方式使用户可以访问企业的整体信息, 而不必考虑这些具体信息到底是属于哪一个应用系统的, 即各个不同应用系统对用户来说是透明的。
传统的企业应用集成的层次主要有数据级集成、应用接口级集成、业务逻辑级集成等; 数据级集成属于面向信息的集成方式, 该方式可能会导致损坏数据, 打开数据库的安全缺口等; 应用接口级集成属于面向接口的集成方式, 采用该方式对AP I接口进行修改时, 将增加大量的工作量, 也可能会增加现有应用系统的不稳定性。而业务逻辑级集成属于面向过程的集成方式。该集成方式不仅暴露了应用程序的业务逻辑, 而且由于业务逻辑的交叉, 导致了各个集成系统之间的紧耦合性, 降低了应用系统的灵活性, 增加了整个系统维护的难度。
上述3种方式都属于紧耦合的应用系统集成方式。这种紧耦合的集成方式将影响系统的灵活性和扩展性, 阻碍业务的流程调整和优化, 不利于企业业务发展。为解决上述问题, 需要一种面向功能层的企业系统集成方式。该方式不仅能保证原有系统的数据安全性和逻辑安全性, 而且还能实现各系统之间的松耦合, 方便系统流程的重组和优化。SOA的出现,为这一问题提供了一个比较完美的解决方案。
二、面向服务的体系结构(SOA):
2.1 面向服务体系结构简介
SOA(service-oriented Architecture,也叫面向服务的体系结构或面向服务架构)是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立 功能实体实现的一种软件系统架构。SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是 采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交 互。
传统的Web(HTML/HTTP)技术有效的解决了人与信息系统的交互和沟通问题,极大的促进了B2C模式的发展。WEB服务(XML /SOAP/WSDL)技术则是要有效的解决信息系统之间的交互和沟通问题,促进B2B/EAI/CB2C的发展。SOA(面向服务的体系)则是采用面向 服务的商业建模技术和WEB服务技术,实现系统之间的松耦合,实现系统之间的整合与协同。WEB服务和SOA的本质思路在于使得信息系统个体在能够沟通的 基础上形成协同工作。
2.2 SOA结构模型
SOA提供了一种方法, 通过这种方法在构建分布式系统时, 可以将应用程序功能作为服务提供给终端用户应用程序或其他服务。在发现新的商机或危机的预期下, SOA 体系结构形式旨在提供企业业务解决方案, 这些业务解决方案可以按需扩展或改变。SOA 解决方案由可重用的服务组成, 带有定义良好且符合标准的已发布接口。SOA 提供了一种机制, 通过这种机制, 可以将原有系统资源封装成服务后集成到新开发的分布式系统, 而不管它们的平台或语言。SOA中的服务通过服务描述和传输实现了相互之间的交互, 如图1所示。
其中, 服务描述是一种经过协商的模式, 用于描述服务是什么、应该如何调用服务以及成功地调用服务需要什么数据等。传输是一种机制, 用于将来自服务使用者的服务请求传送给服务提供者, 并且将来自服务提供者的响应传送给服务使用 。
2.3 SOA中的工作角色
在SOA服务模型图(图2)中面向服务的体系结构中主要有三种角色:
(1) 服务消费者是需要使用服务的应用程序或其它的服务。通过对注册中心的服务进行查询后, 根据接口说明信息并使用某种传输协议与服务绑定并执行服务功能。
(2) 服务提供者是创建服务的实体。可以从服务消费者处接受请求并可以远程执行所请求服务。通过向注册中心发布服务接口信息以供服务消费者发现和访问服务。
(3) 服务注册中心处于中心位置提供了展示服务的功能。服务消费者通过查询存储有服务信息库的注册中心以找到感兴趣服务的接口信息。
2.4 SOA三大基本特征
一、 独立的功能实体 :在Internet这样松散的使用环境中,任何访问请求都有可能出错,因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问题。 SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如.NET Remoting,EJB,COM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时这些组 件的寿命也随之结束。这样当宿主本身或者其它功能部分出现问题的时候,在该宿主上运行的其它应用服务就会受到影响。
SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列 (Message Queue),冗余部署(Redundant Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。
二、 大数据量低频率访问 :对于.NET Remoting,EJB或者XML-RPC这些传统的分布式计算模型而言,他们的服务提供都是通过函数调用的方式进行的,一个功能的完成往往需要通过客 户端和服务器来回很多次函数调用才能完成。在Intranet的环境下,这些调用给系统的响应速度和稳定性带来的影响都可以忽略不计,但是在 Internet环境下这些因素往往是决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统推荐采用大数据量的方式一次性进行信息交换。
三、 基于文本的消息传递 :由于Internet中大量异构系统的存在决定了SOA系统必须采用基于文本而非二进制的消息传递方式。在COM、CORBA这些 传统的组件模型中,从服务器端传往客户端的是一个二进制编码的对象,在客户端通过调用这个对象的方法来完成某些功能;但是在Internet环境下,不同 语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来的很大困难。由于基于文本的消息本身是不包含任何处理逻辑和数据类 型的,因此服务间只传递文本,对数据的处理依赖于接收端的方式可以帮忙绕过兼容性这个的大泥坑。
此外,对于一个服务来说,Internet与局域网最大的一个区别就是在Internet上的版本管理极其困难,传统软件采用的升级方式在这种 松散的分布式环境中几乎无法进行。采用基于文本的消息传递方式,数据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的数据,从而得到的非常理 想的兼容性。
从SOA的几个重要特征可以看出,SOA之所以被用于信息资源整合,是因为其具备了标准化、可操作、可组装的特性。SOA提供了一个通用的、可 互操作的和有弹性的行业标准架构,可以在软件基础架构中建立一系列支持商业模型的可重复利用的服务,这些服务由不同应用系统的组件构成,能够帮助企业实现 适应商业流程变化的需求。
三、采用SOA进行企业信息系统集成
3.1采用SOA进行企业现有信息系统集成的步骤:
1) 提取各个应用系统中需要对外暴露的功能模块。这些功能模块通常都是一些能够清晰完整地表现其业务价值的软件实体, 该软件实体包含了它所能提供的所有服务。
2) 将这些功能模块表现为服务组件的形式。定义服务的描述信息、服务的接口以及调用服务所需要的定位信息等。将软件实体的概念模型转换成实际的服务模型。
3) 将已实现的服务发布到服务注册器,供其他服务调用者进行查找和绑定。这个步骤可以视企业集成的具体情况选择使用。
4) 绑定和调用服务, 将各个应用系统集成起来, 实现企业应用在功能层面的集成(见图3) 。
3.2实施建议
“整合是分阶段、循序渐进、逐步实现的。如果把企业的所有经营活动看作是一个个服务,那么整合就是要将企业内外部的各种服务有机地联结起来。首 先可以只需创建单独的服务;接下来不仅可以创建服务,而且可以开始将业务功能集成到SOA中;第三步涉及将企业IT基础设施转换到SOA模型;最后则集中 于转换业务模型,以使之成为适应需求变化的模型。
对具体的整合对象,按照建模、装配、部署、管理四个阶段实现整合。在建模阶段,可以定义业务模型或流程、软件模型和SOA模型。之后就可以创建 一组服务,这组服务可以与已发布的通用接口一起重用;在部署阶段,开发人员可以提取创建的服务,并把它们放在一个可执行、可管理的环境之中;在使用阶段, 根据软件模型来装配应用程序,并且测试其软件质量以及非功能性需求,比如性能、可伸缩性等等;最后的管理阶段是一个长期的过程,在这个阶段中,可以监控并 管理安全性和使用,以及在许多与可能已经为SOA制订好的服务级协定或策略相对应的方面比较其性能。
这样由小及大,逐渐在企业业务中进行整合扩散,并形成整个企业的IT转型,最终通过全面整合实现随需应变的企业IT架构。
3.3 基于Web服务体系结构的SOA企业信息系统整合
作为一种概念,SOA已经成熟。比较来说,现在Web服务是实现SOA最好的方式。Web服务是由URL (Uniform Resource Locator) 确定的软件应用, 其接口和绑定能够以XML(ExtensibleMarkup Language) 的形式定义、描述和发现, 并且支持借助Internet协议, 如SOAP ( Simple ObjectAccess Protocol) 。采用XML 格式消息的方式与其他软件应用交互 。Web 服务采用[ 6 ]WSDL(Web ServicesDescrip tion Language) 作为其服务接口描述语言、通过UDD I (Universal Descrip tion, Discovery and Integration) 协议规范进行Web服务的网上注册和服务查找定位, 并使用SOAP传输协议在网络间进行XML格式的信息交互。
XML是一种扩展标记语言。Web服务的描述语言就是用XML形式描述的 , Web服务的数据也是以XML格式进行交换的。可以说XML是定义Web服务协议规范的基石。
WSDL服务描述语言采用XML Schema定义。WSDL能对各种语言实现的服务进行描述, 具有语言无关性。
DD I是通用描述、发现和集成协议。UDD I使得全球统一定位、发现服务成为可能。
3.4 Web服务集成实现模型
要运行,管理SOA应用程序,企业需要SOA集成模型,这是SOA平台的一个部分。SOA集成模型必须支持所有的相关标准,和需要的运行时容器。图4所示的是一个典型的SOA集成模型。下面分别介绍这些层。
SOAP, WSDL, UDDI :WSDL,UDDI和SOAP是SOA基础的基础部件。WSDL用来描述服务;UDDI用来注册和查找服务;而SOAP,作为传输层,用来在消费者和服 务提供者之间传送消息。SOAP是Web服务的默认机制,其他的技术为可以服务实现其他类型的绑定。一个消费者可以在UDDI注册表(registry) 查找服务,取得服务的WSDL描述,然后通过SOAP来调用服务。
WS-I Basic Profile:S-I Basic Profile,由Web服务互用性组织(Web Services Interoperability Organization)提供,是SOA服务测试与互用性所需要的核心构件。服务提供者可以使用Basic Profile测试程序来测试服务在不同平台和技术上的互用性。
J2EE 和 .Net :尽管J2EE和。NET平台是开发SOA应用程序常用的平台,但SOA不仅限于此。像J2EE这类平台,不仅为开发者自然而然地参与到SOA中来提供了 一个平台,还通过他们内在的特性,将可扩展性,可靠性,可用性以及性能引入了SOA世界。新的规范,例如 JAXB(Java API for XML Binding),用于将XML文档定位到Java类;JAXR(Java API for XML Registry)用来规范对UDDI注册表(registry)的操作;XML-RPC(Java API for XML-based Remote Procedure Call)在J2EE1.4中用来调用远程服务,这使得开发和部署可移植于标准J2EE容器的Web服务变得容易,与此同时,实现了跨平台(如。NET) 的服务互用。
服务品质 :在企业中,关键任务系统(MISsion-critical system,译注:关键任务系统是指如果一个系统的可靠性对于一个组织是至关重要的,那么该系统就是该企业的关键任务系统。比如,电话系统对于一个电话 促销企业来说就是关键任务系统,而文字处理系统就不那么关键了。)用来解决高级需求,例如安全性,可靠性,事物。当一个企业开始采用服务架构作为工具来进 行开发和部署应用的时候,基本的Web服务规范,像WSDL,SOAP,以及UDDI就不能满足这些高级需求。正如前面所提到的,这些需求也称作服务品质 (QoS,quality of services)。与QoS相关的众多规范已经由一些标准化组织(standaRDS BOdies)提出,像W3C(World WIDE Web Consortium)和OASIS(the Organization for the Advancement of Structured InfORMation Standards)。下面的部分将会讨论一些QoS服务和相关标准。
安全 :Web服务安全规范用来保证消息的安全性。该规范主要包括认证交换, 消息完整性和消息保密。该规范吸引人的地方在于它借助现有的安全标准,例如,SAML(as Security Assertion Markup Language)来实现web服务消息的安全。OASIS正致力于Web服务安全规范的制定。
可靠 :在典型的SOA 环境中,服务消费者和服务提供者之间会有几种不同的文档在进行交换。具有诸如“仅且仅仅传送一次”( once-and-only-once delivery),“最多传送一次”( at-most-once delivery),“重复消息过滤”(duplicate message elimination),“保证消息传送”(guaranteed message delivery)等特性消息的发送和确认,在关键任务系统(mission-critical systems)中变得十分重要。WS-Reliability 和 WS-ReliableMessaging是两个用来解决此类问题的标准。这些标准现在都由OASIS负责。
策略 :服务提供者有时候会要求服务消费者与某种策略通信。比如,服务提供商可能会要求消费者提供Kerberos安全标示,才能取得某项服务。这些要求被定义 为策略断言(policy assertions)。一项策略可能会包含多个断言。WS-Policy用来标准化服务消费者和服务提供者之间的策略通信。
控制 :当企业着手于服务架构时,服务可以用来整合数据仓库(silos of data),应用程序,以及组件。整合应用意味着例如异步通信,并行处理,数据转换,以及校正等进程请求必须被标准化。在SOA中,进程是使用一组离散的 服务创建的。BPEL4WS 或者 WSBPEL(Web Service Business Process Execution Language)是用来控制这些服务的语言。WSBPEL目前也由OASIS负责。
管理 :随着企业服务的增长,所使用的服务和业务进程的数量也随之增加,一个用来让系统管理员管理所有运行在多相环境下的服务的管理系统就显得尤为重要。 WSDM(Web Services for Distributed Management)规定了任何根据WSDM实现的服务都可以由一个WSDM适应(WSDM-compliant)的管理方案来管理。
其它的Qos特性,比如合作方之间的沟通和通信,多个服务之间的事务处理,都在WS-COOrdination 和 WS-Transaction 标准中描述, 這些都是OASIS 的工作。
四、结论:
SOA提供了标准化的架构,一个应用对应的服务也能适用于其它应用,企业开发新应用的速度将得到大大提高,同时对旧有系统也可以包装成服务,服务之间为了满足新业务的需求可以进行组合,从而实现信息系统资源的整合。