《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于SOA的Web Service组合研究及应用
基于SOA的Web Service组合研究及应用
来源:微型机与应用2013年第10期
屈崇博, 蔡国永
(桂林电子科技大学 计算机科学与工程学院, 广西 桂林 541004)
摘要: 针对目前SOA研究现状,对SOA、Web Service和Web Service组合模式予以分析研究,构建出基于SOA的Web Service组合模式及运行时架构,以实现对互联网上相关子系统资源共享、平台独立和松散耦合,为互联网上信息系统开发提供新的解决方案。最后,应用此组合模式及架构开发项目“研究生实习实践综合管理信息系统”中学院导师管理模块Web服务,说明此架构在Web Service及信息系统中的适用性。
Abstract:
Key words :

摘  要: 针对目前SOA研究现状,对SOA、Web Service和Web Service组合模式予以分析研究,构建出基于SOA的Web Service组合模式及运行时架构,以实现对互联网上相关子系统资源共享、平台独立和松散耦合,为互联网上信息系统开发提供新的解决方案。最后,应用此组合模式及架构开发项目“研究生实习实践综合管理信息系统”中学院导师管理模块Web服务,说明此架构在Web Service及信息系统中的适用性。
关键词: 面向服务; XML; Web服务; SOA; 组合模式

    近年来,大量的Web Service已经在基于互联网的软件开发中出现,Web Service正发展为一个集成信息资源的分布式计算环境[1]。随着信息技术的发展,用户对软件的功能需求日益多元化,单独的Web Service已很难满足用户的需求[2]。为了满足用户的多元化需求,寻求一种基于面向服务架构、动态服务组合的Web Service开发模型已成为计算机学科领域研究的热点问题。动态服务组合是按需利用已有Web Service组合成新服务的技术[3],可以迅速地构建起新的Web Service或应用系统,更好地满足用户的需求。
    随着Web Service组合技术的发展,出现了不少基于各种架构的Web Service组合模型。参考文献[4]提出基于聚类的Web Service组合模式,该模式满足组合服务按功能的粗糙分类,不满足服务时实精确匹配,可能造成服务冗余。参考文献[5]提出基于生成树的Web Service组合模式,该模式把具有一定联系的服务看作是树的一个结点进行合并,最后形成一个完整的服务系统,但各服务之间耦合度过高,不利于新服务的加入。参考文献[6]提出基于服务组链的Web Service组合模式,该模式扩展了基于服务链有顺序服务组合方法[7],能以统一的方式解决顺序和并发服务组合问题。而面向服务架构(SOA)是松散耦合的,可以重用已有的服务,并可按需定制新的服务集成到原系统中, 灵活地组建应用系统。因此,应用SOA是构建松散耦合Web Service组合系统的一个有效途径[8]。
    在分析总结以往对SOA、Web Service和Web Service组合研究基础上,首先,对SOA、Web Service和Web Service的组合模式予以分析研究;其次,提出基于SOA的Web Service组合模式,并在此组合模式中,利用Petri网对系统工作流程建模,完成Web Service分层设计;最后,基于此Web Service组合模式实现了“研究生实习实践综合管理信息系统”中学院导师管理模块Web Service,证明了此模式的可行性。
1 面向服务架构
    服务可以定义为:一个服务是一个能实现良好业务功能的模块,可以被服务使用者通过服务已发布的接口进行调用来重新构建新的应用或业务流程[8]。面向服务架构是一个组件模型,它将应用程序的不同功能单元服务化,通过服务间定义良好的接口和协约联系起来。接口采用中立的方式定义,独立于具体实现服务的硬件平台、操作系统和编程语言,使得构建在此系统中的服务可以使用统一和标准的方式进行通信[9]。面向服务架构(SOA)是一种特定环境下采用的一种软件开发架构,SOA的参考架构如图1所示。

    (1)服务组件层:服务组件层包括组件、模块、程序等元素,这一层中的元素满足了服务层中的服务所定义的契约。服务由组件、模块和程序组成。
    (2)服务层:这一层包含了所有在服务组合中定义的服务。每个服务的定义由语法和语义信息组成,都在这一层中定义。
    (3)业务过程层:业务过程层描述了业务执行的方式。
    (4)消费者层:这一层描述了不同的渠道,IT的功能通过这些渠道交付。
    (5)QOS层:这一层关注实现和管理非功能性需求及服务的安全。
