Web 服务组合研究综述
2020-11-10石文博孙婧鑫
石文博, 孙婧鑫
(西安石油大学 计算机学院, 西安710065)
0 引 言
随着互联网技术的迅猛发展,软件的开发过程越来越倾向于提高软件的集成性和可扩展性。 在此基础之上,一种SOA(Service Oriented Architecture)面向服务的体系结构以其高度灵活、松散耦合以及扩展性高等特性逐渐出现在商业软件的开发领域中。 Web服务是实现SOA 体系结构的主流技术,它是基于网络的、分布式的、自描述的、模块化的组件。 不同的Web 服务执行特定的任务,执行一定的技术规范,并且实现在Internet 上的统一注册、发现、绑定和集成机制。 这种机制逐渐受到工业界和学术界的广泛认可。
1 SOA 基本概念
SOA (Service Oriented Architecture)面向服务的体系结构是一种组件模型[1],它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来,从而有效控制系统和软件代理交互时的人为依赖性。
SOA 最初的概念由Gartner 在20 世纪90 年代末提出,将其定义为C/S 结构的设计理念。 SOA 的应用程序由服务请求方和服务的相应方组成,SOA 对各组件之间的松散耦合性要求更高,从而使它使用的接口更加独立分散,这也是SOA 系统的主要优势[2]。
2 Web 服务组合框架结构
Web 服务组合框架结构由服务供应商、服务消费者和服务注册中心三种角色,发布、发现、绑定和调用三种基本操作组成[3]。 对于Web 服务组合其框架结构如图1 所示。
图1 Web 服务组合框架结构Fig. 1 Web services composition framework structure
(1)服务供应商。 一个可通过互联网查找到的实体,实现接收和执行来自使用者的请求。 除此之外,还把自身所包含的服务和接口契约发布到服务注册中心,以便服务使用者发现和访问该服务。
(2)服务消费者。 一个功能模块或需要服务的软件系统。 它发起对注册中心中服务的查询,通过传输绑定服务,执行服务功能,服务使用者根据接口契约来执行服务。
(3)服务注册中心。 实现服务消费者和服务供应商之间的中转代理,包含一个可用服务的存储库,并允许相关服务使用者查找服务提供者接口。
(4)服务协议。 服务的发布、请求、调用以及响应进行标准化,使服务消费者和服务供应商之间的交互变得规范化,为彼此间的通信奠定基础。
Web 服务组合的执行流程如下:
(1)首先由服务供应商提供服务,将服务信息发布到服务注册中心完成注册。
(2)服务消费者要使用服务,需要向服务注册中心发送请求。
(3)服务注册中心根据服务消费者提交的服务描述,在服务注册中心库中查找相对应的服务。
(4)服务注册中心将查找到的服务相关信息(主要是接口描述信息等)反馈回服务消费者,服务消费者根据信息完成对服务供应商的绑定和执行。
在服务组合框架结构中的每个实体都分别充当服务消费者、提供商和注册中心的一种或多种角色,每种角色依照相应的协议规范,完成特定的操作任务。
3 Web 服务组合方法
当前,对Web 服务组合学术界和工业界已经提出了多种方法,总的来说,Web 服务组合方法从组合方案生成方式来分有静态组合和动态组合两大类。 静态组合意味着请求者应在组合计划实施前创建一个抽象的过程模型,抽象的过程模型包括任务的集合以及任务间的数据依赖关系,每个任务包含一个查询的子句,用来查找完成任务的真正的Web服务。 而动态组合不仅自动地选择、绑定Web 服务,同时更重要的是自动地创建过程模型。 这里,重点讨论基于BPEL4WS、语义驱动以及模型驱动的Web 服务组合方法[4]。
3.1 基于BPEL4WS 的Web 服务组合
BPEL4WS(Business Process Execution Language for WebServices,Web 服务的商业流程执行语言)是专为整合Web 服务而制定的一项规范标准[5]。BPEL4WS 的作用是将一组现有的服务整合起来,从而定义一个新的Web 服务。 它基于业务流程与参与者的交互来定义流程的描述规范,以此来实现业务流程的建模。 BPEL4WS 基于Web 服务标准,更加侧重于业务流程本身,详细描述了一组关于无状态服务的流程编排与调用方式,即将现有的服务重新组合起来,从而定义一个新的服务。
通过对Web 服务的编排和组合,BPEL4WS 可以自上而下地构建面向服务的体系结构。 但是BPEL4WS 语言本身并不能单独地去完成业务流程的实例化,以及具体Web 服务的调用和业务流程管理等功能,它主要完成了业务流程的定义和描述。而流程实例的驱动、执行以及具体服务的调用等都是由BPEL 引擎来完成的,可以说BPEL4WS 引擎为BPEL4WS 流程的执行提供了必要的运行环境。
总而言之,BPEL4WS 流程是一个流程图,用来表达特定业务的处理逻辑和算法,流程的每一步称为一个活动。
BPEL4WS 主要利用WSDL 完成对服务的动态绑定功能,但它缺乏提供具体方式来选取动态绑定时需要调用的服务,并且BPEL4WS 不支持在应用运行时的流程模型的调整。
3.2 语义驱动的Web 服务组合方法
面向语义的Web 服务组合通过在Web 服务中添加语义信息,使机器能够自动理解并进行需要的操作,最终生成Web 服务过程。 目前基于语义的Web 服务组合的主要成果是OWL-S(OntologyWeb Language for Services,Web 服务的本体语言) 和WSDL(Web Services Description Language,Web 服务描述语言)。
WSDL 是用来描述网络(Network)服务或终端(End-point)的一种XML 语言,它用于定义Web 服务以及如何调用服务[6]。 WSDL 文档可用于动态发布Web 服务、查找已发布的Web 服务以及绑定Web 服务。
OWL-S 建 模 的 服 务 本 体 有3 个 部 分[7],ServiceProfile 提供服务及服务提供者的高层描述,包括服务概述、功能属性、服务性能属性,表达了该服务“能做什么”; ServiceModel 表达了该服务是怎样工作的,其子类ProeessControlModel 用来支持服务的执行和监测; ServicesGrounding 表达了怎样使用这个Web 服务,是从抽象的服务描述元素到具体的服务描述元素规范的映射。
3.3 模型驱动的Web 服务组合
在用特定语言定义组合服务的基础上,提出用模型驱动的方法来开发、管理动态服务组合,模型驱动方法将软件开发方法学应用到服务组合中。 该方法是使用统一建模语言(UML)定义服务模型和业务流程模型,定义模型和相对应服务和业务流程的转换规则,完成服务和业务流程的自动生成[8],该组合定义随后可自动地映射到特定的规范,如:BPEL4WS 上,业务流程所需要的Web 服务可以实现动态地绑定。
基于模型驱动的Web 服务组合方法的分为3个主要步骤:
(1)建模。 根据业务需求使用UML 服务模型和UML 业务流程模型对Web 服务和业务流程建模。
(2)转换。 从UML 服务模型中转化得到Web服务的WSDL 和代码框架,以及服务语义描述。 从UML 业务流程模型中转换得到抽象流模板和流程伙伴契约。
(3)绑定。 通过契约和服务描述基于本体语义的匹配,确定业务流程需要绑定的Web 服务,并将流程模板转换为可执行的BPEL4WS 流程上。
4 结束语
面向服务的体系结构是技术和架构的自然进化。 软件系统开发的集成性、封装性和简便性是开发大型系统的必然要求和发展趋势。 本文通过对SOA 体系结构介绍,分析论证Web 服务组合实现原理及其框架结构,总结了当前主流的Web 服务组合方法,并对方法的实现原理和优缺点进行阐述。
Web 服务的主要思想是处在服务组合体系中的每个实体都是服务,这些服务通过网络发布一个可调用的API 接口,方便其他服务的调用。 而Web服务组合则是将服务按照一定的规则有次序调用执行。 因此,如何准确发现和描述Web 服务,如何使服务组合描述过程更加清晰简洁,以及如何对Web服务组合过程模型构建领域都有待深入研究。