1.2 Web服务的智能化处理
1.2.1 Web服务
Web服务是一种部署在Web上的对象。不同的人可能对Web服务有不同的理解,如Web服务是自包含的、模块化的应用程序,它可以在网络中被描述、发布、查找以及调用;Web服务是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使Web服务能与其他兼容的组件进行互操作;Web服务是指由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项应用服务。
Web服务体系结构如图1.3所示。其中,UDDI(Universal Description Discovery and Integration)是一种用于描述、发现、集成Web服务的技术,WSDL(Web Service Description Language)是Web服务的描述语言。在Web服务的体系结构里有3种角色,分别是服务提供者、服务注册中心和服务请求者。
图1.3 Web服务体系结构
(1)服务提供者
从商业的角度看,服务提供者是服务的拥有者。从Web服务的架构看,服务提供者是拥有服务的平台。它是 Web服务的供应商,实现了 Web服务,并将其放置到在线服务器上供用户使用。
(2)服务注册中心
服务注册中心是 Web服务的注册地,汇集了很多在线的 Web服务。服务提供者在这里发布他们的服务说明,而服务请求者在这里找到服务,并得到与服务绑定的信息,在开发时刻实现静态绑定或在运行时刻实现动态绑定。目前,服务注册中心即为商业注册中心。
(3)服务请求者
从商业的角度看,服务请求者是需要某种功能的商业机构。从Web服务的架构看,服务请求者是查找、调用服务的应用程序。服务请求可以由用户使用浏览器完成,也可以由没有用户界面的应用程序发出。
在上述3种角色间存在3种操作,分别是发布、查找和绑定。
(1)发布
为了使服务能够被访问,服务提供者必须首先发布服务说明,使服务请求者能够找到它。
(2)查找
在查找操作中,服务请求者可能直接得到服务说明,也可能得到服务的注册处。查找操作可以出现在服务请求者生命周期的两个不同阶段,即开发时刻和运行时刻,前者获得服务的接口说明,用于程序的开发;后者获得服务的绑定和定位说明,用于服务的调用。
(3)绑定
在绑定操作中,服务请求者在运行时刻使用服务说明中的绑定信息定位、连接和调用服务,启动与服务的交互。
Web服务技术体系如表1.1所示。实现一个完整的Web服务体系需要一系列的协议规范来支持,其中的3个主要技术是,用于服务调用的SOAP(Simple Object Access Protocol)、用于服务描述的WSDL以及用于服务注册与发现的UDDI;而传输则依赖HTTP(Hypertext Transfer Protocol)、FTP(File Transfer Protocol)、SMTP (Simple Mail Transfer Protocol)。
表1.1 Web服务技术体系
1.2.2 Web服务组合
1996年,Gartner提出,到2008年,面向服务的体系结构(Service-Oriented Architecture,SOA)将成为占有绝对优势的软件工程实践方法,它将结束传统的整体软件体系架构长达40年的统治地位(可能性为70%)。这一构想早已实现,2020年,SOA与附带语义技术、参数标记预测技术的服务结合得更加紧密,甚至可以跳出传统整体软件体系架构,而以服务思维为逻辑架构进行组合,在各行各业发挥着非常重新的作用。SOA的提出使大量的公司和组织进入了一个新的业务模式,人们开始使用“软件即服务”这一新概念。
对于SOA服务接口来说,Web服务是一个重要的标准。“单独的、独立的、封装管理的”服务所具有的一个关键优点就是可以采用多种不同的方法重新组合它们,以形成新的应用。随着服务相关标准的持续完善和支持Web服务的企业级软件平台的不断成熟,越来越多的企业将其业务功能和流程包装成标准的Web服务发布出去,实现便捷快速地寻求合作伙伴、挖掘潜在客户和达到业务增值的目标。如何有效组合分布于网络中的各类服务,实现服务之间的无缝集成,形成功能丰富的企业级服务流程,以达到企业的商业目标,已经成为Web服务发展过程中的一个重要步骤。
1.Web服务组合的定义
Web服务组合就是为了满足一些用户的需要,把一定数量的现有服务组织起来,从而形成具有综合功能的服务集合。它的动力来自Web服务的出现和通过互联网把Web服务组合在一起以提供增值服务。组合服务分布于网络上,可以在不同的平台上运行,用不同的编程语言实现,并且可以来自不同的服务提供者。
从不同的角度考虑,Web服务组合具有不同的定义。
(1)从设计的角度考虑,Web服务组合是一个规则和原理集,它描述服务之间相互通信的过程。
(2)从执行的角度考虑,Web服务组合是一个按照预定义的业务过程查找并绑定合适的Web服务和服务提供者的过程。
总之,Web服务组合就是通过组合基本的Web服务来为用户提供增值服务。Web服务的设计和组合本质上是一个分布式的设计行为,就是各个应用的开发者想重用、设计和执行己有的Web服务,其仅仅是扩展和限定,而不是原始的开发。
2.Web服务组合的方式
Web服务组合的方式通常有两种,即编排与编导。
(1)编排与编导的定义
编排的概念产生于采用企业应用集成(Enterprise Application Integration,EAI)中间件产品自动化业务流程或者集成各种组织的过程中。EAI系统通过工作流逻辑的中心控制集,实现了两个或者更多应用间的互操作。编排采用中心辐射模型,允许多个外部参与者与一个中心编排引擎交互。通过编排,一个流程可以连接多个不同的服务,而不需要重新开发新的解决方案。
在面向服务的设计中,编排的概念得到了扩展。它能够在标准的、基于服务的场合中代表和表示业务逻辑。服务编排利用服务提供的集成端点设计业务流程,实现服务间的互操作,编排的结果也作为服务而存在。服务编排关注重用已有服务的内部流程,其主要行业规范是WS-BPEL。
编导是不同服务提供者的服务进行协作的交换模式,它不被单个实体所拥有。编导本质上是流程协作,强调的是公共协作,其重要特征是公共消息交换。服务编导关注多方参与的交换消息,进行对等的业务协作,其主要行业规范是Web服务编排描述语言(Web Service Choreography Description Language,WS-CDL)。
(2)编排与编导比较
编排与编导的一个关键区别在于,以编排为中心的方法假定在流程执行的整个范围内存在某个中心控制点;而以编导为中心的方法则假定合作者们共同参与执行的控制,有可能跨越多个业务流程引擎或各种不同的技术。
(3)编排示例
图1.4显示了OpenAccount流程如何编排一系列Web服务请求的执行。
图1.4 Web服务编排示例
如图1.4所示,通过 WS-BPEL实现服务编排,在收到 OpenAccountRequest时启动OpenAccount,调用CollectAccountInformation、ValidateAccountInformation、RepairAccountInformation等Web服务来完成编排中的各个步骤。
3.Web服务组合方法
当前,工业界和学术界从不同的角度对Web服务组合进行了大量的研究,提出了多种Web服务组合方法。总体来说,工业界的方法侧重于提出组合描述语言,开发相关编辑工具和执行引擎;学术界的方法侧重于从语义、智能规划等方面研究自动组合,并通过形式化方法验证组合系统的正确性。这里,我们重点讨论几种Web服务组合方法。
(1)基于WS-BPEL的Web服务组合方法
WS-BPEL是基于工作流的方法中的典型代表。BPEL是2002年IBM、微软和 BEA公司提出的一个基于工作流的 Web服务组合描述语言。它集 WSFL和XLang两者之长,形成了一种较自然地描述商业活动的抽象高级语言。
WS-BPEL的作用是将一组现有的服务整合起来,从而定义一个新的Web服务,它能够将Web服务调用、操作数据、排除故障或终止一个流程等不同的活动连接起来,从而创造出复杂的流程,这些活动可以嵌套到结构化活动中,结构化活动定义了活动的运行方式和控制流程。
WS-BPEL流程用来表达特定业务的处理逻辑和算法,流程的每一步称为一个活动。WS-BPEL主要利用WSDL使服务的动态绑定成为可能。但它没有提供具体方式来选取动态绑定时需要调用的服务,并且 WS-BPEL不支持在应用运行时调整流程模型。
(2)基于语义的Web服务组合方法
如何用统一的方法对Web服务的数据、功能等信息进行明确表达并且使计算机能够理解这些表达,从而实现从海量服务中自动、精确地发现服务并生成服务过程是难点问题。在语义网出现之前,已有的Web服务描述标准都不能满足上述需求。面向语义的Web服务组合通过在Web服务中添加语义信息,明确表达Web服务的数据、功能和性能等,使机器能够自动理解并进行需要的操作,最终生成Web服务过程。目前,面向语义的Web服务组合的主要成果是万维网服务本体语言(Web Ontology Language for Services,OWL-S)。OWL-S是一个服务本体,使服务能够自动发现、调用、组合、互操作和执行监控。
OWL-S建模的服务本体有3个部分,分别是ServiceProfile、ServiceModel和ServiceGrounding。ServiceProfile提供服务及服务提供者的高层描述,包括服务概述、功能属性、服务性能属性,表达了该服务能做什么。ServiceModel表达了该服务是怎样工作的,其子类 ProcessModel描述服务组件的行为或过程,子类ProeessControlModel用来支持服务的执行和监测。ServiceGrounding表达了怎样使用这个Web服务,是从抽象的服务描述元素到具体的服务描述元素规范的映射。OWL-S中,ServiceProfile与ServiceModel是服务的抽象表达,而ServiceGrounding涉及具体的规范。
(3)基于Petri网的Web服务组合方法
基于Petri网的Web服务组合方法是较常用的一种形式化的Web服务组合方法。Petri网是一个强连通图,其节点分别称为库所(Place)和变迁(Transition),库所描述系统状态,变迁描述系统活动。这些节点通过有向弧相连。由于Web服务的行为基本上是操作的一个偏序集,因此可以直接将Web服务映射到一个Petri网上。Petri网的意义是将具体的服务组合描述语言与形式化模型进行映射,实现流程描述到形式化模型的转换,再进行验证。但这种方法依赖具体的流程描述语言,所以很难在现实的企业环境中推广。
(4)基于服务质量(Quality of Service,QoS)的Web服务组合方法
以上3种方法是比较传统的Web服务组合的研究方法,它们之间相互交叉。这些方法主要侧重于Web服务组合标准方面的功能属性,而在价格、可靠性、执行时间等用户关心的非功能属性QoS方面存在不足。
非功能的 QoS属性是保障 Web服务、系统运营成功和客户服务选择的重要依据。因此,在Web服务组合过程中,我们通常把QoS作为组合选择的一个标准。然而,不同Web服务确定不同的QoS,要从众多的服务候选集中选择出客户需要的Web服务最优解并把它组合起来,就需要基于QoS从功能相似的服务集中选择具体的服务。
1.2.3 Web服务推荐
随着互联网上 Web服务数量的增加,如何向用户推荐合适的服务成为一个重要的问题。Web服务推荐是帮助用户发现合适服务的有效手段之一,近年来,逐渐成为服务计算领域的研究热点。Web服务推荐的一般过程是,首先收集用户的基本信息和历史调用记录以及服务的相关信息,然后建立推荐预测模型,最后根据模型预测用户可能感兴趣的Web服务进行推荐。Web服务推荐的关键在于,如何利用数据挖掘和机器学习相关技术来预测用户的需求,帮助用户发现感兴趣的Web服务。
Web服务推荐系统框架如图1.5所示。其中,个性化推荐通常包括3个部分:首先对数据进行清洗、处理和转换;然后对用户、服务以及内容特征建模;最后通过推荐策略模块来产生推荐,推荐策略通常包括协同过滤、基于内容的推荐以及混合推荐。
图1.5 Web服务推荐系统框架
目前,Web服务推荐的研究主要分为以下几类。
(1)基于功能的推荐
基于功能的推荐利用自然语言处理的相关技术,通过挖掘Web服务的功能信息,来找到那些功能相似的Web服务。例如,利用关键字提取进行语义匹配、利用LDA(Latent Dirichlet Allocation)主题模型从服务的WSDL文档中提取潜在特征。基于功能的推荐产生的推荐结果较为单一,并且 Web服务的 WSDL文档往往很难获得。
(2)基于QoS的推荐
基于QoS的推荐通过收集大量的用户调用Web服务时的QoS信息,例如响应时间、吞吐率、价格成本等,使用协同过滤技术预测Web服务的QoS值,最后根据 QoS值进行推荐。服务推荐中,有的使用矩阵分解技术预测 Web服务的QoS值;有的将协同过滤与基于内容的推荐相结合,进一步提升了推荐的准确性。有的考虑了 Web服务的 QoS值在地点上的关联性,将地理位置信息与矩阵分解模型相结合,取得了不错的效果;还有的考虑了时间对QoS的影响,通过在相似度计算中引入时间信息来提高 QoS的预测效果。基于 QoS的推荐的主要问题是,QoS信息往往与调用的地理位置有关,通常很难获取服务准确的QoS值。
(3)基于历史偏好信息的推荐
基于历史偏好信息的推荐需要从服务发布平台上收集大量的用户显式或隐式评分信息、用户或者服务的特征信息,综合这些信息利用相关推荐技术进行推荐[1-5]。文献[5]考虑了Mashup在服务推荐中的作用,利用图模型来构建用户、服务以及Mashup之间的关系,从而完成推荐。有的研究提出了一种时间感知的Web服务推荐方法,并结合矩阵分解模型进行评分预测。还有研究将用户的社交关系信息与协同过滤方法相结合,并通过剪枝策略来缩减搜索空间,有效地减小了数据稀疏性带来的影响,提升了预测准确性。基于历史偏好信息的推荐的主要问题是,用户的偏好信息通常比较稀疏,如何解决数据的稀疏性问题是关键。