2 SOA参考架构
一个符合SOA思想的应用系统,其组成元素包括:SOA基础技术平台、实现业务功能的业务服务、各种已经存在的应用系统和数据资源、使用各种业务服务的服务消费者(应用程序),以及建立SOA应用系统和监控系统运行的辅助工具集,当然还需要有建设、使用和维护这些系统的各类人员。
在组成SOA应用系统的各种元素中,SOA基础技术平台和辅助工具集是建立和支撑SOA应用系统运行的重要的基础架构。辅助工具集提供SOA应用系统建设和管理工具,提供建模工具、集成开发工具和运行管理工具;SOA基础技术平台提供应用服务的运行支撑环境,提供服务与人员之间的交互操作,服务流程管理,服务之间的通讯,系统与系统之间的协作,已有系统和数据资源的服务化接入,以及各种服务质量管理。
下图给出了SOA参考架构在SOA应用系统中的地位。

SOA参考架构在SOA应用系统中的位置
SOA参考架构是整个SOA应用系统的核心,由基础技术平台和辅助工具组成。在SOA应用系统中还包括已存在的应用系统和数据资源,统称为资源,这些资源通过基础技术平台接入,展现为业务服务供其它应用或服务使用,也可以使用其它应用服务。在SOA应用系统中的应用服务在基础技术平台的支撑下运行,应用服务可以是业务服务提供者,也可以是业务服务消费者,应用服务可以是新编写的程序,也可以是若干服务的组合。几个SOA应用系统也可以互相协作,进行数据交换或实现业务服务的互相调用。与SOA应用系统相关的人员角色包括:系统规划和设计人员,系统开发人员、系统操作使用人员和系统管理维护人员。
长风联盟SOA-RA-TF研究的SOA参考架构还不是技术标准,通过参考架构的研究可以明确SOA基础技术平台和辅助工具集的总体体系架构,应该具有的功能和特性,以及各组成部分之间的接口。有了SOA参考架构,就可以为SOA基础技术平台和辅助工具集的实现提供清晰的指导;同时也为SOA应用系统如何建设,如何构建其基础技术架构给出了一个很好的实施建议。
2.1 SOA参考架构
长风联盟SOA-RA-TF给出的SOA参考架构主要描述一个SOA应用系统中支撑应用服务运行的基础技术平台及其应用系统建设和管理所需要使用的辅助工具。SOA参考架构是长风联盟SOA应用架构中支撑服务层的核心部分。
SOA参考架构中给出了支撑SOA应用服务运行的主要服务功能,有了这些核心服务就可以构成一个较完整的基础技术平台,这些核心服务的不同组合应用可以满足不同SOA应用系统的运行需求。SOA参考架构同时也包含了支持SOA应用系统开发生命周期过程的一组辅助工具集。SOA参考架构的总体体系架构如下图所示:

SOA参考架构
长风联盟SOA-RA-TF给出的SOA参考架构中各核心服务之间满足松散耦合特性,具有定义良好的接口,可通过拆分与组合,可以有针对性地构建满足不同应用场景需求的SOA应用系统。
SOA参考架构是SOA基础技术平台产品和辅助工具产品实现的重要参考依据;是开发SOA应用系统时确定系统架构,选用SOA技术的重要指导依据;是保证长风联盟各种SOA支持产品与解决方案实现互操作性的重要基础。
下面将侧重介绍SOA参考架构中各核心服务和辅助工具的作用和应用方式。
2.2 适配器
在集成环境中需要复用已有的应用系统和数据资源,通过适配器可以将已有应用系统和数据资源接入到SOA应用系统中。
通过适配器可以实现已有资源与SOA系统中其它服务实现双向通讯和互相调用。首先通过适配器可以实现对已有资源的服务化封装,将已有资源封装为一个服务提供者,可以为SOA应用系统中的服务消费者提供业务和数据服务,其次通过适配器,也可以使已有资源可以消费SOA应用系统中的其它服务。
已有资源通过适配器仅需要与SOA基础技术平台中的连通服务相连接,而不需要与每个服务直接相连,就可以实现服务之间的互操作。适配器需要提供产品级的质量属性支持,需要支持的质量属性包括:连接管理、事务管理和安全管理等。
2.3 资源仓库
在SOA应用系统中,各种业务服务都以服务形式展现,包括简单的基本服务,对已有资源的封装服务,对多个服务组装后形成的新服务,将多个业务服务通过流程编排后形成的流程化服务。在SOA应用系统中基本的运行方式就是服务消费者访问服务提供者的过程。对于这些服务需要提供良好的管理,这个管理工作就是由资源仓库实现的。
资源仓库首先需要提供服务描述能力,需要能够描述服务的各种属性特征,包括:服务的接口描述、服务的业务特性、服务的质量特征(如:安全、可靠和事务等)以及服务运行的QoS属性。
资源仓库主要功能是提供服务描述信息的存储、分类和查询功能。当前版本中为集成开发工具提供一套操作接口,以支持人工管理方式。将来版本中还需要提供服务消费者直接的访问操作接口,以实现机器自动管理方式。
对于广义的资源仓库而言,除了提供服务类型的资源管理外,还需要提供对其它各种资源的管理能力,可管理对象包括:人员和权限信息、流程定义和描述、资源封装服务、服务实现代码(如Java或C/C++实现代码)、服务部署和打包内容、以及环境定义和描述信息。
2.4 连通服务
连通服务是SOA基础技术平台中的一个重要核心服务,典型的连通服务就是企业服务总线(Enterprise Service Bus,ESB)。连通服务主要解决服务之间高效通信的问题,是服务之间互相通信和交互的骨干。
为实现两个实体之间有效通信,通常需要一个通信代理。同样,服务之间的有效通信也需要通信代理。连通服务的功能主要由这个通信代理实现,需要支持的主要功能包括:
实现通信代理与服务之间的双向交互,包括紧耦合方式(即通过代码间之间调用),和松耦合方式(即通过网络通信)
实现代理之间的通信,支持多通讯协议,基于内容的路由等功能
保证代理之间的通信质量,包括效率,可靠性,安全性。并提供其他服务(如事务管理)
提供服务运行管理功能
连通服务很重要的工作是既要保证实现服务间的互联互通,同时又需要保证传输效率和传输质量。连通服务一般应用于连接一个自治域(如一个企业内部)内部的各个服务,在自治域内部服务都是相对可控的,所以连通服务更多应该考虑效率问题。
2.5 流程服务
流程服务是为业务流程的运行提供支撑的一组标准服务。业务流程是一组服务的集合,可以按照特定的顺序并使用一组特定的规则进行调用。业务流程可以由不同粒度的服务组成,其本身可视为服务。
流程服务是业务流程的运行环境,提供流程驱动,服务调用,事务管理等功能。流程服务需要支持机器自动处理的流程,也需要支持人工干预的任务操作。
流程服务支持的业务流程主要适用于对运行处理时间要求不高的,多方合作操作的业务过程。对于有较高时间(业务处理时间短,并发要求高)要求的业务处理并不是流程服务所擅长的,对于这类业务可以通过简单的服务组装方式实现多个业务过程的整合,一般可以直接在连通服务支持下直接运行。而对于自治域之间各方共同参与的业务合作过程,则需要协作服务的共同参与。
2.6 交互服务
交互服务实现人与服务之间的交互功能。交互服务就是需要提供一组完整的功能,以实现人与服务的便捷交互,既能支持多种交互渠道(如浏览器方式,富客户端方式和移动接入方式等),也能支持多种交互能力(如单点登录、个性化、支持各种资源的统一内容管理等)。
对于交互服务,提供统一的操作方式(界面风格,操作过程等),和简便易用的操作是需要重点考虑的。
对于交互服务,可以简单的认为它是使用人员的代理,通过交互服务操作人员可以是服务消费者,也可以是服务提供者。
2.7 协作服务
协作服务既可以解决自治域之间(如供应链的合作伙伴之间)的交互通信,也可以解决自治域内部(如跨地域的分支机构之间,并有防火墙进行保护的情况)。对于协作服务更多需要考虑连接的各个服务实现技术差异性较大,并且连接各方更应该是处于平等地位,需要考虑互相协作问题,而不是互相控制问题。
为此协作服务强调标准的采用,强调平等协作。具体实现技术时将更多的考虑采用WebServices相关技术,以实现流程协同,服务交互,和各种质量属性管理(如事务管理、可靠传输和安全管理等)。
协作服务与连通服务相互配合共同实现整个SOA系统的互联互通。连通服务更多用于一个自治域内部的通讯骨干,更多考虑效率问题;协作服务更多用于自治域之间的交互通讯,更多考虑标准和协同。
2.8 安全服务
安全性对于SOA系统是一项非常重要的服务,尤其是像SOA这样强调松散耦合的分布式集成系统,安全性显得更为重要。因此,安全有时被称为一种“事关全局的考虑”,是全方位的问题。它跨越SOA参考架构模型的各个部分。
安全服务向SOA参考架构模型中其他服务提供基本的安全服务功能,包括:身份验证、访问控制、数据加密、数据完整性和抗抵赖性,以及安全信任、身份联邦、安全会话、安全策略等。
2.9 信息服务
信息服务特指为利用上述各种基本的核心服务提供信息管理和使用的服务。
信息服务提供元数据管理功能,可以以一种统一的方式描述SOA系统中所需要使用的各种信息数据。
信息服务也提供对各种类型数据(包括结构化数据和非结构化数据),以及分布在不同地方的数据进行统一的访问管理。提供功能包括:数据的查询、存取访问,数据转换和数据同步等。
信息服务其目标是使应用系统能够统一、透明、高效地访问和操纵位于网络环境中的各种分布、异构的数据资源,为实现全局数据访问、加快应用开发、增强网络应用和方便系统管理提供支持。
2.10 集成开发工具
集成开发工具支持SOA应用系统的完整开发过程,对于基于SOA的应用开发从总体上可以分为两个大的阶段:分析和建模阶段,集成开发阶段。
业务分析和建模工具需要能够帮助用户梳理和分析业务,此工具需要能够定义和描述用户的业务服务,数据和业务过程,同时也需要能够提供模拟工具帮助模拟业务过程执行效果,以便调整和优化业务流程。
集成开发工具需要支持应用系统的设计,业务流程的组装和定义,新的服务代码的编写和调试,整个系统的集成测试。同时也需要能够支持对环境的定义和描述,系统的打包和部署工作,以支持完整的开发过程。
集成开发工具需要提供统一的易用的操作界面,需要提供团队开发能力。
2.11 运行管理工具
运行管理工具提供界面友好的图形化方式的监控和管理工具,提供对各种资源和服务对象的运行管理功能。监控管理工具需要管理核心服务,也需要管理应用服务。可以查看各个服务的运行状态和历史信息,也能对服务进行启动、停止、暂停、恢复、版本升级等管理控制操作,同时需要提供分析和统计功能,可以根据服务运行信息实现对系统的调整和优化操作。
运行管理工具需要提供集中和独立管理能力,需要提供操作人员的权限管理功能。