应用整合致力于创建一个灵活的应用基础设施来帮助用户在应用、信息和业务流程之间创建可以重用的核心架构,最终为用户提供可以快速高效地响应业务需求的应用基础设施,并能及时应对市场变化带来的挑战。
推动“企业应用集成”(Enterprise Application Integration, EAI )的因素来自商务和技术两个方面。从商务的角度,企业要在全球化的经济环境中求生存和发展,就必须努力适应越来越激烈的市场竞争和越来越快的市场变化,这意味着企业的业务模型要变得更加灵活以应对市场的瞬息万变。在业务模型更加灵活的转型过程中,企业需要不断地自动化业务流程,进行跨部门横向集成、管理并优化,这意味着支撑这些流程的技术基础,即 IT 应用和数据资源等,需要在企业全局范围内集成。
在技术方面,IT 部门面临着业务部门越来越高的期望值,要做得更快、更好和更省,IT 部门就必须考虑如何最大程度地重用已有应用的功能和数据资源,来支持新业务应用的开发。这种重用面临着如何将高度异构、分布的各种应用集成起来的难题,目前最有效的解决之道就是面向服务的整合。在面向服务的体系结构(Service-Oriented Architecture, SOA )中,首先,各种业务功能将被封装为基于开放标准来描述和访问的服务;其次,借助于 SOA 的通用连接能力,这些来自不同应用的服务,不需要关心对方的位置和实现细节,以松耦合的方式进行交互;只要服务的接口描述不变,服务的使用者和提供者双方可以*发生变化而互不影响;最后,服务可以按不同的方式组合成为不同的业务流程。当某个业务流程发生变化,我们可以通过调整组装服务的方式来满足这种变化。总之,这种通过重用粗粒度服务而不是在底层编程来开发新应用以满足业务新需求的方法,使得 IT 组织能够以更少的投入、更快的速度、更好的质量来满足不断变化的业务需求。
集成企业应用的方法各种各样,初级方式可以借助于简单的机制如应用编程接口、管道、共享目录和文件,或者某些传输协议如 FTP 来交换数据和互操作;更高级的方式则为使用各种消息中间件来提供消息的传输、转换、合并、路由和分发、事件的发布和订阅等;分布式计算技术,如 CORBA、COM 等,也有较广的使用。
在初期实践中,应用之间的连接拓扑大多数情况下是点对点的、硬编码的,所使用的协议是非标准的,功能的提供者和使用者之间是紧耦合的,功能的粒度通常较细,数据的表示也不统一。随着集成复杂度的增长,和实践经验的总结,开始出现一些从实践中总结出来的集成模式,如消息中枢(Message Backbone)、信息总线、应用集成中心(Application Integration Hub),这些模式从不同的角度以不同的方式来管理集成的复杂性,但都或多或少地尝试提供一个集成基础设施来简化应用之间日趋复杂的连接拓扑,提供异构数据和功能访问方式之间的转换,甚至提供一致的数据和功能表示与访问方式。通过元数据和应用相关的领域知识,这些集成基础实施提供了很多中介和转换的机制与模式来实现高级的功能,如路由、动态选择等能力。
随着互联网络技术的普及、发展和应用,相关技术和标准,如 XML 和 Web Service,被广为接受,这给应用集成带来了新的发展。企业应用架构的风格开始朝着以服务为中心的方向发展,而企业应用集成也转向以服务为中心的集成,服务的描述和访问基于开放一致的标准(如 WSDL),连接应用的基础设施继承了过去发展的成果,并通过支持开放标准,来提供通用的连接服务,包括基本的服务如消息传输、转换,事件的发布和订阅,服务的中介(选择、路由),和高级的服务如安全、事务、服务质量,以及可管理性,来使得服务在一个标准、开放、可靠、安全、可管理、满足服务质量要求的环境下,以松散耦合的方式相互交互,根据需求动态地进行企业应用集成,达成非常高程度的灵活应变能力和重用能力。 SOA 是对现有集成技术与实践的总结和标准化。
SOA 继承和发展了传统的 EAI,比较而言, SOA 的好处在于:
  • 定义良好而又基于标准的接口
    服务的描述易于理解,而且标准一致。
  • 实现技术和位置的透明
    提供服务功能的应用,它的位置以及所使用的实现技术被接口所屏蔽。事实上,不需要一个固定的服务提供者。
  • 灵活性
    只要服务的接口不变,服务的提供者和服务的使用者都可以变化而不影响彼此,从而将变化带来的影响减少到了最少。
  • 重用能力
  • 渐进式集成