2 Web Service
    Web Service是建立可互操作的分布式应用程序的新平台,它是对一些松散耦合的服务的抽象集合。具体来说,Web Service是一种模块化的软件应用程序,他们通过网络注册并发布到注册中心,其他应用程序可以通过注册中心获得这些Web Service的调用规范,一般使用WSDL描述,然后按照调用规范的定义使用SOAP协议绑定来访问和调用这些Web Service。
    Web Service基于XML技术标准,为运行在不同平台、不同架构以及使用不同语言编写的各种软件应用程序之间的互操作提供了一种解决方案。目的是为了让计算机应用程序自动识别和运用所提供的服务。Web Service的体系架构如图2所示。

    在图2的Web Service体系结构中共有3种角色:(1)服务提供者(Service Provider)发布自己的服务,并且对使用自身服务的请求者进行响应;(2)服务代理(Service Broker)注册与发布服务及其提供者,对其进行分类,并提供搜索服务;(3)服务使用者(Service Requester)利用服务代理查找所需的服务,进而根据需要使用该服务。
2.1 SOA和Web Service的关系
    W3C在2004年2月发布的面向服务架构规范中指出SOA是Web服务的架构,换言之,Web服务实现了面向服务的架构(SOA)。SOA是一套面向服务架构的标准规范,Web服务则是一套技术体系,可以用来建立应用解决方案,解决特定的消息通信和应用集成问题。SOA与Web Service之间的关系可以用数据结构中的森林和树符号化表示。
    定义1:Web Service=(T,A1,A1...An)是具有n个结点的树,1、2、...是结点编号,根结点即为服务代理,结点之间的关系即为服务之间的绑定关系。此定义的图形化表示,如图3所示。

    定义2:SOA=(T,T1…Tn)是具有n棵树的森林,1,2,…n是每课树的编号,每棵树为一种Web Service,树由服务代理、服务提供者、服务使用者组成,服务代理即为根结点,树根之间的关系即为不同Web Service之间关系,而树结点之间的关系即为不同服务之间的层次关系。此关系可用图4形式化地表示。

    (3)条件模式
  条件模式指在满足某个条件下才执行某个Web Service,如图7所示。

3 基于SOA的Web Service组合应用
3.1 Petril网建模

    首先, 利用Petri网对服务组合流程建模, 该模型包含顺序、并行和循环三种组合模式,整个组合系统主要由5种服务组成,如图8所示。

    图8中,s1是企业创建的申请,s2是学生申请过程,s3是学生的申请,s4是导师审核。t1是登陆系统,用于验证用户身份;t2是判断企业申请是否通过的条件;t3是判断学生能否申请此实习单位的条件;t4是判断学生是否申请成功该实习单位;t5是循环条件,判断导师是否要继续执行此审核。
    根据Petri网模型将学院导师管理组合Web Service 转化为相应的XML文件,XML文件中定义了调用Web Service相应栏目的功能。下面为学院导师管理Web Service的主页面,将其命名为Supervisor,在调用学院导师管理Web Service时,利用SOAP调用文件Supervisor.xml。
    学院导师管理组合Web Service软件主界面如图9所示。