在 SOA 中,将若干已有系统的相关功能转化为服务,然后将服务进行集成。随着这些项目的进行,可重用的服务越来越多,最终,大多数新的集成需求便可通过已有的服务来完成。所以,我们可以从优先级高的集成需求开始来封装已有系统的功能,并开发必要的新服务,以渐进的方式逐步地扩展到整个企业范围内的集成。更重要的是,由于服务的灵活性,即使已有系统迁移到新的技术平台,甚至是被替代,也不会影响到依赖于这个功能的应用,从而保证了集成对变化的适应能力,使得业务灵活性有一个坚实的基础。这也意味着从传统规模大、投入大、周期长、见效慢、风险高、专有技术,转向见效迅速、风险低、基于标准的集成方式。随着业务需求快速变化, SOA 在投入和工程方面的好处,将有助于 IT 部门的工作。
通常,完整的 SOA 解决方案包括如下要素:
  • 代表应用的功能和数据资源的服务;
  • 提供连接服务的基础设施即企业服务总线(Enterprise Service Bus, ESB),连接已有应用的连接器(Connector)和适配器(Adapter);
  • 元数据及其管理如服务描述和服务注册管理(Service Registry)等;
  • 将服务组合成业务流程的引擎如 BPEL4WS 引擎;
  • 业务流程管理和业务绩效管理的部分;
  • 一个基于标准的编程模型以及支持它的建模、开发和组装、测试、部署和管理的端到端工具环境;
应用整合之SOA
 
SOA 架构示意图

以服务为中心的企业集成采用"关注点分离"(Separation of Concern)的方法规划企业集成中的各种架构元素,同时从服务视角规划每种架构元素提供的服务,以及服务如何被组合在一起完成某种类型的集成。这里架构元素提供的服务既包括狭义的服务(WSDL 描述),也包括广义的服务(某种能力)。从服务为中心的视角看来, SOA 架构按图所示的方式划分为六大类:

  • 连接服务(Connectivity Service):连接服务通过提供企业服务总线提供分布在各种架构元素中服务间的连接性。
  • 业务逻辑服务(Business Logic Service):包括用于实现业务逻辑的服务,和执行业务逻辑的能力。这其中包括业务应用服务(Business Application Service)、业务伙伴服务(Partner Service)以及应用和信息资产(Application and Information asset)。
  • 控制服务(Control Service):包括实现人(people)、流程(process)和信息(information)集成的服务,以及执行这些集成逻辑的能力。
  • 业务创新和优化服务(Business Innovation and Optimization Service):用于监控业务系统运行时服务的业务性能,并通过及时了解到的业务性能和变化,采取措施适应变化的市场。
  • 开发服务(Development Service):贯彻整个软件开发生命周期的开发平台,从需求分析,到建模、设计、开发、测试,维护全面的工具支持。
  • IT 服务管理( IT Service Management):支持业务系统运行的各种基础设施管理能力或服务,如安全服务、目录服务、系统管理和资源虚拟化。
  • 连接服务 - 企业服务总线
    企业服务总线(Enterprise Service Bus),以下简称 ESB, 是消息中间件的发展,ESB 采用了"总线"这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务的级别上动态地互联互通。
    ESB 的基本特征和能力包括:描述服务的元数据和服务注册管理;在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步模式,异步模式等;发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等。
    ESB 所提供的基于标准的连接服务,将应用中实现的功能或者数据资源转化为服务请求者能以标准的方式来访问的服务;当请求者来请求一个服务时,ESB 中这种中介转化过程可能简单到什么也没有,也可能要很复杂的中介服务支持,包括动态地查找、选择一个服务,消息的传递、路由和转换、协议的转换。这种中介过程,是 ESB 借助于服务注册管理以及问题域相关的知识(如业务方面的一些规则等)自动进行的,不需要服务请求者和提供者介入,从而实现了解耦服务请求者和提供者的技术基础,使得服务请求者不需要关心服务提供者的位置和具体实现技术,双方在保持接口不变的情况下,各自可以独立地演变。
    所以,ESB 采用总线结构模式简化了应用之间的集成拓扑,通过源自实践的模式,提供了基于标准的通用连接服务,使得服务请求者和服务提供者之间可以以松散耦合、动态的方式交互,从而在不同层次上使得 SOA 解决方案是一个松散耦合、灵活的架构。
    需要注意的是,ESB 是一种架构模式,不能简单地等同于特定的技术或者产品,但实现 ESB 确实需要各种产品在运行时和工具方面的支持。IBM 有很好的产品支持,包括 WebSphere ESB 和 WebSphere Message Broker;而工具方面 IBM 则有 WebSphere Integration Developer,支持用户以图形界面的方式来完成相关的开发任务,如发布服务,使用各种模式,转换消息,定义路由等等。
  • 业务逻辑服务
    整合已有应用 --- 应用和信息访问服务。已有应用和信息是实现业务逻辑和业务数据的重要资产。通过集成已有的应用和信息将可以在已有企业系统上实现更多增值服务,所以集成已有应用和信息是企业集成中重要的一环。
    以服务为中心的企业集成通过应用和信息访问服务(Application and Information Access Service)来实现对已有应用和信息集成。它通过各种适配器技术将已有系统中的业务逻辑和业务数据包装成企业服务总线支持的协议和数据格式。通过企业服务总线,这些被包装起来的业务逻辑和数据就可以方便的参与上层的业务流程,从而已有应用系统的能力可以得以继续发挥。这里的已有应用包括遗留应用、预包装的应用和各种企业数据存储。
    整合新开发的应用 --- 业务应用服务。和已有应用和数据类似,新开发的应用也作为重要的业务逻辑成为企业集成的目标。以服务为中心的企业集成通过业务应用服务(Business Application Service)实现新应用集成。一方面业务应用服务帮助程序员开发可重用、可维护和灵活的业务逻辑组件,另一方面,它也提供运行时的集成提供对业务逻辑组件的自治管理。
    整合客户和业务伙伴(B2C/B2B)--- 伙伴服务。以服务为中心的企业集成通过伙伴服务提供与企业外部的B2B的集成能力。因为业务伙伴系统的异构性,伙伴服务需要支持多种传输协议和数据格式。
  • 控制服务
    数据整合-信息服务:企业数据的分布性和异构性是应用系统方便访问企业数据和在企业数据之上提供增值服务的主要障碍。数据集成和聚合技术在这种背景下诞生,用于提供对分布式数据和异构数据的透明访问。这些内容在前面的数据整合相关内容中有介绍。
    流程整合- 流程服务:企业部门内部的 IT 系统通过将业务活动自动化来提高业务活动的效率。但是这些部门的业务活动并不是独立的,而是和其他部门的活动彼此关联的。勿容置疑,将彼此关联的业务活动组成自动化流程可以进一步提高业务活动的效率。业务流程集成正是在这一背景下诞生的。
    以服务为中心的企业集成通过流程服务来完成业务流程集成。在业务流程集成中,粒度的业务逻辑被组合成业务流程。流程服务提供自动执行这些业务流程的能力。在参考架构中,流程服务包括如下内容:
    • 编排服务(Choreography Service)
      编排服务通过预定义的流程逻辑控制流程中业务活动的执行,并帮助业务流程从错误中恢复。
    • 事务服务(Transaction Service)
      事务服务用于保证流程执行中的事务特性(ACID)。对于短流程,通常采用传统的两阶段提交技术,对于长流程,一般采用补偿的方法。
    • 人工服务(Staff Service)
      人工服务用于将人工的活动集成到流程中,一方面它通过关联的交互服务使得人工可以参与到流程执行中,另一方面它需要管理由于人工参与带来的管理任务如:任务分派、授权和监管等。
    • 交互服务
      用户访问整合,将适当的信息,在适当的时间,传递给适当的人一直是信息技术追求的目标。用户访问集成是实现这一目标的重要一环,它负责将信息系统中的信息传递给客户,不管它在那里,它以什么样的设备接入。
  • 业务创新和优化
    一方面,以服务为中心的企业集成通过各种集成提高信息流转速度,从而提高生产效率。另一方面,以服务为中心的企业集成也为业务创新和优化提供了支持平台-业务创新和优化服务。业务创新和优化服务以业务性能管理(BPM)技术为核心提供业务事件发布、收集和关键业务指标监控能力。
    业务创新和优化服务与开发服务是紧密相关联的。在建模阶段被确定的业务流程的关键性能指标被转为特别的事件标志被构建到业务流程中,建模过程中的业务流程也被转换为用于监控服务的监控上下文。在业务流程执行过程中,这些事件标志激发的事件被公共事件框架服务截获,经过采集服务的过滤被传递给监控服务用于计算关键性能指标。关键性能指标作为重要的数据被用于重构或优化业务流程。这种迭代的方法使得业务流程处于不断的优化中。
  • 开发支持
    企业集成涉及面很广,不仅需要开发新的应用并使其成为可以被用于企业集成的功能组件,而且需要将被包装的已有的应用和数据用于集成;不仅有企业内部的集成,而且需要和企业外部的系统集成;不仅有交互集成和数据集成,还有功能和应用集成。考虑到这其中的每部分在技术上都会涉及到各种平台和中间件,企业集成的技术复杂性是普通应用开发不可比拟的。这种技术复杂性需要更强有力的开发工具支持。企业集成的开发工具需要有标准的工具框架,这些工具能够以即插即用方式支持来自多家厂商的开发工具。同时,企业集成的开发工具需要支持整个软件开发周期,以提高开发过程中各种角色的生产力。
  • 管理支持
    为业务流程和服务提供安全、高效和健康的运行环境也是以服务为中心的企业集成重要的部分,它由 IT 服务管理来完成。IT 服务管理包括如下两部分:
    • 安全和目录服务(Security and Directory Service)
      企业范围的用户、认证和授权管理,如单点登录(SSO);
    • 系统管理和虚拟化服务(System