3.2 学院导师管理Web Service软件核心功能
     核心算法:
  <script language="javascript">   
        <!--读取栏目的值-->
        XmlDocument doc = new XmlDocument(); 
              doc.Load("Supervisor.xml");    
    XmlNodexnserver= doc.SelectSingleNode
       ("resourcesdata/dataconnection/server");
  <!--操作栏目功能>
     XmlDocumentdoc=new XmlDocument();  
             doc.Load("Supervisor.xml");
       XmlNode xnuser=doc.SelectSingleNode
         ("resourcesdata");  
    xnuser.Attributes["createuser"].InnerText="false";       
     doc.Save("Supervisor..xml");      
     <!--添加栏目功能-->      
  XmlDocumentdoc= new XmlDocument();
           XmlTextReader reader=new  
           XmlTextReader("Supervisor.xml");       
    XmlElement root = doc.DocumentElement;
        <!--获取栏目的值-->
        XmlElementtagMessage=doc.
            CreateElement("Rootnet");    
        XmlElementtagText= doc.CreateElement
           ("Catalog");  
    <!--保存Supervisor.xml文件-->
        doc.Save("Supervisor.xml");
         </script>
    打开学院导师管理Web Service软件,以学院导师用户身份登陆,如图10所示。点击学生申请管理栏目,导师就可对自己所带学生的实习申请进行审核处理,也可以用学号对学生的申请进行筛选,然后进行快速审核。

    在面向服务的软件开发范型中,强调以聚合网络资源和满足用户多元化需求为出发点,以服务用户为核心。文章以SOA及Web Service的基本概念为出发点,分析了以往Web Service的组合模式,并给出了基于SOA的Web Service的组合模式。该模式以Petri网[11]为服务工作流的建模工具,对软件服务按层松散组合,形成了完整的软件原型。最后,以此组合模式实现了“学院导师管理”这个简单的Web Service案例。实验表明,运用基于SOA的Web Service组合模式可以有效地将网络上的资源进行整合重用,用户不用再考虑软件本身的复杂性,只需要根据需求选择需要的服务即可,同时此案例也体现了面向服务体系架构以服务用户为核心的先进理念。目前,Web Service在架构上趋于稳定,但是Web Service的关键技术还有待解决,如通过对基于语义的查找技术、基于语义的智能Web Service组合等问题进行研究[12],实现用基于语义的查找技术来替换现有Web Service基于关键字查找的方法,进一步体现面向服务体系架构“服务用户”的思想。
参考文献
[1] FENSEL D, BISSLER C, MAEDCHE A. Semantic Web enable Web services[C]. Proceedings of the First Interational Semantic Web Conference on the Semantic Web,2002(8):1-2.
[2] 李景霞,侯紫峰.Web 服务组合综述[J].计算机应用研究,2005(12):4-7.
[3] 张佩云,孙亚民.动态Web服务组合研究[J].计算机科学,2007,34(5):4-7.
[4] 石彦华,李蜀瑜.基于聚类Web服务的组合服务模式规约[J].计算机应用研究,2011,28(2):598-601.
[5] 刘安丰,陈志刚,桂卫华,等.基于生成树的Web服务组合模型[J].计算机工程,2008,34(10):108-110.
[6] 刘思培,刘大有,齐红,等.基于服务组链的Web服务组合方法[J].吉林大学学报,2010,40(1):148-154.
[7] 付燕宁,刘磊,金成植.基于服务链的Web服务组合方法[J].通信学报,2007,28(7):92-97.
[8] 王成良,冯欣.基于目标递进的Web服务组合方法[J].计算机工程,2011(6):52-54.
[9] 邢少敏,周伯生.SOA研究进展[J].计算机科学,2008,35(9):13-20.
[10] 赵松,王红,阎嫕.Web服务组合工作流中扩展UDDI的设计与实现[J].计算机工程与设计,2009,30(1):216-218.
[11] 黄瑜岳, 李克清. 基于Petri网的工作流合法性验证综述[J].计算机应用研究,2013,30(1):26-29.
[12] 叶蕾, 张斌. 基于功能语义的Web服务发现方法[J].计算机研究与发展,2007,44(8):1357-1364.

此内容为AET网站原创,未经授权禁止转载。