基于soa架构的集成方法研究与应用

基于soa架构的集成方法研究与应用

ID:35192560

大小:8.50 MB

页数:76页

时间:2019-03-21

上传者:U-22107
基于soa架构的集成方法研究与应用_第1页
基于soa架构的集成方法研究与应用_第2页
基于soa架构的集成方法研究与应用_第3页
基于soa架构的集成方法研究与应用_第4页
基于soa架构的集成方法研究与应用_第5页
资源描述:

《基于soa架构的集成方法研究与应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

中南大学硕士学位论文基于SOA架构的集成方法研究与应用姓名:尹兆冰申请学位级别:硕士专业:计算机科学与技术指导教师:王加阳20100526 摘要当前,伴随着经济建设的步伐,企业信息化得到了快速发展。但是,企业内也积累了许多分散孤立的应用系统,形成一个个的“信息孤岛”,所以集成这些应用系统成为当今企业的迫切需要。在这种背景下,面向服务构架应运而生。它为企业应用集成提供了一种动态、可扩展的架构方案,同时Web服务、服务组件架构和服务数据对象技术的成熟为面向服务架构以及企业应用集成提供了技术支持。本文提出一种新的方案来解决基于面向服务架构的企业应用集成。首先阐述了实现企业应用集成的面向服务架构理论以及Web服务、服务组件架构、服务数据对象技术。在阐述功能层集成思想的基础上,深入研究了基于而向服务架构的企业应用集成,分析了Web服务应用集成原理并设计了一个Web服务集成架构、讨论了Web服务应用集成的优点、同时分析了服务组件架构应用集成以及该应用集成的优势。然后,结合对基于面向服务架构的企业应用集成的分析,将Web服务、服务组件架构技术相结合,设计了一个基于服务组件架构、服务数据对象和Web服务技术的企业应用集成架构,该架构解决了集成中的服务组装和数据编程问题。重点对该架构进行了分析并对SCA组件调用、服务合成与匹配、服务组件架构设计理念及策略、数据访问服务进行了深入的研究。最后,根据设计的集成架构来设计和实现个人房屋贷款系统,同时详细分析了开发中涉及的技术问题。关键词面向服务的架构,Web服务,服务组件架构,服务数据对象,企业应用集成 ABSTRACTCurrently,Enterpriseinformationhasdevelopedrapidlyalongwiththeeconomicconstruction.However,enterprisesalsohaveaccumulatedmanyisolatedapplicationsystemswhichleadtoserial"informationisolatedislands",SOintegrationoftheseapplicationsisbecomingtheutmostneedsofenterprisestoday.Underthissituation,service—orientedarchitectureisdeveloped.Meanwhile,thematurityofservicecomponentarchitecture,servicedataobjectandwebservicestechnologiesprovidethetechnicalsupportforenterpriseapplicationintegration.Thethesisproposesanewsolutionofenterpriseapplicationintegrationbasedontheservice—orientedarchitecture.Firstly,itdiscussesthetheoryofservice—orientedarchitecture,thetechnologiesofwebservices,servicecomponentarchitectureandservicedataobjectindetail.Onthebasisofanalyzingtheintegrationoftheservicelayer,itmakesanin-depthstudyoftheenterpriseapplicationintegrationbasedontheservice.orientedarchitecture.Itanalyzestheprincipleofapplicationintegrationbasedonwebservices,designsanintegrationarchitecturebasedonwebserivicesanddiscussestheadvantagesofitsintegration.Meanwhile,itanalyzestheapplicationintegrationbasedonservicecomponentarchitectureanddiscussestheadvantagesforitsintegration.Secondly,Combiningwiththeanalysisoftheenterpriseapplicationintegrationbasedontheservice—orientedarchitecture,itdesignsanenterpriseintegrationarchitecturebasedonservicecomponentarchitecture,servicedataobjectandwebservicestechnologies.Thearchitectureresolvestheproblemsofserviceassemblyanddataprogramming.Itpaysmoreattentiontoanalyzethearchitectureandmakesanin.depthstudyontheinvokingofservicecomponent,servicecompositionandmatch,servicecomponentarchitecturedesignandstrategy,dataaccessservice.Finally,itdesignsandimplementstheindividualhousingloansystemaccordingtothedesignedintegrationarchitecture.Meanwhile,itanalyzesthetechnicalissuesintheprocessofdevelopment.1I KEYWORDSservice—orientedarchitecture,webservices,servicecomponentarchitecture,servicedataobject,enterpriseapplicationintegration!11 硕一l:学位论文第一章绪论当前,企业信息技术发展迅猛,其发展的~个主要趋势是企业应用集成(EnterpriseApplicationIntegration,EAI),企业应用集成是实现企业业务自动化的基础。企业应用集成已经成为最近几年应用程序和信息系统开发的驱动力。面向服务架构(Service—OrientedArchitecture,SOA)为传统的企业应用集成带来了一场革命,它能提供一种面向功能层的企业应用系统集成方式。这种方式不仅能保证遗留系统的数据安全性和逻辑安全性,而且还能实现各系统之间的松散藕合,这样可以最大限度的集成现有的遗留应用。1.1研究背景当前,大多数企业都有各种各样的系统、应用程序以及不同时期和技术的体系结构,通过使用这些应用系统,达到降低管理成本、规范业务流程和提高服务质量的目的。而这些应用系统彼此之问并不是孤立的,通常它们彼此之间需要信息交互,通过它们之间的相互协作来更好地完成企业分配的任务,这就需要探索一种新的软件开发方法,通过这种新的开发方法将现有的各个应用系统整合起来,从而达到整合企业资源的目的。这样,企业应用集成的研究由此展开。传统的企业应用集成解决方案按采用的方法学分类分为几种。点对点集成方法,是通过少数不同应用系统之问的直接硬代码集成。面向消息的中间件集成方法,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行网络应用系统的集成【¨。但是,传统的企业应用集成方法很复杂,成本高,而且不具备灵活性。此外,传统的企业应用集成方法也不能很好的支持企业转向以业务过程为中心的经营模式。在不改变原有企业应用系统的基础上,基于面向服务架构的企业应用集成开发方案被提了出来,企业应用集成进入面向服务架构的新时代。它通过发布可发现的接口为其它的应用程序提供服务,而其中的服务可以通过网络进行调用。采用面向服务的架构,我们可以最大程度地减少系统间的耦合,从而提高可重用性。当前,已经存在许多实现面向服务架构的方式。Web服务技术是其中之一,目前是一种的主流方式。它的若干实现技术基于XML标准接口,从而使得它具有良好的业务封装机制、标准的协议规范、松散藕合集成机制以及高度的可集成性等特点,能够很好的满足面向服务架构应用模式需求。通过在企业应用集成中引入面向服务架构和W曲服务的相关技术(如SOAP/WSD圳DDI等),可以实现面向服务的企业应用集成。但是,面向服务架构并不一定是通过Web服务技术来实现,而且一个基于Web服务技术开发出来的应用系统也不一定就代表一个基于面向服务架构的应用,Web服务技术只是实现 硕l:学位论文第一章绪论面向服务架构的具体方式之一。而服务组件架构、服务数据对象编程技术的相继出现,为面向服务架构提供了一种新的实现方式。两者有着密切的联系,相互协作,为企业应用集成提供了很好的支持。服务组件架构为开发者提供了单一的、使用服务的编程模型,服务数据对象为丌发者提供了单一的、展现和使用数据源的编程模型。本文正是基于服务组件架构、服务数据对象和Web服务技术构建了一种面向服务的、相粒度、松散耦合的、位置和传输协议透明的集成架构解决方案。1.2国内外研究现状20世纪60年代,企业应用集成伴随着信息技术的发展而出现。企业应用集成的理念就随着企业信息化程度的不断提高得到不断的发展,其关注的焦点也不停地变化。到80年代初,企业规模丌始不断扩大,业务和数据闩趋复杂,一些公司丌始意识到企业应用集成的价值和必要性,许多公司的专业技术人员试图在企业系统整体概念的指导下对现有的应用系统进行重新设计,以期将它们集成在一起。这时,一种点对点(Point.to.Point)的集成技术开始出现,在各个应用系统之间通过各自不同的接口进行点对点的简单连接,实现信息和数据的共享。80年代术到90年代初,随着企业规模的进~步扩大,应用系统不断增加,简单的传统点对点集成已经很难满足企业不断增长的业务要求,企业迫切需要新的集成方案。它以较少代码编写、低成本的开发来实现集成,可以将各种遗留系统和新系统无缝集成起来。利用CORBA、DCOM、MOM等面向信息的中间件技术【2】,实现了对企业信息系统的集成,~定程度上促进了企业的进一步发展,但其不足在于数据与传输紧密的耦合,不便于重用13】。当前,企业应用集成技术在国内外的应用已经处于一个高速发展的时期。企业应用集成不受行业的限制,它广泛应用于国防、汽车、金融服务、新闻、电信、高科技、咨询、法律、政府等机构和行业,主要应用范围涉及企业应用系统问的数据整合、流程整合、异构系统集成、电子商务数据交换等诸多企业应用集成领域。在国外,以Microsott、BEA的企业应用集成解决方案最有代表性。目前,国内企业提供企业应用集成的解决方案并不多,用友、金蝶等国内大的软件公司的产品竞争力也不很强。近几年来,成为研究热点的面向服务架构和Web服务技术的诞生,为企业内部及外部系统以及面向服务的集成提供了理论支撑和技术支持。在国外,面向服务架构已经不一个新鲜的概念。早在1996年此概念就已经出现了,不过受当时技术发展的限制,并不能完全地实现面向服务的架构。因此,面向服务架构在相当一段时间内没有得到大家的重视。2002年的12月,Gartner再次提出“面向服务的体系结构”是现代应用开发领域最重要的课题之后,不仅国内外计算机专家学者对此表现出极大的兴趣,而且以IBM和BEA为代表的各大lT厂商也纷纷加入研究面向服务架构的行列。目fi{f面向服务架构的理论研究主要集中在以下几个方面。2 硕十学位论文第一章绪论(1)理论模型。为了更好地促进未来应用系统间的交互,需要规范和指导基于面向服务架构的企业应用系统的开发。从事面向服务架构参考模型研究的意义正在于此。各个研究机构和各个公司提出了若干概念参考模型,作为面向服务的体系结构的指导方针。OASIS在2006年初提出了面向服务架构参考模型【4l,各大公司IBM、BEA也有自己的面向服务架构参考模型【5,61。(2)服务设计。服务的构件要考虑到当前大量使用面向对象或面向构件方法开发出来的大量遗留构件的复用问题,因此将现有的非面向服务的构件转化或者扩展为服务组件,为复用大量现有构件提供有效的途径。除了要兼容以前的遗留构件外,服务的设计研究主要应该是使用新的技术和标准来开发服务构件,在这个方面已经有了一些研究成果。比如OSOA联盟的服务组件架构、服务数据对象规范,Microsoft的WCF以及SUN公司的JBI规范。这些规范为服务的设计和丌发提供了方法、规范,促进了面向服务的设计和开发的发展,是目前服务设计和开发方面的主流,也是整个面向服务的软件体系结构方面实质性的探索和研究。(3)服务组合。它足面向服务的体系结构的研究中的热点和重点。目前基于流程的研究大多基于BPEL(BusinessProcessExecutionLanguage,业务流程执行语言)17J,BPEL是最有影响力,最广泛接受的流程语言,并已经成为标准。此乡,bOWL-St81,是一个比较有名的基于语义的流程语言,在学术研究中占有重要地位。此外还有基于语义的方法、基于形式化方法、基于规划的方法的研究。文献【9】提出了一种基于领域本体的服务动态组合算法。该方法利用领域本体及其推理能力,生成一个优化的服务组合图,然后基于该图给出了一个高效的服务组合算法。(4)服务发现。互联网上存在着大量的w曲服务,但是我们所需要的只是其中的少量W曲服务,W曲服务发现研究目的就在于此,使用w曲服务发现方法查找出满足要求的服务。服务调用的质量由服务发现的效果来决定,同时,服务发现的效果也影响服务组合的相容性和可替换性,关系到能否真正实现服务的即插即用。由于传统的Web服务发现机制查准率较低,w曲服务发现的研究者引入了语义网(SemanticWeb)技术加强服务描述信息的机器可理解性,支持用户需求和服务能力之间的逻辑推理匹配;利用P2P技术来处理服务元数据的交捌Ⅻ,克服传统UDDI(UniversalDescription,DiscoveryandIntegration,统一描述、发现和集成)技术中服务元数据集中注册、集中存放对搜索广度带来的限制。值得一提的是,文科Il】是国内比较系统的总结和研究服务发现的文献,它系统地总结了服务发现的相关技术,并在此基础上提出了基于服务质量QoS的服务匹配算法,服务选择模型,提出了Web服务发现的体系结构,提出了w曲服务发现的原型系starWSDS。服务发现是面向服务的体系结构的研究热点,也是难点,这方面需要解决的问题还很多,未来几年内仍然会有很多研究针对这个方面。在面向服务的体系结构的应用方面,各大软件厂商在推行面向服务架构时一般结合3 第一章绪论自己产品平台进行。IBM作为业界科技创新的领导厂商,早在面向服务架构领域投入了大量精力,提出面向服务架构的IBM解决方案,使客户能够快速实施面向服务的架构,并帮助企业全面丌发面向服务架构的潜能,从而实现随需而变的业务。在通过面向服务架构实现真正业务价值的过程中,IBMWebSphere在IBM中间件的基础上强化了很多应用接口。正如IBM所强调的“总线”概念,它关注的领域是系统领域,为企业用户提供全套的架构服务【121。此外,BEA、SAP等软件厂在商推出了自己的面向服务架构产品。它们都是站在自己的角度,所提的概念也不尽相同,很难形成统一的标准,这导致目前面向服务架构的实践处于一种较为混乱的局面。在国内,对面向服务架构的研究仍然处于探索阶段。国内科研机构的理论研究成果也并不多,对于面向服务架构的著作更是少见。中国企业正在寻求解决动态lT应用整合的问题,越来越多的企业己经了解到面向服务架构的价值及重要性。尽管受到全球金融危机的影响,面向服务架构在会融、电信、交通行业【l3】等其它领域的应用有很大的进展。在2007年3月,面向服务架构核心组件标准SCA/SDO标准1.O正式发布,中国的企业普元软件第一次在软件架构层面参与全球标准制定,其研发的PrimetonEOS产品,是基于J2EE技术实现企业级应用开发、运行、管理、监控、维护的中问件平台【14】,其开发与集成技术接近于国外IT巨头面向服务架构产品的水平。EOS采用面向构件构建应用系统的模式,一定程度上体现了面向服务架构的思想。但从总的来说,国内对面向服务架构的实践仍处于较为初步而零散的局面。1.3本文主要工作为了能够更好的解决企业应用集成的问题,人们不断的提出新的解决方案,这些新的解决方案在一定程度上能够弥补以往的不足,从而达到一种更加完美的解决方案。软件体系结构的出现克服了软件危机中的问题,降低了软件开发的复杂度。伴随着经济的飞速发展,企业的规模在不断的壮大,企业信息化所需的软件复杂度也在增加,传统的软件体系结构暴露出了它们的弊端,新的体系结构正在崭露头角,解决了过去软件开发中出现的种种问题。面向服务架构正是为软件体系结构注入了新的生命活力,实现了应用程序间良好的互操作性、可扩展性以及高度的集成性。基于面向服务架构的企业应用集成解决方案,将企业中不同业务功能的应用程序集成在一起。从而构建一个可供数据交流共享和应用沟通的中心系统,达到现有的应用系统能够在新的环境中良好运行的目的,使我们可以从另外一个角度来看待企业内部的信息资源,新的企业信息和企业原有的信息资源融合在一起,使得它们能够在新的平台上交互,从而一起发挥集成效应。本文从面向服务架构的企业应用集成角度出发,深入阐述了面向服务架构模型以及w曲服务、服务组件架构、服务数据对象等技术。在研究了W曲服务应用集成、服务组4 硕+l二学位论文第一章绪论件架构应用集成的基础上,结合本人硕士阶段参与的软件项目的经验和一些体会,进而提出了一种基于面向服务架构的企业应用集成方案。主要研究工作如下:(1)阐述了面向服务架构理论以及Web服务、服务组件架构和服务数据对象技术,对其中的概念、模型、特征、优势等方面进行了深入的分析,将它们与企业应用集成联系起来,为最终的企业应用集成解决方案和架构设计提供理论依据。(2)深入研究了基于面向服务架构的企业应用集成,包括分析了集成的层次,重点研究了w曲服务、服务组件架构技术来实现基于面向服务架构的企业应用集成。分析了w曲服务工作原理并设计一个基于w曲服务的企业应用集成架构。同时,分析了基于服务组件架构的企业应用集成并阐述了该集成的优势。(3)提出一个基于面向服务架构的企业应用集成新方案,该方案最大的特点在于整合了w曲服务、服务组件架构和服务数据对象技术。设计了一个基于w曲服务、服务组件架构和服务数据对象的企业应用集成架构SSWSOA,其不同于W曲服务以及服务组件架构各自来实现企业应用集成。重点对该架构进行架构分析,深入分析架构中每层的功能及实现的技术,并对架构中的SCA组件调用、服务合成与匹配、服务组件架构策略框架以及设计理念、数据访问服务进行了分析。(4)结合设计的SSWSOA,设计和实现了个人房屋贷款系统并对开发中涉及的主要问题进行了分析。1.4内容组织本文以基于面向服务架构的企业应用集成的研究为出发点,通过对面向服务体系架构理论以及实现基于面向服务架构的企业应用集成的技术Web服务、服务组件架构以及服务数据对象分析,提出一个企业应用集成解决新方案,该方案基于面向服务架构,充分体现了面向服务架构的思想,并根据这些技术设计了一个企业应用集成架构SSWSOA。本文分六章进行论述:第一章绪论,阐述了论文研究背景、研究意义和目的;详细分析了国内外研究现状以及阐述了论文的内容组织。第二章面向服务架构理论与技术,主要阐述了面向服务架构理论以及用于实现基于面向服务架构的企业应用集成的Web服务、服务组件架构、服务数据对象技术。第三章面向服务架构的企业应用集成,首先分析了企业应用集成层次,针对功能层集成优势,引出基于面向服务架构的企业应用集成解决方案。然后,研究了Web服务、服务组件架构技术来实现基于面向服务架构的应用集成。分析了Web服务工作原理,设计一个集成架构并阐述Web服务集成之优点;研究了服务组件架构应用集成并分析了其集成带来的优势。第四章面向服务架构的集成架构设计,主要内容是创新性的提出一个基于面向服5 硕士学位论文第一章绪论务架构的企业应用集成解决方案,该方案融合了基于Web服务的企业应用集成以及基于服务组件架构的企业应用集成方法,设计了一个基于服务组件架构、服务数据对象和Web服务技术的企业应用集成架构SSWSOA。并对框架进行以及其中每层中的问题进行研究。第五章面向服务架构的企业应用集成架构应用,主要通过个人房屋贷款系统的设计和实现展示基于面向服务架构的企业应用集成架构SSWSOA的应用。首先分析了个人房屋贷款系统的业务背景,对目的支持服务组件架构的编程环境的集成环境与工具进行了分析并选择丌发技术与工具。接着,基于设计的集成架构SSWSOA对系统进行总体设计并分析了每层所使用的技术。然后,从数据访问、业务功能、模块设计以及客户端调用几个角度对系统进行实现。最后,论述了系统开发中的一些技术性问题。第六章总结与展望,是对本文的工作进行总结,并对未来作出展望。1.5本章小结面向服务架构及其实现技术的不断发展越来受到人们的关注,如何设计与应用一种符合企业本身的集成架构成为了研究的热点。本章首先介绍了企业应用集成的研究背景,指出本文将基于面向服务架构的企业应用集成研究作为出发点。然后,较为深入地分析了面向服务架构及其企业应用集成的国内外研究现状。最后,讨论了论文的主要研究就工作以及内容组织安排。6 硕-J:学位论文第_二章面向服务架构理论‘j技术第二章面向服务架构理论与技术为了实现应用系统问的集成,企业最初主要采取紧耦合的集成方法,最典型的就是点对点的集成,这种集成方法有着很多的弊端。不仅需要对应用系统做较大的改动,还需要编写大量的代码,并且当再有一个新系统需要集成时,系统需要再次重新设计,不仪加大了集成的难度,而且提高了集成的成本。为了有效的降低集成难度,减少集成的成本,成功的实现多个应用系统间的无缝集成,并且能保证系统集成的松散耦合性、开放性。本文设计了一个基于面向服务架构的企业应用集成架构,该集成架构采用了一些实现面向服务架构的技术,充分体现了面向服务架构的思想。对此,本章将主要对面向服务架构理论以及实现面向服务架构的技术Web服务、服务组件架构和服务数据对象予以阐述,为下面几章进行企业应用集成分析以及架构设计打下基础。2.1面向服务架构随蓿信息技术的不断发展,特别是分布式计算技术和因特网的飞速发展使企业拥有了大量基于网络的大型分布式应用系统。而这些应用系统之间的数据很难共享,从而不可避免的形成了一个个的“信息孤岛”。SOA,即面向服务架构正是为处理这个复杂问题而提出的有效解决方案。这种体系结构思想起源于“把软件作为服务(SoftwareasaService)”的观点。2.1.1概念及模型Gartner在1996年提出面向服务架构的概念,只是作为一种架构理念。2002年12月,Gartner3L提出面向服务架构是“现代应用开发领域最重要的课题’’,并预测到2008年,面向服务架构将成为占有绝对优势的软件工程实践方法。许多的学者提出了自己的面向服务架构的概念与定义。文献【l5】提到服务有八条基本原则,其中,自治性、松散耦合、抽象、以及需要正式契约被视为形成面向服务架构根本基础的核心原则。文献【I6】定义面向服务架构是一种设计方式,它指导着业务服务在其生命周期中包括创建和使用的方方面面。面向服务架构也是一种定义和提供IT基础设施的方式,它允许不同应用相互交换数据、参与业务流程,无论它们各自背后使用的是何种操作系统或采用了何种编程语言。其中文献【17】定义面向服务架构是一个软件架构,它包含四个关键概念:应用程序前端、服务、服务库和服务总线。一个服务包含一个合约、一个或多个接口和一个实现。IdeaGroup对比了面向服务的体系结构和现存技术的不同和相同之处,用参照的方式陈述了面向服务架构的概念。7 硕l:学位论文第二章面向服务絮构理论oj技术Service-architecture.tom将面向服务架构定义为,“质上是服务的集合。服务间彼此通信,这种通信可能是简誓的数据传送,也可能是两个或更多的服务协调进行某些活动。服务问需要某些方法进行连接【l引。所谓服务就是精确定义、封装完善、独立于其它服务所处坏境和状态的函数”。总体来说,面向服务架构是一种架构模型,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。面向服务架构模型描述了三种角色(服务提供者,服务请求者,服务注册中心),三种基本活动(发布,查找,绑定),这与基本的Web服务架构相同[19】。图2.1描述了面向服务架构的参考模型。图2-1面向服务架构模型下面对面向服务架构模型中的三个基本活动进行分析。发布(Publish)H艮务,服务提供者向服务注册中心发布服务描述,以使服务使用者可以发现和调用,发布的信息包括与该服务交互必要的所有内容,如服务路径,传输协议以及消息格式等圆】;查找(Findl服务,服务请求者直接检索服务描述或在服务注册中心来查找和定位满足其标准的服务,查找服务的操作由用户或者其它服务发起;绑定和调用(BindandInvoke)服务,在检索服务描述之后,服务消费者继续根据服务描述中的信息来调用服务。对应于这三种活动,涉及至.tl--种基本角色【2¨。服务提供者(ServiceProvider),即服务的创建者和拥有者,是一个可以通过网络访问的实体,它将自己的服务和服务描述发布到服务注册中心,以便于服务请求者来定位,也可以因为用户需求的改变而取消服务;服务请求者(ServiceRequester)从服务注册中心定位其需要的服务,向服务提供者发送一个消息来启动服务的执行。它可以是一个请求的应用、服务或者其它类型的软件模块,完成发现提供所需服务的WSDL文档,以及与服务通信的功能;服务注册中,t】,(ServieeRegistry)作用是服务提供者在此发布自己的服务描述,服务请求者查找服务并获得服务的绑定信息。实现增加、删除、修改己发布的服务描述以及从注册表中查询服务的功能。由模型图可以看出,面向服务的体系结构中的主要构件包括服务和服务描述。服务8 硕。f二学位论文第-二章面向服务架构理论与技术(Service)是一个由服务描述来描述的接口,而服务描述的实现就是该服务。服务是一个软件模块f221,独立于技术的业务接口,可在不同业务过程中被重复调用,而且具体的服务实现不依赖特定实现语言与工具;服务描述(ServiceDescription),其本质是服务内容的标准化描述,提供了服务内容、绑定类型、传输协议和服务地址等,生成相应的完全的文档,发布给服务请求者或服务注册中心。2.1.2基本特征面向服务架构是一种粗粒度、松耦合的服务架构,其服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。这种架构特征归纳如下。(1)松散耦合。面向服务架构是“松散藕合”的组件服务,这一点区别于大多数其它的组件架构。归纳起来,在面向服务架构中松散耦合包括三个方面。接口藕合是将服务使用者和服务提供者在服务实现和客户如何使用服务方面隔离开来。服务提供者和服务使用者间松散藕合背后的关键点是服务接口作为与服务实现分离的实体而存在1151。这使服务实现能够在完全不影响服务使用者的情况下进行修改。技术耦合强调服务请求者和服务提供者的实现和运行不需要依赖与特定的某种技术,可以使用不同的技术实现。流程耦合强调服务不应与具体的业务流程相关,以便能够用于多种不同的业务流程与应用,体现了服务的可重用性。(2)粗粒度服务。服务所公开功能的范围,即为服务粒度(servicegranularity)。一般分为细粒度(fine—grainedservice)和粗粒度(coarse-grained)两种。细粒度服务提供较小的功能单元。粗粒度服务针对复杂的业务逻辑,封装了大块的业务。服务粒度在设计时应该选择合适的大小,必须在服务粒度设计上维护一种平衡,以获得成本降低、灵活响应的好处。设计中在满足一致性的前提下尽可能地进行粗粒度建模。(3)标准化的接口。面向服务架构通过服务接口的标准化描述,使得该服务可以提供给任何异构平台和任何用户接口使用。这一描述囊括了与服务交互需要的全部细节,包括消息格式、传输协议和位置【231。该接E1隐藏了实现服务的细节,允许独立于服务基于的软硬件平台和编写服务所用的编程语言。2.2Web服务技术W曲服务是由W3C(WoddWidew曲Consortium,万维网联盟)制定的一套开放的标准技术规范,其基于XML的三大关键技术SOAP,WSDL和UDDI,其最大的特点是允许不同的软件应用程序能相互操作,无论这些程序是用什么编程语言实现、运行在什么样的操作平台或架构技术上。Web服务能使应用程序以一种松散耦合的方式组合起来,并实现复杂的交互。9 第二:章面向服务粲构理论’j技术2.2.1Web服务原理及概念Web服务体系工作组对Web服务提供了如下的参考定义:W曲Serviceprovidesastandardmeansofinteroperatingbetweendifferentsoftwareapplications,runningonavarietyofplatformsandframeworks。对Web服务更精确的解释是【241,Web服务是建立可互操作的分布式应用程序的新平台。Web服务平台是一套标准,定义了一套标准的调用过程。从定义可以知道,Web服务在不同的软件应用之问提供了标准的交互方式,使原来各孤立的站点之问的信息能够相互通信、共享,而不用考虑应用程序的实现技术以及运行平台。学术界对Web服务技术的研究趋于成熟,因此对其定义的解释很多。本文在此提出对Web服务的理解,WebService=SOAP+H1]四+WSDL。其中,SOAP(SimpleObjectAccessProtocol,简单对象访问协议)是Web服务的主体。WSDL(WebServiceDescriptionLanguage,web服务描述语言)是一个XML文档,它通过H丌P向公众发布,公告客户端程序关于某个具体的Web服务的URL信息、方法的命名,参数,返回值等。2.2.2Web服务协议栈在Web服务环境中,工作任务是通过面向服务架构模型的三个角色之间的相互合作来完成的,要完成这种跨平台的交互,必须有一套标准的Web服务规范,如服务描述格式、通讯格式、数据交换格式以及其它方面的规范,这就构成了web服务架构的协议栈嘲,如图2.2所示。一f:作流业务处理WSFLBPEL4WS蔓UDDI垒兀服’司WSDL数磐象SOAP握:磕.’官:晷鸯图协议栈层次结构从这样的层次结构可以看出,由底向上,依次为基础网络层、传输层、信息包装层、服务描述层、服务发现发布层、业务描述层。此外,服务质量、安全性、事物性、可靠性和可管理性贯穿了整个协议栈。W曲服务是建立在、和lO 硕-J二学位论文第二章面向服务架构理论’j技术基础上的分布式技术【26】。Web服务需要通过网络来访问和调用,所以Web服务协议栈的基础层是网络层,使用HTTP标准网络通讯协议。Web服务还可以支持其它的因特网协议,如SMTP、FTP等。信息包装层采用的主要协议是SOAP,是基于XML的消息传递,是一个用于在分布式环境下数据交换的简单、轻量级协议,它与编程语言、对象模型以及操作系统平台都无关【2。71。服务描述层,采用的是Web服务描述语’言(WSDL),是用XML文档来描述web服务的标准,是Web服务的接口定义语言,描述了服务所提供的操作、参数和参数类型;服务发布、发现层定义了服务如何公丌它们自己以及如何在网络上相互发现,对于要相互查找的服务,统一描述、发现和集成为查找和访问服务定义了注册中心和相关的协议,本质是服务的公共网址【281。由于WSDL文件中已经定义了web服务的地址URL,外部可以直接通过WSDL提供的URL进行相应的Web服务调用,所以UDDI不是W曲服务必须的一个组成部分。最后一层是业务描述层,采用Web服务流语言(wsFL)、Web服务业务流程执行语言(BPEL4WS),WSFL作为叙述网络服务流程的语言,定义了服务操作的顺序,服务间的交互方式;BPEL4WS定义了一起进行分布式事务处理的工作流操作、web服务事务(ws.Transaction)、Web服务协调(ws—Coordination),集成并替代了IBM的Web服务流语一言-(WSFL)和微软的XLANG规范,用于应用程序和流程的集成【291。2.2.3Web服务实现技术面向服务架构是建立在分布式计算技术的基础上,它使得分布在网络上的软件组件可以被发布,相互之间可以发现和调用。组件所提供的服务可以在任何地方、为任何人所获得。Web服务是一种优秀的分布式计算技术,在因特网或者企业内部网上通过使用标准的XML协议和信息格式来展现商业应用服务。通过使用开放的因特网标准:SOAP简单对象访问协议(用来服务调用)、WSDL(Web服务描述语言,用来服务描述)和UDDI(统一描述、发现和集成规范,用来服务的发布和集成1,使得服务发布者、Web服务平台等相互独立,从而消除了现存解决方案(如CORBA和DCOM)中的不足方面。(1)数据表示为XML。即ExtensibleMarkupLanguage(n-I"扩展标注语言),是基于文本的、自描述的结构化语言,完全独立于平台和编程语言,所以特别适合作为不同应用之间进行数据交换和消息传递的数据载体。它是是由W3C于1998年2月发布的一种标准,是SGML(StandardGeneralizedMarkupLanguage,标准通用标注语言)的一个简化子集f30‘。XML具有可扩展、自描述性、独立于平台和应用等特点f311。需要注意的是XML不是HTML的替代品,XML和HTML是两种不同用途的语言。XML是用来描述数据,如何存放数据的,而HTML是用来显示数据的,侧重描述如何显示数据;HTML是与显示信息相关的,而XML则是与描述信息相关的。 硕I:学位论文第二章面向服务架构理论oi技术(2)消息传输方式SOAP。即SimpleObjectAccessProtocol(简单对象访问协议),是一种轻量的、简瞥的、基于XML的分布式计算协议,它允许在一个分散、分布式的坏境中交换信息。SOAP具有跨硬件平台、操作系统、编程语言和网络硬件平台的高度互操作性。Web服务就是采用SOAP作为标准通信协议。SOAP规范由四部分组成:SOAPenvelop(SOAP信封)、encodingrules(soAP编码规则)、SOAPRPCrepresentation(SOAPRPC表示)和SOAPbinding(SOAP绑定)【32J。SOAP信封结构是SOAP消息的信息框架。对于SOAP的工作机理,可以理解为一个开放协议SQ"=RPC+H1]rP+xML。XML作为数据传送的格式,RPC作为一致性的调用途径以及HTTP作为底层通讯协议,允许服务提供者和服务请求者经过防火墙在因特网进行通讯交互。如图2.3所示。图2-3SOAP工作原理(3)描述方式WSDL。即W曲ServiceDescriptionLanguage(Web服务描述语言),是Web服务描述语言。简单的说,就是一个XML文档,它将Web服务描述定义为一组服务访问端点,客户端可以通过这些服务访问端点对包含面向文档信息或面向过程调用的服务进行访问。本文在集成应用一章中将会阐述WSDL文件的创建。一个完整的WSDL文档包括五个部分【331。types元素表示W曲服务中使用的数据类型,它是独立与机器和语言的类型定义,这些数据类型被标签所使用;message元素表明W曲服务包含的消息,它定义了Web服务函数的参数,在WSDL中,输入参数和输出参数要分开定义,使用不同的标签体标识,标签定义的输出输入参数被标签使用;portType元素:表示w曲服务执行的操作。该标签引用标签的定义来描述函数名(操作名、输入输出参数);binding元素表示W曲服务使用的通讯协议。其作用是将标签中定义的所有操作在此绑定实现;service元素用来确定每--标签的端口地址。其中,属于抽象定义层,属于具体定义层。所有的抽象可以是单独存在于别的文件中,也可以从主文档中导入。12 硕+l二学位论文第二章面向服务架构理论与技术(4)发布、发现方式UDDI。即通用描述、发现和集成规范,是由Microsoft,IBM,Ariba三家公司在2000年7月提出。UDDI是Web服务的信息注册规范,以便被需要该服务的用户发现和使用它。通过UDDI,Web服务可以真正实现信息的“一次注册,到处访问”,UDDI标准定义了Web服务的发布和发现的方法,它为Web服务在技术层次上提供了三个重要的支持:标准化的、透明的、专门描述Web服务的机制;调用Web服务的简单机制以及可访问的W曲服务注册中心。UDDI注册中-t二,(UDDIRegistry)是所有提供UDDI注册服务的站点的通称。分为公共UDDI注册中心和私有UDDI注册中心。其所提供的信息包含三个部分【蚓,白页(WhitePage)说明提供W曲服务的公司(人)信息;黄页(YellowPage),包括了基本标准分类法的行业类别;绿页(GreenPage),说明接V1(Web服务提供)的详细信息。UDDI标准包括了对Web应用服务的接口的定义,使得能通过编程实现对UDDI注册中心的信息访问。使用UDDI注册中心的基本工作原理是服务提供者首先使用UDDI注册中心注册服务,服务使用者然后在UDDI注册中心中查找所需的服务,当它发现需要的服务时,使用者将直接‘彳提供者绑定来使用该服务。2.3服务组件架构2005年11月30同,BEA宣布将与IBM、Oracle、SAP等公司一起,支持一种构建和包装应用程序的新规范,即服务组件架构(ServiceComponentArchitecture,SCA)t351。SCA是一个用于服务调用和构建的、与实现语言无关的组件编程架构或者说是编程模型,是面向服务架构思想的一种实现形式。目前的组件的最大问题就是组件接口和传输协议是一种紧密耦合的情形。SCA就是为了将组件接口和传输协议解耦而出现的。面向服务架构是概念上的模型,SCA是为了构建面向服务架构系统而设计的,是对面向服务架构的一个特定实现。2.3.1服务组件架构规范SCA组件可以自由绑定各种传输协议,组件之间处于一种松散耦合的状态,不需要在自己的代码中加入对方组件的接口代码,为大规模的集成打下了良好的基础。它是面向服务架构的实现方式之一,可以将不同的遗留应用方便的集成起来。SCA中组件和模块以接口的方式提供服务,服务的调用者只需看到服务接口,而无须知道服务组件和服务模块的内部细节。在服务实现方面,它易于被扩展为多种实现语言技术Java、C++、BPEL、脚本语言(如PHP、JavaScript),以及声明性语言(如XQuery和SQL)t361,对这些语言的支持还包括支持它们所使用的框架和环境Tomcat、Jetty、Geronimo、OSGI等。在服务连接方面,13 硕士学位论文第二章面向服务架构理论与技术SCA支持各种常见的通信和服务访问技术如Web服务、JMS、EJB、RPC等。安全、事务、可靠性消息等其基础设旌环境,可以通过定义于独立于实现组件的策略(Policies)来进行设置,这些属性都配置在配置文件中。下面对SCA的核心概念服务组件、服务模块等予以分析。(1)服务组件(SCAComponent)。在SCA模型中,服务组件是集成的基本单元。组件是业务功能的基本元素,通过模块组合组件成为完整的商业解决方案。组件封装了服务,因而是服务的提供者。不过在有些情况下,组件的实现需要依赖于其它服务,因此组件也可能是服务的请求者。图24显示了SCA组件的服务组件组成。——Java——BPEL—Composite图2-4SCA组件由图可以看出,一个组件由服务(service)、实现(implementation)、引用(reference)和属性(property)四个元素构成。此外,几乎所有的元素都有两个可选的属性:requires和policySets[37]o服务描述了这个组件对外提供的业务功能。通常一个组件会有若干个服务,每个服务包括一个接El(interface)和若干个绑定(binding),接12描述了该服务提供的操作(operation),而绑定则描述了该服务的访问方式;组件实现即业务功能的实现;引用描述了这个组件所依赖的外部服务;属性是对组件实现的一种属性参数注入。SCA作为一种服务组件架构,其与传统组件架构的主要区别在于几个方面。SCA是粗粒度的,而传统组件架构以细粒度居多;SCA接口是标准的,主要是WSDL接口,WSDL是语言无关的;而传统组件架构常以具体API形式出现,具体API是语言相关的;SCA的实现是与语言无关的,传统组件架构常绑定某种特定的语言;SCA可以通过组件容器提供QoS的服务,传统组件架构完全由程序代码直接控制。一个或多个组件的包装就构成了服务模块(SCAComposite)。把哪些组件放在一个模块中主要取决于业务需求和部署上灵活性。模块是SCA中的运行单位,由于模块是一14 硕士学位论文第二章面向服务架构理论与技术个独立部署的单元,因此给应用的部署带来很大的灵活性。模块的这些特点恰好适合于企业应用集成。模块里包含若干组件、入口点(Service)、引用、属性、连线(链接机制)等。在SCA服务模块的结构图如图2—5所示。WebServiceSCABinding——JCA—JMS图2-5SCA服务模块-WebService—SCABinding—JCA—JMs组件在前面已经做了详细的分析说明,连线(Wire)和提升(Promote)将在下节单独地加以分析,在此分析几个重要的属性Ⅲ】。模块属性(property)是对其内部实现进行配置的一种途径,通常的用法是在模块这一层定义属性,然后由内部的组件属性通过一定方式,如source属性来引用这些模块属性;模块服务(service)是通过提升模块中某些组件的服务而形成的。一个模块服务来自哪个服务,是用service元素的promote属性定义的,属性值的格式是“组件名/月&务名’’;模块引用(reference)是通过提升模块某些组件的引用而形成的。在reference元素中,name属性说明了引用的名称,在模块中是唯一的;promote属性定义了模块引用来自哪些组件引用,属性值的格式是“组件名/71用名”,若多个组件引用被提升成为同一个模块引用,那么这些组件引用之间需要用空格分隔。此外,multiplicity属性和target属性与组件引用中的含义一样,前者指明链接外部服务个数,后者表示链接的外部服务。在模块引用中还包含接口和绑定信息,分别用interface和binding元素来定义。(2)连线(Wire)和提升(Promote)。连线和提升是SCA中极其重要的术语,两者皆为实现SCA应用集成的机制。当一个模块内部的组件之间,或者模块和模块内的组件之间有调用的关系时,是通过SCA内部的Wire机制实现的。Wire是SCA架构的运行环境需要提供的功能,它把来源(Sources)弓I用连接到目标(Targets)服务。Promote本质上就15 第二章面向服务架构理论与技术是Wire,开发人员可以根据业务需求将某些组件的一些Service和Reference提升为整个模块的Service和Reference,用来被模块的外部世界访问。定义连线的一种方法是在组件的配置文件中配置target属性,格式为“组件名/服务名”,当组件只有一个服务并且接口类型与引用的相匹配时,服务名为可选从而可以省略。另一种方法就是用模块(Composite)的wire子元素定义从一个引用到一个服务的连接。图2-6为一个连线和提升的结构示例。SCAComposite≥尹脚誊,>P>组件2澄>≯j》、萝i>组件3≥÷.矗≥≥一蓼>至鎏》Reference/一Wire图2-6SCA集成机制组件1实现的功能公开为模块的服务“A”,用来被模块之外的组件i鞲tm(模块的Reference)。组件1有两个引用,调用组件2、组件3;组件2,组件3提升为模块的引用“T”和“U",,用来调用模块之外的组件(模块的Service)。2.3.2与其它集成技术比较服务组件架构通过连线和提升来实现集成,是一种企业应用集成的方式。Web服务、JBI、Spring集成技术都有其特定的集成方式和策略,从而有其特定的集成特点,在此将它们与服务组件架构集成技术来进行比较,从而体现服务组件架构用来集成的优势。(1)SCA与Web服务。Web服务使用WSDL统一了服务接口的描述,使用SOAP统一了数据传输和交换格式,在增强应用之间的可连接性以及互操作性方面迈出了一大步,但是其缺少一个统一调用的模型,包括调用Web服务和其它类型的服务;此外Web服务没有涉及如何去构建Web服务以及这个服务所需要使用的配置策略和服务之间的依赖关系,解决这些问题恰恰是SCA的使命之一。SCA发展了Web服务,它不但定义了一个服务组件模型,还提供了服务组装模型,16 颀。I:学位论文第二章面向服务架构理论.‘j技术服务模型提供了比Web服务更多的功能,允许服务开发者不单定义服务的接口而且还可以定义这个服务和其它服务的依赖关系,以及这些交互(事务、安全以及可靠性传输)之间的策略还有服务所可能提供的配置功能。(2)SCA与JBl(JavaBusinessIntegration)。JBI足Sun公司发布的一个用于Java应用组件进行集成的一个标准,随着在JSR208中被定义,它也成为了把服务容器组装为合成应用的标准。它提供了一种全新的容器,能够接受任何类型的传输协议,一种以松散耦合的方式将所有不同类型的服务集成起来的容器。JBI主要由规格化消息路由器(NormalizedMessageRouter)、绑定组件(BindingComponents)以及服务引擎(ServiceEngines)组成,创建了一个用于各种组件服务集成的集成环境(容器)【3引。SCA是由IBM和BEA等公司提出的,是一个用于服务调用和构建的、与实现语言无关的组件编程架构,可见两者的关注点是不同的。SCA是以接口作为切入点,从组件接口层将传输协议和接口实现解耦,是从编程的角度出发的,是一种全新的编程模型。JBI是以请求消息和响应消息作为切入点,在集成时将消息和传输协议解耦,形成一种和传输协议无关的标准消息,这样形成一种全兴的区别于现有应用服务器的集成容器,是从容器的角度出发,一种全新的容器模型。(3)SCA与Spring。Spring框架普遍用于构建Java应用,它提供的IoC(InversionofControl,控制反转)机制,一般采用JavaBeans的setter方式实现依赖注入。通过在Spring配置文件中描述bean的信息,控制反转将根据此配置文件在容器中实例化bean,再通过BeanFactory(在spring的jar包中)找到实例化的bean。SCA组件主要通过接口进行交互,组件提供的服务是一个由接口定义的操作的集合,组件引用其它组件提供的服务也是通过该服务定义的接口来进行。SCA依赖注入方式是从JNDI或ServiceManager等获得被调用者,类似ServiceLocator模式【391。在本质上SCA和Spring实例化对象的思想是一致的,两者都在不同程度上应用了依赖注入模式,和基于接口的实现。SCA可以将Spring封装为组件来使用。也就是说,Spring框架能用于创建服务组件,并通过其依赖注入特性来连线构件中的服务组件。但是,两者也有其不同之处,Spdng只能基于Java进行实现,而SCA则可以采用多种实现技术;Spring面向的连接是基于同一业务过程之内的细粒度组件,而SCA面向的可以为不同业务流程问的服务组件。2.4服务数据对象服务数据对象(ServiceDataObject,SDO)是由IT界几个重要的软件开发商联合制定的一种数据应用程序开发框架,是一种数据编程模型。它包括体系结构和相应的API;定义了统一的方法来访问和操作来自异构数据源的数据,包括关系数据库(RDB)、实体EJB组件、XML页面、Web服务、JCA和JSP等。在基于面向服务架构的企业应用集17 硕I二学位论文第二章面向服务架构理论‘j技术成中,遗留系统中分布着各种不同的数据源,运用SDO来统一地访问它们,同时将SDO作为SCA元素之问传递的参数或返网值类型,能够实现业务代码与数据代码的解藕。2.4.1服务数据对象的提出当阿数据对象编程面临着几个方面的挑战,从而服务数据对象被提了出来。首先,在面向服务架构的企业编程模式中,一个不可或缺的部分就是业务数据模型,以及数据操作和交换。SCA组件模型并没有涉及到数据编程方面,因此需要结合其它技术进行解决。在丌发的过程中,数据可能会来自于不同的数据源。这些异构数据源的存在使应用开发者面临很大的挑战。其次,静态、强类型接口为应用开发者提供了一种简单易用的编程模型。对象/关系持久化机制EntityEJB、JDO、Hibernate提供了访l、u】数据的强类型Java接口,这些接口为丌发者提供了简便的编程模型(如student.getName())。相反,JDBC的ResultSet和RowSet接口,仅仅提供了动态的、没有类型的数据接口(如rs.getString(“Name’’”。但是,单独的静态或者动态API都是不够的,两者都足必须的。静态API是简单易用应用开发者们需要的数据APl,但是在另外一些情况下,数据的静态Java接口既不可行也不是所想要的。比如,一些动态查询生成的结果数据的范围是不确定的,这种情况下,静态Java接口是不可行的。因此,对于一种统一的数据编程技术而言,需要同时无缝的支持静态和动态数据APIl删。最后,许多应用都天然需要一种离线数据访问模式。应用中读取一组数据,短时间内保留在本地,操作这些数据,然后将这些修改提交到数据源中。EntityEJB、JDO、Hibernate技术均为实时的数据处理技术,在数据处理的过程中保持和后端数据源的连接。可见,已有的数据技术和框架,无论是EJB、Hibernate或是Web服务本身都是从某一角度和层面上解决了问题,没有一个统一的比较全面的技术来解决问题。SDO就是在这样的一个数据编程面临的挑战背景下形成和发展的,实现了对异构数据源的统一访问,对静态和动态数据API的统一支持和离线编程模型的支持。它的根本目的就是要实现数据代码和业务代码的解耦。2.4.2体系架构分析服务数据对象是一种编程模型,有其自己的体系结构。本节将阐述服务数据对象的体系结构。SDO采用离线数据图的设计理念。数[](DataGraph)是一组树形或者图形结构的数据对象。离线的访问方式是指客户端从数据源提取并构建数据图,然后在应用中操作数据图并记录相应的操作,在动作结束后由数据访问服务(DataAccessService,18 硕l:学位论文第二章面向服务架构理论与技术DAS)[48】批量的将相应的改变反映回数据源。如XML文件DAS可以从XML文件中读取和存储数据图,JDBCDAS从关系数据库中读取和存储数据图。图2—7显示了SDO的架构图降¨,从图中可以看到客户端、数据图、DataAccessService、数据源(DataSource)之间的调用关系。图2-7SDO架构其中,SDOMetadata是SDO专门提供的统一的API来调用不同的DataAccessService,可以直接得到DataObject对象和DataGraph对象。SDO是语言中立的,因此可以被用于各种编程语言。在SDO中最核心的概念是DataGraph和DataObject。数据图对整个数据对象进行封装。任何一个数据对象都会存在一个属性集。对于每个属性,其对应于一个数据或是对应于一个数据对象,数据类型有String、int、double等类型。图2.8是详细的SDO的对象的关系类图。由关系类图知,SDO的基本概念有DataGraph、DataObject外,还有变更摘要(ChangeSummary)、属性(Property)、类型(Type)和顺序(Sequence)的概念。以JavaBean来类比DataObject,属性类似于JavaBean的属性名称;类型对应于JavaBean属性的类型,如String类型等;顺序(Sequence)用来保存属性的赋值顺序和一些非结构的数据。数据图(DataGraph)是一组属性结构数据对象的封装,是在各个组件之间传递的基本单元【42】。即数据图是一个完备的、自描述的、可操作的数据对象。每一个数据图包含唯一的一个根数据对象和变更摘要。一般来说,数据图的构建是通过数据源或是服务来实现的。当前的数据源有关系数据库、XML文件、EJB以及XML数据库等。19 硕士学位论文第二章面向服务架构理论与技术btaAccessService|DataGraph1》b刚咄ct∥。{/ChangeSummary◇木~Sequence图2-8SDO对象关系数据对象(DataObject)类似JavaBean的一个实例,它用来保存数据或者包含下级的数据对象,是整个SDO最核心的对象。每一个数据对象都有一个相应的类型定义。这一类型可以被看作是数据对象的元数据。每一个数据对象均有定义一系列的属性。这些属性可以是没有顺序,也可以定义在一个序列中。.此前提到SDO从某个角度而言和JavaBean类似,但是其也有与众不同的特性类型转换、多值属性、开放性属性、属性索引。数据对象的操作主要有两个方面:创建及删除,以及其属性的设置。可以用isSet(Property)来判断属性是否已经被设置,对于多值属性、单值属性其值的情况如表2—1所示。表2-1单值属性和多值属性变更摘要(ChangeSummary)用来保存数据对象的记录修改的历史,可以用来有效的更新后端数据源的数据记录。变更摘要有打开和关闭两种状态。当其功能被激活的时候,变更摘要所记录的信息包括从日志功能激活到停止的那个时间点,或者到读取摘要的那个时间点。变更摘要中所记录的一部分内容是数据对象原来的值,这些值可以通过getOldValues方法得到,其中的数据顺序是由具体实现决定的。根据操作的不同,原值记录的内容有所不同。删除操作时,记录被删除的数据对象及其全部属性;修改时,仅记录被改变的属性。这些过去值保存在以ChangeSummary.Setting作为接El的实例中。 硕I:学位论文第二章面向服务架构理论.‘j技术可以使用getOldSequence方法获取所记录的数据对象的序列。如果没有任何记录,则返回null。2.4.3与其它数据编程技术比较EJB、Hibernate编程技术是J2EE项目丌发中经常会用到的两种技术,在此将它们与服务数据对象编程技术比较,阐述服务数据对象编程的优势。(1)SDO和EJB技术对比。EnterpriseJavaBeans(EJB,企业级JavaBean)分为会话Bean(SessionBean),实体Bean(EntityBean)和消息驱动Bean(MessageDrivenBean)t钉1。EntityBean是域模型对象,用于实现O/R映射,负责将数据库表中记录映射为内存中的Entity对象。其核心是如何持久化数据,将数据对象映射到关系数据库,并将底层数据处理的细节屏蔽,让开发者可以直接获取数据。由此可见EJB是着眼于基于ORM的数据持久化技术。SDO着眼于数据本身、数据的模型和相关的操作,将数据抽象为适合业务逻辑使用的数据对象,并可以在数据对象和后端数据源之间进行转换。具体而言,它们之间的不同如表2.2所示。表2-2SDO和EJB比较(2)SDO与Hibernate技术对比。Hibernate是目前最流行的ORM框架,是面向对象开发中常用的数据持久层技术。它将SQL操作完全包装成对象化的操作,这种方式自动在对象和关系数据库表之间进行映射,非常的方便、优雅。这样,程序员不再面对各种SQL语句和ResultSet的处理。而且这种映射绑定可以使数据对象和后端关系数据之问形成一种松耦合的关系,关系模型的变化并不影响应用程序的逻辑,只是影响映射绑定的定义。最新的Hibernate版本不仅支持关系数据源,还包括XML数据源。Hibernate和EJB的实体Bean类似,主要解决对象一关系系映射问题,提供了一个轻量级引擎。SDO的RDBDAS同样致力于解决这样一个问题,但是SDO所包含的功能远大于这样一个范畴。可以采用Hibernate作为SDo的DAS。21 第_二章面向服务架构理论‘j技术2.5本章小结Web服务技术使用WSDL统一了服务接口的描述,使用SOAP统一了数据传输和交换格式。SCA实现了组件接口和传输协议的解耦。SDO封装了异构数据源的数据以及成为SCA元素之间数据交互的数据类型,实现了业务代码与数据代码的解藕。这样可以解决应用集成中紧密耦合的问题,是本文研究本章首先介绍了面向服务架构的概念及模型、基本特征和特点优势。接着提出对Web服务的理解,分析了Web服务技术。然后阐述了SCA规范及编程模型,比较了SCA与其它集成技术。最后,对服务数据对象编程的架构、数据对象、数据图等进行了分析,其本质是实现数据代码和业务代码的解耦,并对SDO和EJB、Hibernate技术进行了比较分析,阐述了SDO的优势。 硕上学位论文第三章面向服务架构的企业应用集成为解决企业中不同部门和系统之I’日J信息孤岛等问题,整合利用企业内部的遗留系统,企业应用集成已成为信息化发展的热点。在对企业应用集成技术的研究中,不应把注意力放在技术细节上,类似于如何解决异构平台,如何实现不同编程语言之间的通信,如何实现不同数据库平台的数据共享等问题,而是要跳出技术这一层面,站在业务层面对系统集成设计,只有这样才能买足当前企业应用系统的业务变化需求,才能构建更加敏捷、高效的lT系统。基于面向服务架构的企业应用集成遵循面向服务架构以服务为核心的原则,为业务为中心的系统集成提供了很好的解决方案。下面将对企业应用集成理论,基于面向服务架构的企业应用集成进行研究。Web服务、服务数据对象技术是面向服务架构的实现方式,在此,本章重点分析了基于这两种技术来实现基于面向服务架构的企业应用集成。3.1企业应用集成企业应用集成是近年来国内外研究的一个热点领域。随着市场竞争的不断加剧,企业拥有的IT系统不断增多,而系统之间相互进行数据或信息交换是大势所趋,这就引发了不同系统的集成问题。它是一种全新的战略企业解决方案,能融合企业的遗留应用,促使企业利用现有信息资源来快速提供新的产品和服务,从而使企业的业务管理资源和各个环节达到高效运作,最终促使企业效益的稳步提高。3.1.1企业应用集成概述在过去,应用程序被认为是与孤立的问题相对应的一个个解决方案。体系结构的设计并没有把它当作是整个企业内信息系统的一部分,这导致了过去的应用程序与其它应用程序协同工作的能力十分有限,更严重的是导致企业内部形成一个个“信息孤岛"。对此,企业从整体来考虑企业的信息化需求,根据实际情况,对各个应用系统进行总体规划,选择一个合适的集成平台,把企业的各个“信息孤岛’’有机的集成起来,这种解决方案不管是从实施难度,还是从实施成本、周期和技术上考虑都是切实可行的㈣。企业应用集成应运而生。企业应用集成是一个从企业内部开始,并快速发展起来的领域,形成这一趋势有多种影响因素【4引,不仅包括对客户关系管理(cRM)、供应链管理(scM)、企业资源计划(ERP)、数据仓库以及其它重要的内部系统之间无缝地共享和交换数据的需要;也包括由于因特网上的企业合并以及激烈的竞争所带来的商业需求的快速变化等,这些因素使 硕:.1:学位论文第三章面向服务粲构的企业应用集成企业应用集成备受关注。简单地说,企业应用集成是指将业务流程、应用软件、硬件和各种标准联合起来,在多个企业应用系统之间实现无缝集成,使其像一个整体一样进行业务处理和信息共享,使氽业的整个业务管理资源等各个环节达到协调运转效率优化,从而最终实现企业效益的提高。3.1.2企业应用集成层次每个企业都会有自己的一套集成解决方案,从而企业应用集成解决方案会呈现多种多样地形式。对要实施的企业应用集成而言,企业应用集成是分层次的。企业应用集成涉及到结构、硬件、软件以及流程等企业系统的各个层面。一般来说,企业信息系统(EmerpriseInformationSystem,EIS)由数据库、业务逻辑以及用户界面三个层次组成。因此,从EIS本身层次结构来划分,企业应用集成可以分为表示层集成、数据层集成和功能层集成三种类型。下面分析了这三种类型的集成,三种类型的集成表示层集成易于实现,但有很大的局限性;数据层集成比表示层集成灵活,能提供广泛的数据访问;功能层集成提供了最强的集成能力,解决问题的方法也最为灵活。(1)表示层集成。表示层集成是面向用户的整合,指用统一的标准界面代替原有系统的界面,新界面看起来好像是一个单一的应用系统,但实际上却可能调用几个遗留系统。表示层是一种原始但比较有效的集成方法,可以把用户界面作为公共集成点来集成不同的系统,实现与现有系统的业务逻辑或封装的应用(如ERP、CRM)进行集成。下图3.1给出了表示层集成的模型,在已有的两个不同软件的显示界面上,建立了公共的显示界面。浏览器是这种集成中常用的技术。表示层集成易于实现,但存在很大的局限性,集成只发生在显示界面层而不是发生在应用软件或数据的互联中。图3-1表示层集成模型 硕-L学位论文第三章面向服务架构的企业应用集成(2)数据层集成。数据层集成是指跳过显示界面与业务逻辑模块,直接进入应用软件的数据结构或数据库来创建新的集成,具体包括数据共享、数据转化、数据移植及数据复制等。这样的集成可能只需要简单访问软件所使用的数据库管理系统(DBMS),也可能需要与应用程序所管理的文件或用户数据库进行更加复杂的集成【钓】。数据层集成是现有企业应用集成解决方案的最普遍的一个形式。与表示层集成相比,它更加灵活,能提供更广泛的数据访问,允许用户访问完整的一套信息或其中_部分。数据集成一旦完成,可以被其它集成方案复用。而缺点在于几个方面,第一,不能实现信息的实时交换,只能进行批量的数据处理。第二,由于各个系统维护自己的数据,因此存在大量的冗余信息。第三,由于需要维护两套单独的系统,会增加长期成本。如图3.2所示,显示了数据层集成模型。图3-2数据层集成模型件(3)功能层集成。功能层集成是在业务逻辑层上完成集成的,可通过软件接口集成,现大多采用函数或方法集成。方法或函数的集成是一种客户端与服务器之间的请求/响应的交互。目前主要采用提供调用的应用程序接口(APIs)、远端过程调用(RPCs)、CORBA、Java远程方法调用(RMI)、分布式对象技术(DOT)、面向消息的中间件(MOM)以及Web服务等各种软件技术。面向函数和方法的集成一般来说是处于同步模式的,即基于客户(请求程序)和服务器(响应程序)间的请求响应交互机制一71。如图3.3所示,功能层集成比表示层集成和数据层集成更灵活,它不仅能解决前两种方法可解决的问题,还能解决更多难题。其实现方法与表示层集成和数据层集成不同,它通过访问1日显示机 硕l:学位论文第_三章面向服务架构的企业应用集成制的代码或以前用来获取数据的代码来集成。图3-3功能层集成模型功能层集成提供了最强的集成能力,解决问题的方法也最为灵活。但是,在有些情况下,某些软件的应用功能很难访问,就不能采用功能层集成;而且,由于需要在业务逻辑层进行集成,它的复杂度要远远大于数据层集成和表示层集成。3.2面向服务架构与企业应用集成企业应用集成是将过程、软件、标准和硬件联合起来,在两个或更多的系统之问实现无缝集成,使它们就像一个整体一样。集成的目标是无约束地连接分布的应用程序,并实现应用程序间的数据和功能的共享,这种共享是以不对应用程序本身做大的修改为前提条件的。即在不损失或损害相关性、一致性和完整性的情况下,完成应用程序间的集成。随着全球经济的一体化,敏捷的、不受限制的业务集成已经成为面向服务架构的目标。面向服务架构通过应用组件和传输协议的松散耦合,即服务的即时绑定,从而实现业务组件的虚拟化,形成一个虚拟的集成架构,这样使得服务集成不受任何限制,可以同时集成不同的组件以及集成遗留系统的各种应用,同时也可以随时变换这些服务组件。面向服务架构具备松散耦合、粗粒度服务、位置和传输协议透明的特点更好的说明了它很适合于做企业应用集成。一是松散耦合的三个方面服务之间、接口和实现之间、业务组件和传输协议之间的松散耦合;二是粗粒度服务比面向对象的编程API要大一 硕士学位论文第三章面向服务架构的企业应用集成些,更接近用户的实际操作;三是位置和传输协议透明保证服务组件位置发生变化也不必修改客户端的应用程序,同时保证服务组件的传输协议如何变化也不必对客户端调用程序的传输协议做改变。这样,面向服务架构可以基于现有的系统投资来发展,而不需要彻底重新创建系统。如果将丌发力量集中在创建服务,利用现有的技术,结合基于组件的方法来开发企业应用集成项目上,将获得许多方面的优判4引。将现有的资产封装成企业功能的服务,可以利用现有的资产;集成点是规范而不是实现,这提供了实现透明性,并将基础设施和实现发生的改变所带来的影响降到最低限度,更易于集成和管理复杂性;通过利用现有的组件和服务,可以减少完成软件开发所需的时间,从而提高上市速度;通过以松散耦合的方式使用和组合服务,达到降低成本、节约开支的目的。3.3面向服务架构的应用集成分析面向服务架构的应用集成即基于面向服务架构的企业应用集成。上面分析到功能层集成是在业务逻辑层上完成集成的,比表示层集成和数据层集成更灵活。基于面向服务架构的企业应用集成解决方案遵循功能集成的思想,以服务为中心,在IT系统架构设计时跳出技术层面,站在业务层面对IT系统集成设计。它提供了一个抽象的接口,通过这些接口,系统可以进行交互,而不是使用低层的协议和自定义的编程接口来规定系统如何与其它系统进行通讯。应用程序只需封装成服务,通过服务提供的接口,调用者不需知道服务的底层实现技术和其所在的具体位置,实现服务的调用。因而可以很好的解决企业应用集成的问题。Web服务、服务组件架构技术都是基于面向服务架构,通过屏蔽底层技术及其变更来提供业务逻辑,可以为不同类型、不同接口的组件提供了统一调用的方法,而不管所使用的是哪种具体编程语言以及运行平台,从而大大降低了应用程序集成的复杂性。但是,服务组件架构技术更好的发展了Web服务技术,它不但有服务组件模型,也提供了服务组装模型。一些w曲服务技术没有解决或者涉及到的问题在服务组件架构技术中有很好的实现机制。Web服务应用集成在创建数据、服务和流程模型时考虑不多,而它们是要被广泛重用于当前服务领域或不同服务领域的。各种传输协议不可以自由绑定,应用是通过传输层或中间APIs直接发送SOAP消息的,这为更换传输协议或中间件增添了困难。W曲服务没有涉及如何去构建W曲服务以及如何构建其它类型服务的问题。此外,服务的组合(servicecomposition)问题是面向服务架构中的一个基础又很重要的主题【49】。 硕f:学位论文第二章面向服务架构的企业心用集成3.3.1Web服务应用集成Web服务应用集成即基于Web服务的企业应用集成。在分析Web服务是如何来实现企业应用集成之前,在此先对Web服务是如何使用其实现技术来工作予以阐述。当前,Web服务技术是面向服务架构的一种主流实现方式,后者是概念模式,面向商业应用而前者则是实现模式。Web服务提供了一种分布式的计算技术【50j,用于在冈特网或者企业内部网上通过使用标准的XML协议和信息格式来展现商业应用服务。使用标准的XML协议,可使得Web服务在平台、语言和发布者之间能够互相独立。通过开放的因特网标准WSDL、UDDI、SOAP和BPEL等,Web服务消除了现存解决方案f如CORBA和DCOM)中的互用性问题。图3-4阐明了这些技术的:[作过程。图3-4Web服务工作流程境根据W曲服务工作流程图,下面对其工作过程予以分析。服务提供者通过服务注册中心发布自己的We;b服务,以供服务请求者查找和调用,服务请求者(Java、VB等应用程序)通过服务注册中心查找到Web服务描述文件,服务注册中心授权给服务请求者,继而通过WSDL描述文档创建相应的SOAP请求消息。Web服务放在具体的可执行环境(J2EE、COILBA、JMS)中,服务描述与可执行环境通过一个映射层相分离,映射层通常以代理(Proxy)或桩(Stub)的形式实现;SOAP请求通过H订P发送给可执行环境。Web服务在完成服务请求后,将SOAP返回消息通过HTTP传回请求者,服务请求者再根据WSDL文档将SOAP返回消息解析成自己能够理解的内容。W曲服务实际上一个应用程序,它向外界提供~个能够通过Web进行调用的API,即服务使用者能够用编程的方法通过Web来调用该应用程序。W曲服务的这种技术特性给 硕上学位论文第三章面向服务架构的企业应用集成企业应用集成带来了新的集成模式。在这种模式中,开发人员只需将需要复用的方法和业务功能构建为Web服务,然后使用相应的工具发布这些W曲服务,且这些服务可以得到统一的管理维护。不管这些服务是用什么工具、什么语言写出来的,只要使用SOAP协议通过HTTP来凋用它即可。这样,客户端应用能够以标准的方式、透明的调用、以及重新组装所提供的服务,来达到集成的目的,即基于w曲服务的企业应用集成原理。如图3—5所示,设计了一种基于w曲服务的企业应用集成架构,该架构将各种企业信息系统(ERP,SCM,CRM等)通过Web服务被松散地集成在一起。当服务请求者需要调用某个服务时,它通过内部应用程序使用UDDI注册中心提供的目录去查找该服务,通过WSDL得到如何凋用该服务的信息;然后,根据这些信息到soAP服务器中去调用服务提供者发布的服务,在这罩应用服务器扮演者服务提供者的角色。一旦服务请求者从UDDI注册中心得到调用所需服务的信息,则通信就在服务请求者和服务提供者之间直接进行【511,而无需经过服务代理。图3-5基于Web/l艮务的EAI框架在这里,Web服务适配器是一个连接到后端服务器的Java应用程序,对于每个SoAP服务请求,它都去调用一个后端应用。适配器设计模式,是个结构型模式,有适配者(adapter)和被适配者(adaptee)。在Java应用开发中,经常使用Java思想的组合和继承机制来实现这种模式。在实际的使用中,Web服务有两种调用方式,一是单向的调用模式,服务请求者调用服务提供者,二是双向的“服务提供者+服务请求者"调用模式,即两者之间相互调用。对于这两种调用模式,分别在此对适配器的设计给出解决方案。图3—6所示类图展示了单向调用模式时适配器的实现结构。 硕}?学位论文第三章面向服务架构的企业心用集成IAdapter图3-6单向模式适配器实现如图中所示,该方案在服务请求者一方添加对服务提供者的适配器,这样就可以通过适配器实现与服务提供者的交互。对于双向的调用模式,解决方案是在两个服务都要提供针对另一方的适配器。如图3.7类图所示。图3-7双向调用适配器实现通过这种适配器模式,为进行服务连接提供了一种标准化的机制,各个不同应用可以通过它进行调用。在这种集成技术中,集成的对象是一个个的Web服务或者是Web服务的业务处理。SOA的核心实质是实现服务和技术的完全分离,从而在最大程度上实现服务的重组和集成,以达到可重用性的目的。Web服务是实现SOA的具体实现方式,成为新一代面向服务的应用系统构建和应用系统集成的基础设施。目前基于Web服务的企业应用集成成为广泛使用的集成解决方案,已经应用于企业软件开发中。3.3.2Wob服务应用集成的优点传统的企业应用集成是一种紧耦合的集成模式,比较适用于那些对性能要求比较高的、需要多种层次集成的应用系统集成。而Web服务能够以一种松散耦合的Web服务 硕l:学位论文第二三章面向服务架构的企业应用集成捆绑集合形式快速、低代价地开发、部署、发现和动态绑定应用,比较适用于那些需要更大的灵活性、变动频繁的应用系统集成。结合传统的企业应用集成方案(CORBA、DCOM),上节中所设计的基于Web服务的企业应用应用集成架构有以下优点:(1)统一接口。利用w曲服务对应用系统接口进行统一封装,都采用WSDL统一描述的标准接口,构建独立于平台、组件模型和编程语言的系统集成,可跨平台与任何系统实现无缝连接。(2)松散耦合的集成机制。W曲服务技术为集成双方提供了一种松散耦合的机制,任何需求方只需理解一种通用的对象接口就可以集成并调用现有的因特网上的W曲服务,而无需考虑w曲服务的内部实现机制、操作平台、开发语言等细节。同时,即使在往后的运行过程中,当Web服务产生了接口上或是功能上的更改,集成调用方也可以通过W曲服务的描述性文档,及时地发现并适应这样的更改。(3)信息发现机制。Web服务的面向服务架构中的UDDI注册中心,以w曲服务的方式存放所有商业实体的信息和交互参数,可以发现并且集成新的商业合作伙伴及其提供的新的W曲服务。(4)实现跨防火墙通信。w曲服务所使用的SOAP协议是一个松散的远程访问协议,为分布式环境中使用XML对等地交换结构化的和类型化的信息提供了一个简单的、轻量级访问机制。SOAP采用的是HTTP传输,这样就不会受防火墙和代理服务器的限制。3.3.3服务组件架构应用集成服务组件架构(SCA)应用集成即基于服务组件架构的企业应用集成,本节将对其集成的两个方面以及集成优势进行分析。Web服务使用WSDL统一了服务接口的描述,使用SOAP统一了数据传输和交换格式,使得基于Web服务的企业应用集成取得了巨大了成功,但Web服务在企业应用集成中仍存在着一些问题,如传输协议不能自由绑定、服务组装等问题。SCA技术在这些方面有其自己的解决机制。SCA是一个用于构建面向服务架构应用和解决方案的编程模型,其基本思想是业务功能总是由一系列的服务组成的,这些服务装配在一起就构成了能够满足一定商业需求的应用和解决方案。它扩展了Web服务集成技术,因为不但提出了如何构建单个服务,而且还提供了服务的组装模型,而SCA的接口和绑定等规范使集成技术不再限于Web服务的WSDL和SOAP。连线和提升是实现SCA应用集成的机制,借助SCA服务组件和服务模块,实现以业务功能定义的服务,而没有使程序员面对传统集成中间件编程的复杂性,能迅速地把个体服务组装成适应业务流程的系统,并通过对安全性、事务和可靠消息传递之类的特性定义了声明式策略,可以控制集成方案的各个方面,从而达到解决业务系统整合的目的。因此,SCA是实现面向服务架构的最好方式。SCA服务模块强制地将服务的接口和服务的绑定完全分离,服务就是业务的服务,3l 硕:|:学位论文第三章面向服务架构的企业应用集成而绑定则是服务的外在表现和通信协议,和服本身的逻辑是没有交叉的【24l,具体来说,一个模块可以暴露出同一个接口的多种绑定形式,这就可以被不同的业务环境集成。通过Service和Reference问的连线来实现SCA模块内组件的集成。利用组件的Reference调用其它组件的Service,此外,SCA组件的Reference和Service可以提升(Promote)为模块对应的的Service和Reference,从而通过模块的Service和Reference实现模块之间的集成。下面就SCA应用集成从两个方面来加以分析。。(1)服务组件之间的集成分析。服务组件之间的集成即模块内部服务组件之间的集成,在此引入了入口点(EntryPoint)和外部服务(ExternalService)两个概念,模块外部通过EntryPoint调用模块内部组件的服务,而模块内部组件可以通过ExternalService引用模块外部提供的服务。两者均是通过绑定(binding)来实现与外界进行信息交互的。绑定若是用在服务里,表示SCA提供某种类型的服务(Export,导出);绑定若是用在引用里,表示SCA使用某种类型的服务(Import,导入),导入和导出是模块中的两个特殊的端点。因此,模块内部组件的集成实际上是一个从导出(Expoft)到-导,K(Import)的顺序过程。如图3.8所示SCA模块内部组件集成。Properties,一一7/,7/,Compositef1,,t、Property—t—l/setting㈠i。一卫ntryPoi,n3e▲:i>组件A三薹!爹▲≥一>组件B,⋯、7|}{}.iBinding绑定一WebService—SCABinding—JCA—JMSTExportTImportExport图3-8SCA模块内部组件集成≯≯零i{mmIote}{{f‘}Binding绑定叫r,‘.丫『一WebServiceImport6一SCABinding’一JCAExport—JMs由图中所示,模块有两个组件A、B,按照导出到导入的路线顺序完成。组件A通过Reference引用组件B,然后通过SCA的内部机制wire实现把Reference连接到组件B的服务上,连线使用服务的URI指明引用要调用的服务接口,数据也通过引用进行传 硕士学位论文第三章面向服务架构的企业应用集成递,这样就实现了组件中服务的集成。(2)模块之间的集成分析。模块之问的集成即SCA域中服务模块之问的集成。一个SCA域,即服务子系统。它由多个服务组成,这些服务提供了由某个组织进行控制的一组业务功能。比如一个公司的财务部门对应的SCA域涵盖了所有财务相关的功能,这个域可能由两个模块构成,比如一个用来处理人事档案,另一个用来处理考勤。一个SCA域可能是整个公司,也可能是公司内部的一个部门。在一个比较大的应用项目里面,不仅要开发一个模块,可能需要多个模块以及模块之间的交互。服务模块之间通过两种形式来集成,一是通过SCA绑定来实现模块之间的交互。在SCA运行环境下,有两种SCA绑定的机制。若是服务和引用在同一个JVM环境下,则通过内存复制机制(i11.memorycopymechanism)实现;若是服务和引用分布在通过消息机制连接的两个节点上,则通过消息机制来实现。二是将一个服务模块作为另一个服务模块的组件实现。如图3-9所示SCA模块之间的集成。通过模块的集成,集成了较大粒度的服务,实现了更高层次的企业应用集成。图3-9SCA模块间的集成该域由CompositeX、CompositeY、CompositeA、CompositeB四个模块逻辑组合而成,其中CompositeX含有两个组件,分别为组件A和组件B,是通过连线来组装的,即模块内部组件的集成。CompositeX、CompositeY的交互通过SCABinding来实现。对外部使用者来讲,只有模块提供的服务(Services)和它对其它服务的弓lm(References)33 硕l:学位论文第二三章面向服务架构的企业腑用集成才是可见的,模块可以用作组件的实现也可以作为一个独立的部署堆元来使用。可见,CompositeA、CompositeB正是如此。通过SCA进行企业应用集成的有其巨大的优势。首先,服务的调用和服务的实现完全分离,服务的调用者只需使用服务提供者提供的服务接口,不需知道服务所在的组件或模块的内部细节,不管所使用的是哪种具体编程语言以及运行平台,从而大大降低了应用程序集成的复杂性。其次,采用SCA架构不需要花费太大的代价就能实现企业现有遗留系统之间的集成,SCA服务组件和服务模块是SCA应用的构建单元,服务组件和服务模块可以以不同的组合方式构成不同的应用,而既有的非SCA系统可以通过SCA组件实现的方式很方便地加入到SCA系统【52J。最后,SCA应用集成有着强大的灵活性,随需控制各个层面的粒度和服务。组件为模块提供服务,模块为服务子系统提供服务。这样,每一个层次都比下一级的粒度小或者相同。3.4本章小结本章首先讨论了企业应用集成的相关理论,通过对企业应用集成层次的分析,指出功能层集成的优势,其核心在于业务上的集成并对面向服务架构与企业应用集成的关系进行分析,阐述了服务组件架构特别地适合于企业应用集成。然后,在功能层集成思想下,对基于面向服务架构的企业应用集成进行研究,探讨了使用Web服务技术来实现基于面向服务架构的企业应用集成,设计了一个基于Web服务的企业应用集成架构并分析了Web服务应用集成的优点;然后,分析了基于服务组件架构的企业应用集成,阐述了使用服务组件架构技术来实现基于面向服务架构的企业应用集成的优势。 硕L学位论文第四章卣向服务架构的集成架构设计第四章面向服务架构的集成架构设计本章是在前面几章对面向服务架构模型,Web服务、服务组件架构、服务数据对象编程技术以及面向服务架构的企业应用集成研究分析的基础上,提出了一个基于面向服务架构的企业应用集成解决新方案。该方案基于服务组件架构、服务数据对象和Web服务技术来设计集成架构,简称SSWSOA架构。此外,本章对架构及每层中的一些问题、技术和策略进行了深入的研究与分析。该架构体现了“把软件作为服务”的面向服务架构思想,为企业应用集成提供了理论和实践的新思路,期望能对整个企业的管理、资源整合带来实质性的提升。4.1设计目标面向服务架构是一种以服务为导向的架构,它将应用程序的不同功能单元,通过这些服务之l、日J定义良好的接口和契约联系起来,使得构建在各种系统中的服务可以以一种统一和通用的方式进行交互,本架构的设计目的就是要实现服务组件和传输协议的分离,业务代码与数据代码的解耦,为应用的大规模集成打下基础。主要完成三个方面的目标。(1)一个目的是这种架构不需要花费太大的代价就能集成现有的系统。(2)一个目的是这个架构能够创建出一种新的模式,这种模式能够组建与传输协议的绑定达到一种松散耦合,服务组件可以自由选择传输协议,从而达到服务组件的最大可重用性。(3)另一个目的是提供一种独特的数据编程模型供应用程序来保存信息以及提供一个统一的数据访问,实现业务处理和信息源之间的松散耦合。4.2集成架构解决方案模型面向服务架构是一个完整的软件系统构建体系,包括运行环境、编程模型、架构风格和相关的方法论等。其核心是服务,并涵盖服务的整个生命周期,建模一开发一装配一运行一管理。面向服务架构的核心理念是业务驱动,采用松耦合的、灵活的体系架构来满足随需应变的业务需求。它是对现有体系结构的继承和发展,较好的解决了面向对象和面向组件分析与设计方法无法解决可重用和可维护性的问题,并消除了不同协议和软硬件平台带来的整合问题。图4—1给出了一个基于面向服务架构的集成架构解决方案模型视图,它与具体的技术实现是无关的,是一个逻辑视图。由图可见,该集成架构解决方案模型是一个分层的结构,从最底层的功能性服务,35 硕I:学位论文第pq章面向服务架构的集成絮构设计到原子服务和服务构件,到顶层的业务流程服务,目的是最大限度地封装不同的服务,从而达到复用的目的。无论哪一个层次,其核心都是服务,一个复杂的服务组件是由不同的原子服务组件组成,用于提供业务流程所需的功能。这样,企业应用集成变得得心应手。无论是在一个垂直系统内部,还是跨部门的整合,甚至是跨企业的行业整合。既可以重用定义好的服务,也可以是新开发的业务功能。消费者PortletsfWSRP。/\业务流程,//乏X;■、、\业务状态机垆≠/娄雾ff’≮兰9到弋<竺#二/,|盅—J乌占^芬一-:服务厂刊∈≥卿(粮oo白谗简单和复杂服务L1岛∞滁l苍l服务组件flklI,;≯/’‘运营系统打包应用定制应用面向对象应用南图4-1集成架构解决方案模型视图此集成架构解决方案充分利用了面向服务的思想,从底层开始分别为运营系统层、服务组件层、服务层、业务过程层、消费者层。此外集成层、Qos层、信息架构层、治理层作用于整个集成架构。下面对模型视图中的每层予以阐述。运营系统层,包含了当前IT环境中存在的运营系统,支持着业务活动。包括了所有定制的应用程序、打包的应用程序、遗留系统、事物处理系统和各种数据库。服务组件层,此层中的组件满足了服务层中的服务所定义的契约。一个服务组件可以实现一个或多个服务。服务层,该层包含了所有在企业服务组合中定义的服务,服务由语法和语义信息组成。业务过程层,该层描述了业务的编排、执行的顺序等。业务过程是各种活动的lT表现形式。在企业中,这些活动相互协作,实现特定层面的业务功能。此层代表了松散耦合的服务聚合起来的过程,使用了服务层中提供的服务。消费者层,此层描述了不同的渠道,通过这些渠道rr的功能得以交付。其目标是 硕.1j学位论文第阴章面向服务架构的集成架构设计对访问协议和数据格式进行标准化,继而可以为业务过程和底层暴露的服务快速地创建前端。集成层,该层为服务请求者提供了定位服务提供者和发起服务调用的功能。通过中介、路由,以及数据和协议转换等三种基本能力,建立起一个服务生念系统,服务在这个生态系统中可以作为业务过程的一部分,实现相互通信。Qos层,此层关注实现和管理非功能性需求。信息架构层,确保面向服务架构中中需要的数据和信息的正确形式表示。每个特定水平层的数据结构和信息架构表示形式都是该层的职责。治理层,确保正确管理服务的完整生命周期。其中,该集成架构解决方案的左边郑分为架构的功能性方面,而其右边部分为架构的服务质量方面。4.3集成架构总体设计与分析根据基于面向服务服务架构的企业应用集成研究,结合基于面向服务架构的集成架构解决方案模型视图以及对Web服务技术、服务组件架构和服务数据对象编程技术的分析,在此设计了一个基于服务组件架构、服务数据对象和Web服务技术的企业应用集成架构(简称SSWSOA)。如图4.2所示,该集成架构通过具体的技术实现了基于面向服务架构的集成架构解决方案模型视图。服务调用层JaVa、c++、Ajax⋯l外部应用程序前端应用消息和代理服务层(E墨唧IWeb服务?WSDLg}n冈l!r/厂型型一。幛.?服务层生Compr————————1厂——]r————。’—1}—‘一HShDO一暇“I、上LJ—bD止u一一℃—●、l厂’、涩泓甲P聃L野甲申森部壤Pr盅oteP—otd厂上]组件\,一千牟。▲’埋掣也叫哩到黼溯层甲@@匡舱S)⋯层自囱国国图4-2SSWSOA集成架构 硕I:学位论文第【,I{章面向服务架构的集成架构设计通过使用Web服务技术描述服务,服务组件架构技术将服务集成,实现遗留系统中应用程序的集成;通过服务数据对象技术实现了对异构数据源的统一访问,达到了对数据的集成,这些都是集成性的很好体现。该架构以分层的方式来进行构建,从上到下依次为:服务调用层、消息和代理服务层、服务层、数据访问层和数据源层。对于安全、可靠性消息、事务管理等非业务功能的基础设施,面向服务架构运行环境会提供支持,进行面向服务架构构建和组装时只需定义相应的策略(Policy)即可,而策略完全可以兼容于现有的Web服务策略(ws—Policy),使已有的Web服务IT资产可以充分利用。服务数据对象贯穿于整个体系架构中,即除了数据服务层屏蔽数据源层的技术细节外,其它层与层之间或同一层服务组件fbj的交互数据单元可以部分或全部为服务数据对象。服务层使用面向服务架构编程模型,把己有或新开发的系统集成起来。4.3.1架构分析架构的设计遵循面向服务架构模型,数据访问层和服务层相当于面向服务架构模型的服务提供者,这两层是本文研究的重点,消息和代理服务层相当于服务代理者,服务调用层相当于服务请求者。这种分层与服务提供者和请求者之间的划分只是相对的。由图清晰的看出,设计的集成架构采用的集成技术主要有服务组件架构、服务数据对象以及Web服务技术。各层实现的丰要功能阐述如下:(1)服务调用层。即面向服务架构的服务请求者,访问服务层中的各种服务。服务请求者对服务组件架构构建的服务进行调用,在企业应用集成过程中,将业务逻辑中最容易变化的部分剥离出来,采用专门的服务组件实现,则可以很灵活的配置业务规则。服务请求者可以是前端应用、外部应用程序。从2.2.3小节中SOAP的分析,可以知道Web服务有不针对某个平台的特点,可以运行于多种平台上。因此,我们可以用不同的编程语言编写的客户端应用程序来调用Web服务。(2)消息和代理服务层。这一层是基础架构中的整合服务层,包括消息传输、动态路由、目录服务及数据转换等服务,并可支持BPEL实现,它是客户机应用程序和服务之间进行访问的有力保障。对于服务请求者来说Web服务的实现框架、实现技术、数据来源等都是透明的,服务请求者只关心Web服务的WSDL。WSDL文档包含了Web服务所有相关内容(如服务的传输方式、服务方法接口、服务路径等),BPEL文档中标明了每个服的使用顺序。该层中还有能理解WS.BPEL过程描述文档的工作流引擎,该引擎负责按顺序或必要的逻辑来使用服务153J。(3)服务层。服务层使用的主要技术是服务组件架构技术,利用服务组件架构来集成已有的系统或是新开发的系统。通过服务组件架构可以把任何应用程序封装成SCA组件,封装的应用程序可以是已存在的,也可以是新开发的。然后,将组件进行组装;通过服务组件架构的基础设施可以引用外界提供的非SCA服务。安全、事务、可靠性38 硕上学位论文第网誊面向服务架构的集成架构殴计消息等其基础设施环境,可以通过定义于独立于实现组件的策略(Policies)来进行设置,这些属性都配置在配置文件中。服务数据对象作为模块内部以及模块与外部交互的数据传输格式。(4)数据访问层。数据访问层中包含了对数据源层的数据访问的逻辑,将业务逻辑与数据源分开。数据访问服务(DataAccessService,DAS)屏蔽了底层异构数据源的差异性,向服务组件层提供SDO数据服务,不仅使应用程序无需依赖于数据库,而且还使应用程序独立于整个持久化技术,实现了服务层与不同类型数据源的交互。当前还没有一个数据访问服务的相关规范出台,典型的DAS有LDAPDAS、Tuscany关系数据库(RDBDAS)、XMLDAS。(5)数据源层。数据源层中提供了当前广泛使用的数据源形式。包括DataBase系统、XML文件系统、LDAP数据库以及其它外部数据资源。数据访问层发送指令给数据源层,然后对数据库进行操作和处理。从数据源中加载数据到数据图,数据修改后将数据图存回到后端数据源。更详细的处理过程将会在4.3.5小节进行分析。每层都有一些相关的设计策略、问题以及实现技术等,各层相互配合,共同完成仓业应用集成。下面将就该架构中一些策略、问题以及技术进行一些比较详细的论述。4.3.2SCA组件调用SCA向我们提供一个以与技术无关的方式创建接口、实现和引用的组件模型,这样的技术特点,使我们可以将组件绑定到所选择的某一技术的特定实现。图4.3显示了SCA组件的调用。基于WSDL的接口规范是SCA服务组件的主要形式,此外SCA的部分服务组件也提供了Java接口。因此,使用服务组件的客户端可以选择使用Java接口或WSDL接口来调用组件。Implementation组件实现-Java——BPEL——Composite图4-3SCA组件调用39 硕J二学位论文第pq章面向服务架构的集成架构设计对于组件的调用,SCA编程模式提供了三种方式的异步调用,单向调用方式、延迟响应方式和请求回调方式。需要注意的是SCA也支持组件的同步调用,常见的方法调用都是同步调用,这种调用方式是一种阻塞式的调用方式,即客户端(主调用方)代码一直阻塞等待直到被服务端(被调用方)返回为止。这种调用方式相对比较直观,也是大部分编程语言直接支持的一种调用方式。但是,如果面对是基于粗粒度的服务组件,面对的是一些需要比较长时间彳’能有响应的应用场景,就需要一种非阻塞式调用方式,即异步调用方式。(1)单向调用方式。这种方式要求不返回调用的结果,其调用方式为单向的。即客户端发出请求后就不再关心服务端的情况,包括是否执行成功,返回值等。(2)延迟响应方式。这种方式是指客户端在发出凋用请求之后继续执行,但是经过一段时间之后,客户端再调用相应的方法去检索返凹结果,并通过参数指定如何根据调用的结果而执行进一步动作。由于是异步调用方式,因此,在第一次发出调用请求的时候,服务器端需要返回一个称为票据(Ticket)的对象。这个对象会作为第二次发出检索结果请求时的一个参数。显然,这个Ticket对象的作用与Web编程的SessionlD非常类似。(3)请求回调方式。这种方式与延迟响应方式类似,只是服务器端结果的返回是由服务器端通过回调方式触发的,并不像延迟响应方式那样由客户端再次发送请求信息到服务端。这种方式是异步的,服务请求者是无法知道服务提供者何时调用接口,服务提供者能够在被激活后任何时刻回调接口。4.3.3服务合成与匹配消息和代理服务层是基础架构中的整合服务层,提供一些消息传输、目录服务及数据转换等服务。为此,本节针对服务的合成与匹配问题进行分析,为服务合成与匹配提供解决方案。当前,BPEL为广泛采用的服务合成描述语言,提供了一个抽象的模型和语法来表达抽象的、可执行的商业流程。BPEL中的一个流程是一些活动的合成,这些活动执行特定的功能,流程中规定了活动的执行顺序囝】。BPEL是基于工作流的服务合成方法的语言,能够让Web服务之间按照一定逻辑顺序在适当的时候通信,用来描述构成服务合成的服务之间的逻辑关系。此外,基于语义的合成方法也是服务合成方式之一,DAML-S为其提供了语言支持,它是从语义Web上发展起来的,用于描述Web服务的DAML+OIL本体语言。服务合成主要研究如何将多个服务按照一定方式组合起来共同满足用户需求。服务合成强调在Web服务之间,为了完成一项特定工作而相互协作,将具有一定逻辑顺序的服务按照某种规则合成为一个新服务,这个新服务的组成成员问不仅可以相互通信,更为重要的是,它们是按照某种逻辑合成的。在此,研究一种基于Mediator中间件的服务合成方法,是一种语义合成的方法。Mediator是一个封装了一系列对象之间的交互的中间件,自己并不存储数据,只是利用 硕}:学位论文第四章面向服务架构的集成架构设计Wrapperl55】提供对各种数据源的一种一致访问方法,把查询请求转化成一个或者多个相对于数据源的查询,然后把从数据源返回的结果进行综合合成并返回给客户,并通过数据和本体来解决其中的语义冲突问题,从而为异构、自治的数据集成提供方便。在服务合成之前,首先对Web服务进行属性绑定建模,即将一个Web服务看作一个类,其输入l,输出。和约束C作为类的属性,形式为s(I,o,c)。如Web服务HongKongStock(CompanylD,HongKong,GivenTime,Price,Info),通过输入公司代码、香港证券交易所和给定的时刻,返回该公司在香港证券交易所的股票价格和股票其它的信息。该服务的服务建模后的模型如图4—4所示,在此把服务的输入常量HongKong作为该类的一个约束,并添加一个输入属性Stock_Place。图4-4服务模型其次,在对Web服务建模之后,服务模型之间以及领域模型之间的关系通过属性级本体来关联,以消除合成过程中的语义冲突。图4.5所示,在该属性级本体中,它的最顶层是基本的数据类型,中『自J层是领域模型属性,底层是Web服务模型属性。StocklnfoCompanylnfoC0untryInf0CompanyID/’Info图4-5属性级本体结构然后,进行服务的合成步骤。在此服务合成的思想是根据用户的输入来推导各种41沱.\渺./响\\风 硕l:学位论文第叫章面向服务架构的集成架构设计Web服务输出,把推导中用到的Web服务和Web服务产生的输出分别加到Web服务集合和Web服务输出集合中,同时把每次Web服务产生的输出加到Web服务输入集合中,这样一直下去,直到用户所要求的查询结果完全包含在Web服务输出中。基于Mediator的服务合成算法描述如下:Uh用户的输入;UO:用户要求的输出(合成方案);Ah可得的Web服务输入集合;AS:可得的W曲服务集合;AO:可得的Web服务输出集合;WSComposing(Ul,uo){A1=痧,AO=痧,AS=妒,A1=U/Repeat对于每一个s(1,0,C),if(I量AI)或(ScAS)then{AI+=OAO+--OAS+=S)Util(UO互A0))此外服务的匹配也是一个研究热点问题之一。匹配就是比较服务请求者需要的Web服务特征和服务注册中心中可供查找的Web服务,计算它们的相似程度。传统的服务匹配算法对服务进行匹配,仅限于服务注册中心与服务请求进行直接匹配,如果服务注册中心中不存在能够直接匹配的单个服务即返回匹配失败,而这样未能充分利用服务注册中心的众多服务的协作【姗。本节提出的优化服务组合匹配算法假定服务注册中心存在满足服务请求者的全部输入条件和输出条件,其思想是引入服务组合领域的技术进行组合匹配以最大化利用服务注册中心中的服务,发掘能相互协作共同满足查询请求的服务集合。在此引入一个重要的概念:服务功能信息IOPE。它指的是服务的Input、Output、Precondition和Effect。Input指服务的输入,Output指服务的输出,它们指明了与服务交互过程中的数据;Precondition和Effect是指服务的前提条件和效果,即服务执行前应该满足的约束条件和服务执行后实际产生的效果,指明了状态的改变。本文的算法设计中,从服务功能信息的这几个属性方面来进行服务匹配。以功能描述中的Output属性为例,当Output为多个时按图4-6流程进行匹配。42 硕I:学位论文第四章面向服务架构的集成架构设计图4-6优化服务匹配算法流程图143 硕f:学位论文第|fII章面向服务架构的集成架构设计当对单个Output进行匹配时嵌套调用图4—7所示流程。图4-7优化服务匹配算法流程图2经该算法得到的匹配结果相互问无依赖关系,只需将匹配服务结果集中的所有服务提交给服务执行引擎并执行便可得到结果。Output的分解是通过领域本体中的定义来完成的,将大的目标分解为小的目标,综合各个子目标满足总目标。4.3.4服务组件架构设计理念及策略服务组件架构为该集成架构服务层中的核心技术,使用它来集成已有的应用或是新开发的应用;安全、事务、可靠性消息等基础设施环境,可以通过服务组件架构的策略来提供,其重要性不言而喻。在此,对服务组件架构的设计理念以及服务组件架构策略框架进行分析。(1)服务组件架构设计理念。其设计理念比较深奥,涉及开放式的结构思想,性能、安全方面的考虑等。为更深入的理解服务组件架构编程,在此剖析其插件式设计思想。对于当前流行的工具Eclipse、企业服务总线等都使用了插件式的设计思想。在Web应用集成中,UDDI注册机制同样体现了该思想,所有的Web服务都可以动态的插拔。插件式即为可插拔的软件架构,体现了面向服务架构中松散耦合的特点。插拔式的设计模 硕l:学位论文第pq章面向服务架构的集成架构设计式给已有的模式提供了新的发展思路和解决方案。在服务组件架构设计中很好的发展了这种设计模式。静态类图4—8所示,展示了注册结构的静态分析,其类似于注册中心功能的扩展点(实现接口的类)注册类,是服务组件架构设计中的基本形式。图4-8注册结构静态类图类org.印aChe.tuscany.sea.core.DefaultExtensionPointRegistry的getExtensionPoint方法用来实现从注册中心获取需要的对象,程序逻辑片段如下所示:ListclassNames=ServiceConfigurationUtil.getServiceClassNames(classLoader,extensionPointType.getName0);if(!classNames.isEmptyO){ClassextensionPointClass=Class.forName(classNames.iterator0.next(),true,classLoader);Constructorconstructor=extensionPointClass.getConstructor0;ObjectextensionPoint=eonstructor.newlnstance0;//实例化)addExtensionPoint(extensionPoint);//存储returnextensionPointType.east(extensionPoint);//类型转换其过程用流程图4-9分析。从本质上讲,ExtensionPointRegistry类似于Collection集合,其功能包括基本的添加、删除、查找操作。在此使用HashMap,Object>来实现。可以认为DefaultExtensionPointRegistry为HashMap的特殊封装,其中,Object>是非常重要的。META.INF/services下的文件包含着若干个插件板,插-孑LP,IJ为实现类的名称,对于每个插件板的插件孔可以预先调配。通过这种机制,可以方便的实现对插件板的修改,满足系统需求的变化。45 硕j:学位论文第四章面向服务粲构的集成架构设计调用getExtensionPoint上根据Class类:7l{!从HashMap中取对象extensionPoints.get(extensionPointType)否<逗鎏>弋竺竺≥吵//上是调.}}jServiceConfigurationUti1.getServiceClassNames土从META—INFO/services‘卜.面找到与参数类型名称的同名文件,从文件中按行读取数据,并把每行数据写入一个L{st的子类型。服务策略选择递归算法描述如下t输入:目标元素的一组意向输出:与目标元素的意向匹配的policySets步骤1:计算应用到目标元素的所需和意向集合。从元素的@requires属性定义的意向列表开始,为每一个父元素添加在@requires属性中找到的意向。如果该元素是一个绑定的实例,并且它的父元素己连接,那么当连接另一段的所需意向可获得时,加入到意图集合中。本步骤完成后,所需意向的集合现在包含了所有必需提供给目标元素的意向。步骤2:清除所有来自所需意向集合直接支持的意向,剩余的所需意向由policySets提供。步骤3:计算被应用到目标元素的显式定义的policySets列表。从元素的@policySets属性定义的policySets列表开始,显式定义的policySets包含来自父元素的a@policySets属性的值。如果这些显式列出的policySets没有被应用到目标元素(绑定或实现),则该composite是无效的。步骤4:清除所有由指定policySets提供的所需意向f如来自每个policySets各自的@provides属性的所有意向)。如果在SCA域中能够找到附加匹配的policySets,则剩余的所需意向由找到的policySets提供。步骤5:选择附加policySet的最小集合,来匹配剩余的所需意向。当所需意向确切地匹配提供的意向,提供的意向是所需意向的上级或者提供的意向比所需意向更加具有47 硕f:学位论文资格时,policySet和所需意向匹配成功。如果不存在覆盖所需意向的policySets集合,那么配置是无效的。4.3.5数据访问服务数据访问服务(DAS)是一种组件,它提供了某些方法,通过这些方法来组装数据图,数据图中数据修改后,也负责将更改的数据图保存到数据源。一般情况下,每种数据访问服务类型对应于某种数据源和技术。当前流行的数据源和技术主要有XML、JMS、JCA、JDBC等。数据访问服务总是以同一种格式(DataGraph,数据图1返同结果信息,其封装了实际的数据存储信息并在SDO应用程序和企业信息系统之问提供了一层数据提取的功能。数据访问服务虽不属于服务数据对象编程规范的范畴,但是在应用中集成了不同数据类型和异构数据源。那么,通过数据访问服务加载的SDO数据图包含了异构数据源以及不同数据类型的信息。图4-10分析了SDO客户机通过数据访l’uJ服务与数据库交互的过程。从顺序图中可总结出数据访问服务具有定义、创建一个数据图,获取变更历史信息并根据这一信息更新数掘源的功能。匦垂囹匡匣型圈一1.1://开始事务I://加载数据图一.?—/1.2://读———————一1.3://读请求返同的结果∈-一一一一⋯一一一:)1.4://构建数据图1.5:11结束事务,2://返同数据图———————一:p3://i黼]t:●-I●:=>4://修改数据图lL5://保存数据图5.1:11开始事务5.2://更新5.3://结束事务’r图4-10客户机通过DAS与数据源交互 硕f=学位论文第pIl章匾向服务絮构的集成架构设计(1)客户机在需要检索数据的时候使用数据访问服务来请求数据图。(2)数据访问服务负责管理对数据库的访问。首先开肩读事务执行查询,然后根据数据库返回的记录集创建数据图,最后提交事务。(3)客户机使用断丌连接的方式处理数据图,即数据访问服务在返回数据图后便不再持有与数据库的连接。(4)当客户机需要保存对数据图的更改时,它将更改后的数据图发送给数据访问服务。(5)数据访问服务负责更新数据库中的记录。它根据数据图的更改摘要生成相应的SQL语句,开启写事务,执行批量更新语句,提交该事务。服务数据对象可以与其它数据编程技术(JDBC、实体EJB、JDO、Hibernate等)无缝隙的集成。这些编程技术已经在软件开发中得到广泛的应用,用来与数据库进行交互,提供和服务数据对象类似的特性,因此这些持久性框架可以融入SDO数据编程中。例如JDO和Hibernate都提供了方便的静态数据API,Hibernate和一些JDO实现提供了乐观并发、断开模型。这些持久性框架可以被扩展为支持服务数据对象的数据访问服务,从而融入SDO框架中。4.4本章小结在这一章,提出了一个基于面向服务架构的企业应用集成架构解决方案。结合基于面向服务架构的企业应用集成解决方案模型视图,采用分层的思想设计了基于服务组件架构、服务数据对象和Web服务的企业应用集成架构,对每层从功能角度进行了深入的阐述并重点研究了各层中的一些关键问题:SCA组件的调用、Web服务合成与匹配、服务组件架构设计理念及策略以及数据访问服务(DAS)等。49 硕‘l:学位论文第五章面向服务架构的企业应用集成架构心用第五章面向服务架构的企业应用集成架构应用根据面向服务架构的理论阐述,服务组件架构、服务数据对象以及W曲服务技术的分析,结合第四章设计的基于服务组件架构、服务数据对象以及Web服务技术的企业应用集成架构,来给出一个该架构的具体应用实现并对系统开发中主要问题进行了研究。本章将以个人银行房屋贷款系统的丌发为例,通过应用本文提出的基于面向服务架构的集成架构SSWSOA来解决个人行房屋贷款系统中的集成问题,展示如何运用服务组件架构、服务数据对象以及Web服务技术来实现系统中集成问题并以此来论证架构的可行性、灵活性。5.1业务背景近几年来,我国的房价一直以比较快的速度上涨,其中有很多方面的原冈。其中一个比较现实的原凶在于炒房者一人拥有多套房子。并不是每位炒房者都足够的资本来买多套房子,他们中的大部分炒房者都是利用银行贷款的钱在炒房子,这与我国实行的银行贷款政策有很大的关系。我国的银行房屋贷款政策对购买一套房和多套房的首付比率(FirstRatio)和贷款利率(LendingRate)基本上是一样的,这样的银行政策是将炒房子的少数人和真iF的大多数的购房者置于同等的地位,为炒房者提供了很好的发财机会,使之能够以小博大,以少量的首付贷款得到多套房子,然后倒手得到巨大的差价,赚取巨大的利润。为此,中国金融行业采取了一系列的购房贷款政策来限制炒房者的牟利行为,从而一定程度上缓解房价上涨的趋势。银行应该根据购房者目前拥有的房屋数量提供不同的首付比率和贷款利率。房屋数量为0的客户应该得到最小的首付比率和贷款利率;然后根据客户的房屋数量依次提高首付比率和贷款利率。对炒房者来说,就意味着用于炒房的资金量需要加大,这样就能起到一定的平抑房价的作用。5.1.1需求概况目前有五个独立的Web服务,它们相互之间不知道,也不能互相调用。HouseLoanAgency服务通过客户的姓名向系统中查询客户已有的房屋数量;Bank0服务用来处理客户已有房屋数量为0时的房屋贷款需求,提供房屋数量为0时的贷款首付和贷款利率;Bankl服务用来处理客户已有房屋数量为l时的房屋贷款需求,提供房屋数量为l时的贷款首付和贷款利率;Bank2服务用来处理客户已有房屋数量为2时的房屋贷款需求,提供房屋数量为2时的贷款首付和贷款利率;Bank3服务用来处理客户已有 硕f=学位论文第五章面向服务架构的企业应用集成架构应用房屋数量为3时的房屋贷款需求,提供房屋数量为3时的贷款首付和贷款利率。将上面的五个服务集成起来,满足两个前提条件:不影响上面的五个W曲服务的正常运行以及不修改上面五个w曲服务的任何代码。集成起来的新系统只需要输入用户姓名,就会自动查出客户的房屋数量,然后自动转到相应的银行进行房屋贷款服务,客户最后可以得到对应于自己目前已有房屋数量的贷款首付和贷款利率。5.1.2业务流程根据上节中的业务概况,在此对业务进行流程分析,业务流程图如5.1所示。图5-1个人房屋贷款系统业务流程本业务需求中明确的指出房屋贷款数量的四种情况,根据每种情况系统都会去调用相应的服务,然后到数据库银行贷款额度表中查询贷款额度信息,包括银行名称,贷款首付以及利率。从流程的分析来看,在此系统的开发中,需要有两个数据模型。一个是客户,包括客户编号、姓名、拥有房屋数量等信息;另一个事银行贷款额度,包括额度编号、银行名称、贷款首付、贷款率等信息。通过分析,就可以方便的来进行数据库的设计。5.2开发平台选择根据第四章中章提出的基于面向服务架构的企业应用集成解决方案,服务组件架构 硕l:学位论文第五章面I川服务架构的企业应用集成架构戍用是在该方案中是核心技术。本节将采用设计的SSWSOA框架的技术路线来集成房屋贷款案例中相互独立的服务。从系统中提供的w曲服务角度来看,在此考虑面向向服务的集成,以w曲服务为中心,服务组件架构技术为纽带,集成起一个动态的系统。同时,在开发中使用服务数据对象编程技术。在构建服务模块时,使用自底向上的面向对象软件开发思想,即从系统的需求出发,构造出各个功能模块。功能实现之后,考虑的将是功能的集成。对于模块内部而言,功能的集成是子模块,它完成一定范畴内的业务功能。本章遵循这种开发思想,从底层的功能模块丌始,实现业务功能,从而进一步的模块集成,完成案例的集成丌发。在开发之前,先来来分析下目自订的集成环境与工具。目前支持SCA的编程环境主要有IBM的WebSphereIntegerationDeveloper,Eclipse的STP项目,ObjectWeb的Lomboz,TIBCO的TIBCOActiveMatrix2.0,Apache的Tuscanyincubator。WebSphereIntegerationDeveloper简称wlD是基于SoA的流程开发和集成工具wID基于Eclipse3.x平刨5丌,提供对SCA规范的支持,将SCA组件以模块为单位进行管理;STP(SOAToolsPlatform)是Eclipse的一组插件,STPCoreFramework定义SCA规范的EMF(EclipseModelingFramework)模型,为SCA提供一个可视化组装平台【58J;TIBCOActiveMatrix2.0用于在单一平台下实现集成、综合应用开发和管理,以便更有效地管理异构面向服务的架构f59】。它使客户可以利用一套通用的工具来组装、部署、托管和管理Java及.NETJ]艮务等,将它们作为基于SCA的综合应用,从而提供了对SCA的广泛支持,提高了在在部署企业级SOA的过程中的互操作性和生产效率;Tuscanyincubator能同时支持服务组件架构与服务数据对象,但由于其构建环境是基于Maven。OracleFusionMiddleware119提供了一整套的工具和集成的端对端功能,从而为构建服务导向架构及实现全面集成提供了坚实的基础唧J。包括了一个OracleSOA组件的更新,提供了对服务组件架构模型的支持。针对目前支持SCA的编程环境的分析,本章使用MyEclipse6.6开发工具为服务组件架构、服务数据对象构建开发环境。使用的集成开发工具具体为Jdkl.5,可视化开发环境MyEclipse6.6,ApacheTuscany的JavaSCA,SDO等,SOAP服务器Axis2,Tomcat6.0,数据库Mysql,数据库可视化管理工具Navicat,操作系统MicrosoftWindowsxP。开发过程中利用Java语言,遵从J2EE标准。5.3系统总体架构设计上一章所设计基于面向服务架构的企业应用集成架构SSWSOA是从一个宏观的角度进行构架设计,在具体应用时,还需要基于该构架使用具体的技术进行模块开发和集成。为此,本节根据对集成架构的分析,将个人房屋贷款系统按照图5.2所示分层设计,能够很好的体现松散耦合的特性,方便维护、扩展、和其它系统的应用集成。 硕上学位论文第五章面向服务粲构的企业应用集成架构应用服务调用层Web服务SCA、SDoDAS数据层图5-2系统总体架构服务层通过服务组件架构(SCA)实现了个人房屋贷款系统的所有业务逻辑,是整个系统模型中最复杂也是最重要的层次,以服务组件架构来设计各个功能模块。数据访问层包含了对数据层的访问逻辑,它与业务逻辑是分丌的,由于所有的系统都要与数据层交互,而且操作也大体相同,其重复利用的可能性比较大,以强大的数据编程技术服务数据对象(SDO)以及数据访问服务(DAS)来实现数据访问层功能。服务接口层提供了Web服务的w曲服务描述文档,是对web服务相关信息的描述。W曲服务将根据个人房屋贷款系统的具体业务需求将服务层的功能模块通过SCA运行环境发布供客户端应用程序调用。数据层使用MySQL作为数据的存储形式。5.4系统实现个人房屋贷款系统的设计从用户的需求出发,以系统的功能为基本单位,将业务不同层次的功能划分成不同的服务,然后将相互联系的服务组合成服务模块,从而构建出服务需求的业务流程。在系统的设计过程中,充分利用了面向服务架构的理念,用面向服务的思想对系统进行功能模块设计。本系统的实现关键在于服务层和数据访问层。5.4.1数据访问数据访问层的设计主要是提供对数据库的数据访问的逻辑,将业务逻辑与数据库分开。数据访问服务RDBDAS提供了四个核心接口,Command接口封装了对数据库的CRUD操作;Session接口实现了与数据库的连接;SessionFactory接El完成配置信息的配置工作,包括读取配置信息、创建配置文件的ConunandYlJ表、初始化数据库连接池等;Converter接口完成数据列的值与DataObject属性的值之间的相互转换,在默认的情况下,数据蚴ar类型的值会对应DataObject中STRING类型的属性值。通过RDBDAS的这三个核心接口实现与数据库的交互。在此对数据访问层的设计从两个技术方面来实现。53 硕t:学位论文第五章面向服务架构的企业心用集成架构应用(1)数据访问服务类的实现。根据数据访问服务配置文件,设计了一个通用的数据访问服务类(DBlnit),它实现了对数据的访问逻辑,有查询、删除、更新以及插入操作,这些操作共同完成与数据库的交互,这样业务逻辑与数据库交互时可以调用该服务类,实现了代码的解耦。如图5.3所示显示了数据访问服务层的具体实现,使用了数据访问服务(DAS)与数据库交互。DBInit—das:DAS+DBInit()一getConfig(fileName:String):InputStream+selectAll():List+Insert(id:int,clientname:String,housenum:int):void+deleteById(id:int):void+updateBy工d(id:int):void+selectById(id:int):DataObject+selectByclientName(clientname:String):DataObject+selectByHouseNum(housenum:int):DataObjectDASFactory+createDAS(is:InputStream):DAS图5-3数据访问层U地类图在此数据层的设计中,采用了依赖注入的思想,将数据访问服务(DAS)作为DBInit服务类的私有成员变量。DASFactory接口根据数据访问服务(DAS)的配置文件创建一个数据访问服务实例,然后,查询、删除等操作中通过该实例动态的创建命令对象,实现对数据库的操作。下面是一段DASFactory根据数据访问服务配置文件获得一个数据访问实例以及使用该实例的代码:publicDBInitO{//创建数据库连接,实现访问层das=DAS.FACTORY.createDAS(getConfig(”DBConfig.xml”));)publicDataObjectselectByClientName(Stringclientname){ 硕卜学位论文第五章面向服务粲构的企业应用集成架构应用Commandcmd2das.gctCommand(”selectclienmame”);cmd.setParametcr(1,clientname);DataObjectroot=cmd.executeQuery0;returnroot.getDataObject(”client[1]”);)在数据访问服务类(DBlnit)的构造函数DBInitO@实现对数据访问服务(DAS)成员变量的初始化,DBConfig.xml文件即为数据访问服务配置文件。在selectByClientName方法中,通过使用DAS实例创建一个Command实例,然后执行对数据库的操作。(2)数据访问服务配置文件的创建。数据访问服务配置文件用来定义连接数据源信息、RDBDAS中DataObject与关系数据库问的映射以及sql命令等信息。为此主要从连接数据源信息、DataObject与关系数据库间的映射以及sql命令的配置几个方面创建了一个DBConfig.xml数据访问服务配置文件。数据库连接信息包括JDBC驱动程序、连接URL、数据库用户名、密码等信息。sql命令包括SQL语句及其类型、用于参数化查询的相关参数、数据库返回记录集的描述信息、数据库表、数据库表名和对应的DataObject类型名、数据库表的列信息以及表之间的关系。在本系统的开发中,未涉及表之间的关系,从而没有配置表之问的关系。这些信息通过XML文件进行配置,提高了很强的灵活性,从而可以在不修改程序源代码的情况下很容易从开发环境转换到部署环境。5.4.2业务功能系统所有的应用逻辑都在服务层中,应用逻辑就是根据具体业务需求来设计处理程序,是整个系统的核心部分,包含数据操作、业务处理等,它通过调用数据访问层的访问接口来访问数据库,并完成所需的业务规则。采用服务组件架构技术来设计各个功能模块以及实现模块之间的交互,所有的逻辑功能单元都以SCA服务组件的形式存在。下面对个人房屋贷款系统的业务进行业务模块创建,根据系统的业务需求设计了两个服务模块。如图54显示了Web服务引用模块和w曲服务实现模块之间的关系图。web服务绑定图5-4Web服务引用模块和Web服务实现模块 硕l:学位论文第五章面向服务架构的企业应用集成架构应用w曲服务实现模块,负责创建房屋贷款实现服务,在此可以专注于业务逻辑的开发并将w曲服务发布供外部调用,可以使用如l洲I,W曲服务、JMS等多种协议进行绑定,在此使用W曲服务进行绑定;w曲服务引用模块,不实现服务,通过w曲服务来引用前面所创建的服务模块的服务。为了实现个人房屋贷款功能,在此设计了如下方面的开发内容。(1)创建3个基本接口,LoanBrokerService接口代表房屋贷款基本接口,接收客户姓名,返回客户的贷款额度;包括指定贷款银行、首付额度、贷款利率。HouseLoanAgencyService接口通过客户姓名查询房问数量。BankService接口,耳HBank服务提供贷款额度。(2)1个集成模块,实现LoanBrokerService接E1,1个引用模块。(3)1个HouseLoanAgency模块,实现接口HouseLoanAgencyService。(4)4个Bank模块,实现接口BankService。每个{ava接口实现了一个业务,新的房屋贷款服务LoanBrokerService构建在五个已知服务之上的,在此称之为一个Web服务流程。该流程的业务时序图设计如图5.5所示,反映了这些业务之间的关系。目叵巫国;1.提交查’向信息;图5-5Web服务流程时序图在该流程中,LoanBrokerService服务接收客户的输入信息客户姓名,引用HouseLoanAgencyService服务,通过客户姓名查询房间数量。根据该客户拥有的房间数 硕士学位论文第五章面向服务架构的企业应用集成架构应用量,判断调用哪个具体的BankService服务,获取客户的贷款额度。5.4.3模块设计根据上一节中业务功能的分析,奉系统的,F发中涉及到两个大的服务模块。为此对这两个模块进行设计和分析。(1)Web服务实现模块。它负责创建房屋贷款实现服务,并将服务模块发布成Web服务供外部调用。创建+个房屋贷款的w曲服务的实现模块丰要实现以下内容:一是,WSDL文件的创建,SCAOJ建的w曲服务将会以WSDL的“portType”作为SCA的服务接口;二是,创建SCA的Java实现类,因为要实现W曲服务的远程调J}{j,所以需要在Java接口(Inter:face)中加入远程调用注释“@Remotable”和服务注释“@Service’’,同时也需要在Java实现类中加上服务注释“@Service”;三是,配置SCA服务模块,主要是在配置文件中加上W曲服务的绑定。如图5.6所示,设计了房屋贷款Web服务实现模块的架构图。驳mn务B组ro件ke么r\竺.1夕\服务组件,∥7¨_/萝≯/,∞嬲努。≥!!>L。an服务Brok/e'擎..>引由>≤>脑C咄om峪poervnen沁t服务/l/服务///々¨”,/z}/Web服务绑定墓燮爹串Bacomnk2咖Serev,图5-6房屋贷款web服务实现模块架构由图所示,涉及到5个基本的服务组件:houseLoanAgencyComponent,Bank0ServiceComponent,。BanklServiceComponent,Bank2ServiceComponent,Bank3ServiceComponent和LoanBroker服务组件。它们提供不同的服务,houseLoanAgencyComponent服务组件根据客户的姓名得到客户的房屋数量; 硕l:学位论文第五章面向服务架构的企业应用集成架构心用Bank0ServiceComponent,BanklServiceComponent’Bank2ServiceComponent,Bank3Ser啊ceComponent服务组件根据客户拥有房屋数量返回贷款信息,包括贷款银行、贷款利率和首付比率;LoanBroker服务组件:将会以上面所有的基本业务组件的服务作为引用,集成所有上面的服务组件。它将首先调用houseLoanAgeneyComponent组件,得到客户的房屋数量,再根据房屋数量调用不同的Bank服务。这些SCA服务组件组装成Web服务实现模块。通过编写配置文件loanbrokerws.composite束组装各个SCA组件。图5.7静态类图显示了这些组件的java实现类之间的静态关系。<>LoanBrokerServieeZ∑LoanBrokerlmpl<>HouseLoanAgencyServieeZ∑HouseLoanAgencylmpl)图5-7静态类图Bank服务的接口类为BankService.java,用来返回客户的贷款额度。LoanBrokerService.java是房屋贷款的java接口类,它通过SCA的Java注释机制来定义W曲服务的远程接口。LoanBrokerlmpl.java是房屋贷款的实现类,其中,要实现W曲服务而加入了SCA的服务注释@Service,并通过引用注释@Reference来弓l用其它几个服务。(2)Web服务引用模块。它不实现服务,只是通过W曲服务来引用前面所创建的服务模块的服务。创建一个房屋贷款的w曲服务引用模块主要完成以下几个方面的工作:创建WSDL文件,SCA创建的Web服务引用模块将会通过实现W曲服务的绑定,这里不需要另外创建WSDL,利用前面创建的WSDL文件即可;创建SCA的Java实现类,一个是Java接口类,另一个是Java实现类。在Java实现类中直接调用远程接口的方法即可;配置SCA服务模块,主要是要在配置文件中通过应用(Reference)hI_LWebl]殴务的绑定。W西服务引用模块架构如图5.858 顾十学位论文第五章面向服务架构的企业应用集成架构应用所示。厂]C1ient}lI}.................................J图5-8Web服务引用模块架构Web服务绑定为此,在开发Web服务引用模块中,开发引用远程Web服务的接口类LoanBrokerService.java及其对应的LoanBrokerServiceComponent.java,编写配置文件loanbrokerwsclient.composite来组装各个SCA组件。同时要创建客户端调用程序LoanBrokerClient.java。在客户端,LoanBrokerClient.java调用引用组件LoanBrokerServiceComponent,LoanBrokerServiceComponent通过W曲服务绑定引用远程的服务器端上W曲服务实现组件。5.4.4客户端调用通过创建客户端的调用程序来调用SCA的W曲服务引用组件,然后SCA的服务引用组件通过W曲服务绑定调用远程的W曲服务实现组件。首先实例化SCADomain,通过SCADomain实例得到房屋贷款服务的java接ISlLoanBrokerService,再通过接121调用getQuoteObject方法,得到返回数据对象后使用XMLHelper.INSTANCE.save方法将整个数据对象显示出来。如下程序逻辑所示:SCADomainscaDomain=SCADomain.newlnstance(”loanbrokerwsclient.composite");LoanBrokerServiceloanBrokerService=scaDomain.getService(LoartBrokerService.class,"LoanBrokerServiceComponent”);DataObjectquote=loanBrokerService.getQuote(”LiSi”);//调用接口中的方法System.out.println(”theresultis:”);Stringstr=XMLHelperJNSTANCE.save(quote,”http://schemas.xmlsoap.org/soap/quote”,”Quote”);System.out.pnntln(str);scaDomain.close(); 硕上学位论文第五章面向服务架构的企业应用集成架构应用SCADomain是一个抽象类,通过其实现类获得Domain组件的实例。SCADomain有几个实现类,如静态类图5.9所示。图5-9SCADomain及其实现类.其中,DefaultSCADomain是SCADomain的一个实现类,本代码中SCADomain.createlnstanceO通过DefaultSCADomain构造一个SCADomain类型的实例,其包含了一个运行对缘ReallySmallRuntime,该对象实现扩展机制。SCADomain的实例化过程中完成扩展点注册器实例化、注册对象到扩展点注册器、加载ModuleActivator、解析策略配置文件definitions.xml、资源加载(资源查找,解析)、资源组装(build,activate,start)的工作。然后通过SCADomain的对外接口来获取服务。5.5系统开发问题分析基于面向服务架构的企业应用集成架构SSWSOA作为一个全新的集成架构,在应用该架构来系统集成的过程中,会遇到一些细节、重要性的开发技术问题。本节会针对开发中的技术问题进行予以分析研究。(1)创建W曲服务描述文件(WSDL)的解决方案。SCA服务组件中w.eb服务的绑定要依赖于WSDL文件,所设计的两个模块都用到房屋贷款的Java接口类对应的WSDL文件,因此WSDL的创建是本系统开发中重要的一个技术。在此提出一个创建WSDL文件的解决方案,通过Java类来生成WSDL,这样不用手动编写WSDL文件,减少工作量以及提高WSDL文件的正确率。这种解决方案要利用ApacheAxis的Java2WSDLSE具、Jdk开发工具包以及T0mcat服务器搭建一个环境来实现从Java类至I]WSDL文件的生成。在控制台下使用axis提供的Java2WSDL命令:javaorg.apache.axis.wsdl.Java2WSDL60 硕l:学位论文第五章面向服务架构的企业应用集成架构应用吣loanbroker.wsdl—lhttp://localhost:8085/LoanBrokerService·nhttp://loanbroker-ploanbroker=http://loanbrokerloanbroker.LoanBrokerServieeloanbroker.LoanBrokerService是类的全路径:包名+类名。如果没有抛出异常,就可生成了W曲服务描述文件loanbroker.wsdl。(2)远程接El(RemoteInterface)。一个远程服务是指那些被运行在不同操作系统进程里或在不同机器上的客户端调用的服务。服务的接【:l的定义表明了该服务是否是远程服务。在本系统开发中,Web服务实现模块与w曲服务引用模块处于不同的操作系统进程中,因此,为了实现客户端对Web服务实现模块中服务的调用,需要开发服务为远程的服务。Web服务实现模块实现了Web服务的远程调用(Remoteinvoke),在Java接I:1LoanBrokerService.java中加入了注释“@Remotable",实现对远程服务的调用。与远程接口对应的是本地接口,其服务只能被与其实现的组件处于相同过程的客户端所调用。Java方式定义的接E1,没有@Remotable定义的,默认为本地服务。通过Java类而不是接口来定义的服务是不可以作为远程服务的,而从WSDLportTypes生成的Java接口则总可以是远程接口。远程接口通常设计成粗粒度,以用于松耦合的交互。远程服务接口不允许方法或操作的重载。无论远程服务是被外部调用还是被模块内部的其它组件调用,数据的传递均为值(by-value)传递。远程服务在实现时,可以在调用中或调用后修改输入数据,或在调用后修改返回数据。但是对于一个远程服务进行的每次本地或远程调用,SCA容器应该确保对输入数据或发生在调用后对返回数据的修改应该对调用者不可见。一个远程接口可以在接口定义中指明是否通过传引用来进行参数传递,以避免进行参数的值拷贝。允许传引用的远程服务的实现不应该允许在调用期间修改输入数据,也不能在调用后修改返回数据。@AllowsPassByReference注释可以用在接口或单个的方法上,用来定义是否通过传引用来进行参数传谢61】。(3)SCAJava注释机制。Java注释机制用来识别服务参照和属性以及如何注释实施中使用的字段,通过这种技术实现服务组件类型的轻松描述。@Reference指定引用名和@Service指定java接口名,@Property实现属性注入:服务组件定义语言SCDL(ServiceComponentDefinitionLanguage)所定义的配置文件loanbrokerws.composite声明了组件之间的引用,在使用一个引用的时候,需要在组件实现中使用@Reference注释注入,LoanBroker服务组件需要引用另外的四个组件,代码片段如下:@Service(LoanBrokerService.class)//LoanBrokerService接口的实现代码publicclassLoanBrokerlmplimplementsLoanBrokerService{61 硕士学位论文第五章面向服务架构的企业心用集成架构应用@PropertyprotectedStringclientName;//成员变量privateHouseLoanAgencyServicehouseLoanAgencySerVice:@ReferencepublicvoidsetHouseLoanAgencyService(HouseLoanAgencyServicehouseLoanAgencyService){this.houseLoanAgencyService=houseLoanAgencyService;)由此片段得知,LoanBrokerJ]&务组件引用houseLoanAgencyComponent服务组件得到客户的房屋数量。注释@Reference会告诉SCA运行时,Java实现类里的变量域“houseLoanAgencyService”是一个引用。SCA运行时通过“houseLoanAgencySeⅣice”名称,在引用声明中查到对应的名为“houseLoanAgencyService”的引用如何初始化,然后按该引用的定义进行初始化,获取相应的服务。图5.10展示TLoanBrokerlmpl类如何使用java注释定义服务、参照和属性的图形表示。nBrokerService.class)'|anBrokerlmplimplements醪Reference)ublicvoidsetHouseLoanAgencyService(HouseLoanAgencyScrVicehouseLoanAgencySerVicethis.houseLoanAgencyService=houseLoanAgencyService;Service:anBrokerServ.IPropery:CIientName。oanBroker服务组件-Reference:mseLoanAgencyServicc图5—10实现类与组件配置的映射关系620LIS(Sea.忙dⅣcC.:Sb固Ⅲ站A吣啪烈咎∞徂d∞唱出篡 硕.1二学位论文第五章面融服务架构的企业应用集成架构成用LoanBrokerlmpl.java是房屋贷款的实现类,@Service注释声明了一个服务,表明LoanBrokerlmpl.java实tr觅LoanBrokerService.java接L1。(4)Web服务绑定。它是服务组件架构中极其重要的机制,使用绑定的思想解决了SCA与其它技术的交互问题,解决了SCA如何构建其它服务的问题,也解决了其它的服务服务如何来使用SCA。绑定(Binding)是用来访问组件中的服务。在SCA中主要用在服务和引用里。服务中的绑定表示该服务的客户端调用调用该服务时需要使用的访问机制,而引用中的绑定表示该引用调用其它服务时所使用的访问机制。SCA和目前的组件(如EJB、WebService、JMS)的根本区别在于SCA组件的Service、Reference和传输协议是一种松散耦合的关系,可以绑定不同的传输协议,而且可以修改绑定。SCA支持多种类型的绑定,常见的绑定类型有SCA绑定、W曲服务绑定和JMS绑定【3引。在系统的的开发中两次使用W曲服务绑定,在此对两处的W曲服务绑定予以分析。一是W曲服务实现模块的配置文件loanbrokerws.compositeqb通过serviee:元素创建W曲服务的绑定,供引用模块来调用。二是在W曲服务引用模块的配置文件Loanbrokerwsclient.Composite@J嗵过reference元素来创建W曲服务的绑定,以说明要调用一个w曲服务。由此得出,W曲服务绑定如果用在服务里,表明这个服务可以被当成一个W曲服务来访问;如果用在引用里,表明这个引用要调用的是一个W曲服务。因此,在配置文件的开发时,要特别注意W曲服务绑定是用在服务还是引用里。在开发中,利用了W曲服务绑定的两种形式。一是直接通过“uri".另一通过“wsdlElement”。由于绑定总是和接口在一起,因此在开发时先要定义服务的接口,格式如下:。然后,进行W曲服务绑定的定义。(5)SDO的运用。目前系统开发中数据代码和业务代码基本上处于一种紧密耦合的状态,如面向对象的开发中,JavaBean根据业务需求来定义属性字段,当业务有一点变化,或是数据库表中添加一个新的字段,对于使用JavaBean对象的地方都需要做相应的修改,这样就加大了开发人员的工作。在本系统的开中,使用服务数据对象作为各层之间传递数据的形式,实现了业务代码与数据代码的解藕,对数据的操作变得更容易,实现了不同层之间的松耦合。在数据访问层,RDBDAS根据从数据库查询返回的记录集创建DataObject以及把DataObject的修改持久化到数据库,都需要完成数据库表与DataObject之间的映射。这种映射类似与对象/关系映射(ORM),它将对象和它们之问的关联映射到数据库中的表以及表之间的关系。在此,对DAS对象/关系映射机制进行分析。数据库模式对应DataObject类型(Type),即一个表对应到一个Type;表的列对应DataObject的数据属性(Property);表之间的关系对应DataObject的关联属性(Property)。基本数据类型的映射通过数据访问服务配置文件中RDBDAS中DataObject与关系数据库问的映射配置完成,从而将数据库 硕士学位论文第五章面向服务架构的企业应用集成架构应用表中额度信息记录转换成服务数据对象的DataObject。在数据访问服务类DBlnit类中对数据库的查询操作均以DataObject作为返回类型。部分代码如下:publicDataObjectselectByHouseNum(inthousenum){//DAS调用配置文件中定义好的sql命令Commandcmd=das.getCommand("selecthousenum”);cmd.setParameter(I,housenum);//执行sql命令,返回数据对象DataObjectroot=cmd.executeQueryO;returnroot.getDataObject(”quote[1]”);)在此代码中,通过数据访问服务实例创建一个Command实例,然后执行对数据库的操作得到与数据库表中记录对应的DataObject。由于查询操作可能有符合条件的多条记录,因此在返回时getDataObject(”quote[1]”)方法使用了Ⅺ,tah表达式技术指定一个特定的属性quote[1],索引号为1表明获取其中的一个数据对象。此外,在服务层中,DataObject作为各个模块之间数据传递的形式。如实现BankService接口的四个模块以DataObject作为输出返回给LoanBorker集成模块。5.6本章小结本章主要论述了个人房屋贷款系统的设计和实现过程,将第四章设计的基于面向服务架构的企业应用集成架构应用于该系统,使得该系统具有良好的松散耦合和易集成的特性。首先对个人房屋贷款系统业务背景进行分析,通过对目前支持SCA的编程环境的集成环境与工具进行了分析提出本系统开发使用到的技术、工具。接着,基于设计的集成架构SSWSOA对系统进行总体设计并分析了每层所使用的技术。然后,从数据访问、业务功能、模块设计以及客户端调用几个角度对系统进行实现。最后,论述了系统开发中的一些技术性问题。 硕l:学位论文第六章总结‘i展肇第六章总结与展望面向服务架构的提出使得构建动态、可扩展的企业应用集成架构解决方案成为可能,Web服务、服务组件架构和服务数据对象技术的相继成熟为面向服务架构以及企业应用集成提供了技术支持。.因此,面向服务架构不再单单作为一种架构理念,更重要的是成为一种软件工程实践方法。本文正是阐绕面向服务架构和企业应用集成,利用实现基于面向服务架构的企业应用集成技术Web服务、服务组件架构和服务数据对象设计了一种新型的集成架构SSWSOA,它区别于传统的企业应用集成架构。该集成架构SSWSOA能够方便快捷地集成企业现有的遗留系统,实现系统间的互操作性和集成的有效性。6.1论文总结在软件体系架构中应用面向服务架构是毫无疑问的发展趋势,越早地理解面向服务架构并且以面向服务架构思想构建系统,意味着越少的后期业务变更或系统整合的投入。在企业应用集成中,通过面向服务架构下的Web服务技术,对于构建单个服务,使业务模块或系统问的交互性迈出了很大的一步,但Web服务仍然存在组件和传输协议紧耦合、服务组装不灵活等问题。服务组件架构、服务数据对象技术的出现,发展了目前面向服务架构中基于Web服务的集成技术,为企业应用集成提供一个服务组装模型。本文的研究工作就是在这样一个背景下展开的。本文的研究围绕企业应用集成展丌,首先阐述了企业应用集成的相关理论和技术,分析了面向服务的体系架构的相关理论知识,W曲服务、服务组件架构、服务数据对象编程技术。接着,阐述企业应用集成的理论,提出基于面向服务架构的企业应用集成解决方案,该集成方案有两种实现的形式。分析了基于W曲服务应用集成原理,设计了一个基于Web服务的企业应用集成架构并分析了Web服务应用集成的优点以及分析了基于服务组件架构的企业应用集成。然后,在此分析研究的基础上,提出了一个新型的基于面向服务架构的企业应用集成架构解决新方案。该方案基于服务组件架构、服务数据对象和Web服务技术,设计了SSWSOA架构并对架构、服务合成与匹配、数据访问服务等进行了分析。最后,结合设计的SSWSOA架构,对个人房屋贷款系统的进行设计和实现并对开发中的主要问题进行了分析。面向服务架构有极大的优越性,越来受到人们的重视。它可以让我们从更高的层次来思考问题,以便构建、集成灵活的和功能强大的系统。而且基于面向服务架构的企业应用集成具有易集成性、优秀的扩展性和易于维护性。采用面向服务架构,还可以进行快速开发,大大提高开发效率和降低成本。本文中实现基于面向服务架构的企业应用集 硕’I:学位论文成关键技术服务组件架构、服务数据对象为开发基于面向服务架构的应用系统带来许多有益的方面。服务组件架构提供的自顶向下的方法、可重用性、技术异构性和组装机制为基于面向服务架构的企业应用集成提供了更灵活的编程模型以及更高的敏捷性。服务数据对象提供的标准化方法对异构的数据源提供了统一的数据访问技术,实现了数据代码与业务代码的解耦,减少了丌发人员在数据编程方面的复杂性。6.2工作展望面向服务架构本质上是一种思想,它超越了所有的具体技术,也超越了所有的具体的架构:同时面向服务架构也包容这些具体的技术和架构。当前面向服务架构己应用于企业的应用丌发中,成为了一种重要的软件工程实践方法,在当前以及未来的应用丌发中将是重要的研究方面。根据目前的发展趋势,可以预见,服务组件架构、服务数据对象、BPEL以及它们之问的结合将会在未来的软件体系架构和企业应用集成中得到越来越多的支持和应用。本文虽然对基于面向服务架构的企业应用集成理论、关键技术以及实施进行了较为全面和详尽的分析研究,但是仍有一些需进一步研究的方面没有涉及,它们包括:(1)SCA支持多种语言技术,但是,在本文中涉及的SCA组件的开发,SDO编程均是利用了Java开发语言。因此,需要进一步研究在不同开发语言下(如C++,Ci!i}等)服务具体实现的绑定、服务发布和发现、客户端的调用等。(2)鉴于对企业应用集成开发经验的缺乏,因此本文在设计过程中难免考虑不够周全。比如集成后系统的性能、交互性、安全性问题以及可靠性消息、事务等非业务逻辑的策略(Policy)管理等都有待进一步的探索研究。(3)SDO技术的进一步掌握,除了论文中提及的功能外,SDO具有反射、元信息、约束、验证等功能,全面掌握SDO编程技术才能更好地处理企业应用集成中数据编程问题。此乡'I'SDO的安全性需进一步的分析。(4)BPEL的研究,BPEL是针对复杂业务流程的最好选择,尽管BPEL是针对w曲服务提出的,但它在SCA中得到了很好的支持,SCA和BPEL的结合能充分发挥SOA的优势,需进一步的研究。上述方面的研究将会进一步推动软件体系结构和企业应用集成的发展。我相信面向服务架构、服务组件架构、服务数据对象以及Web服务等技术必然在未来的软件体系结构和企业应用集成中得到广发的支持和应用。 硕‘J:学位论文参考文献【l】谢小轩,张浩等.企业应用集成综述【J】.计算机工程与应用,2002,38(22):l~5[2】乔小东.EJB组件技术分析[J】.微处理机,2006,12(5):68-70【3】刘通,张亚男.基于Xfire的分布式JavaWebServices的应用【J】.长春工业大学学报:自然科学版,2008,29(2):l83~187[4】OASIS.ReferenceModelforServiceOrientedArchitecturel.0OASISStandard[S].2006【5】Bea.DomainModelForSOA:RealizingtheBusinessBenefitofService-OrientedArchitectureWhitepaper[S].BEA,2005[6】MicrosoR.Service-OrientedArchitecture[A].MSDN,2004[7】宋波,李妙妍.面向w曲服务的BPEL的研究与实现[J】.计算机工程与设计,2007,28(9):234~236【8】杨清平,邱玉辉,蒲国林.基于Qos和OWL—S的W曲服务发现研究【J】.2009,36(3):14乱147[9】李曼.基于领域本体的W曲服务动态组合【J】.计算机学报,2005,28(4):215-221[10】ChakrabortyD,JoshiA,YeshaY.GSD:Anovelgroup-basedservicesdiscoveryprotocolforMANETSIC].In:Proe.ofthe4thIEEEConf.onMobileandWirelessCommunicationsNetworks(MWCN2002),2002.46~53[1l】胡海洋.反射中间件的研究与进展[J】.计算机学报,2005,28(9):4~17[12】杨骐.基于J2EE体系结构的GRM系统的设计与实现[J】.计算机应用研究,2002,11(16):153-154【13】FethiA,Rabhi,HairongYu.AService-OrientedArchitectureforfinancialbusinessprocesses[J].SpringerBerlin/Heidelberg,2006,5(2):185~200【14】黄柳青,王满红.面向构件的方法于实践[M】.北京:清华大学出版社,2006.17-20[15】ThomasErl.Service-OrientedArchitecture:Concepts,Technology,andDesign[M].PrenticeHallPTR,2005.61-65,281-20【16】EricNewcomer,Greglomow.UnderstandingSOAwithWebServices[M].PearsonEducation,2005.13-14【17】DirkKrafzig,KarlBanke.EnterpriseSOA:Service—OrientedArchitectureBestPractices[M].PrenticeHallPTR,2004.21-23【18】凌晓东.SOA综述【J】.计算机应用与软件,2007,24(10):122~124【19】RaoufBoutaba,WojciechGolab,YoussefIraqi.LightpathsonDemand:AWeb—Services-BasedManagementSystem[J].IEEECommunicationsMagazine,2004,42(7):67 硕l:学位论文参考文献lOl~107[20】FeisiScienceandTechniqueCenterofResearchandDevelopment.ApplicationandDevelopmentofJavaWebServices[M].Beijing:PublishingHouseofElectronicsIndustry,2002.190~196[2l】张志强,张景等.基于WebServices的应用系统丌发初探【J】.计算机应用,2003,23(5):13乱138【22】陈博,许满武.基于W曲的计算模型——w曲Service[J].计算机应用研究,2003,41(1):41卅[23】HuhnsM,SinghMP.Service-orientedcomputing:keyconceptsandprinciples[C].ProceedingsoftheFourthInternationalConferenceonWebInformationSystemsEngineering,2003.75—81[24】梁爱虎.SOA+思想、技术与系统集成+应用详解【M】.北京:电子工业出版社,2007.359-368[25】柴晓路,梁宇奇.W曲Services技术、架构和应用[M】.北京:电子工业出版社,2003.79~80[26】TsalgatidouA,PiliouraT.Anoverviewofstandardsandrelatedtechnologyinwebservices[J].DistributedandParallelDatabases,2002,12(2—3):135-162[27】王明文,朱清新等.w曲服务架构[J】.计算机应用研究,2005(3):93-95[28】Aribalne,IBMCorporation,MicrosoftCorporation.UDDITechnicalWhitePaper[EB/CD].2000.09[29】刘杨.透视BPEL及其应用【J】.网络与信息,2007,(1):75~76[30】(美)ThomasErl.SOA概念、技术与设计(王满红,成荣华译)【M】.北京:机械工业出版社,2006.103~105【31】SteinerM,TsudikG,WaidnerM.Diffie—Hellmankeydistributionextendedtogroupcommunication[C].Proceedingsofthe3rdACMConferenceOnComputerandCommunicationsSecurity,1996.31~37【32】柴晟,罗传军,卓毕生.基于SOAP的W曲Services开发的关键技术fJ】.计算机与现代化,2007,(8):104--106【33】李玲,袁;JEth,张敏.基于WSDL文件生成测试用例的研究[J】.计算机技术与发展,2007,17(10):54~56【34】NieolmM.Josuttis.SOA实践指南(程桦译)【M】.北京:电子工业出版社,2008.218-220【35】祁金华.下一代编程架构:SCA/SDO/BEPL[J].软件世界,2006,(17):82【36】尧飘海,张云华等.基于SCA的面向服务的设计与实现【J】.计算机系统应用,2008,(8):28~31 硕上学位论文参考文献【37】王紫瑶,南俊杰,段紫辉等.SOA核心技术及应用[M】.北京:电子工业出版社,2008.48-56【38】闰建新,张宇,陆东泰等.基于JBI标准的企业集成中间件研究【J】.微计算机信息,2007,23(27):11-13【39】冯新扬,崔凯,沈建京.面向插件的应用框架研究与实现【J】.计算机工程与应用,2009,45(10):89-91[40】毛新生.SOA原理·方法·实践【M】.北京:电子工业出版社,2007.294~296【4l】(美)NorbertBieberstein等著SOA实践指南一执行SOA(T_海鹏译)【M】.北京:机械工业出版社,2009.120--122【42】IBM,Sun等.Next—Gen—Data-Programming-Whitepaper[S].2005.“【43】陈立岩.EJB组件技术及应用【J】.计算机技术与发展,2007,17(3):62—64【44】DangG,ChengZ,JinSeta1.Aservice-orientedarchitecturefortele·immersion[C].Proceedingsofthe2005IEEEInternationalConferenceone-Technology,e-Commerceande·Service.HongKong,China,2005.646-649【45】王颖,吴荣泉,黄美锋等.一个面向服务的EAI架构【J】.计算机工程,2006,32(1):279^艺80【46】WilliamA.Ruh,FrancisX,Maginnis.EnterpriseApplicationIntegration(张博等译)[M】.北京:机械工业出版社,2003.86--89[47】柴晓路.W曲服务轻松进行企业应用集成[EB/OL].IBM中国,2002.1-6【48】NaveenErasala,DavidCYen,TMRajkumar.EnterpriseApplicationIntegrationintheElectronicCommerceWorld[J].ComputerStandards&Interfaces,2003,12(25):69-82【49】M.BrianBlake,etc.WSC-06:TheWebServiceChallenge[C].IEEEComputerSociety,Proceedingofthe8thIEEEInternationalConferenceonE—CommerceTechnologyandthe3rdIEEEInternationalConferenceonEnterpriseComputing,E—Commerce,andE-Services(CEC/EEE’06),2006.61-62【50】JimMarino,MichaelRowley.UnderstandingSCA(ServiceComponentArhcitecture)【M】.PearsonEducmion,2009.26-28【51】PaulPatrick.TmpactofSOAonenterpriseinformationarchitectures[C].Proceedingsofthe2005ACMSIGMODinternationalconferenceonManagementofdata,2005.844--848【52】魏子鹏.BPEL商业流程建模[J】.科技情报开发与经济,2004,(3):132-134【53】曾云峰,周航,黄志球.BPEL的测试用例生成研究【J】.计算机工程与设计,2008,29(20):243-246’【54]BechlerM,HofHJ,PahlkeDK.Acluster-basedsecurityarchitectureforadhocnetworks[J】.IEEEInfocom,2004,4(2):393--40 硕.L学位论文参考文献【55】KleinM,BcrnstcinA.SearchingforServicesontheSemanticWebUsingProcessOntologies[C].ProceedingsoftheInternationalSemanticWebWorkingSymposium(SWWS),2001.159-172【56】陈启祥,杨军.面向服务的软件架构S以及其支撑技术的研究【J】.湖北工业大学学报,2005,2(4):38-41[57】张洪斌.WebSphereSen惯平台的J2EE实例开发指南【M】.北京:机械工业出版社,2006.1~4【58】NaziDai,LawrenceMandel,ArthurRyman.EclipseWebToolsPlatform:DevelopingJaVa刑WebApplications[M].Addison-WesleyProfessional,2007.281-283【59】Tibico.Service-OrientedArchitectureSoftware[S].TIBICO,2008【60】RobBarry,JackVaughall.OracleFusionMiddlewarelgsupportsSCA[A].SearchSOA,2009【61]IBM,SAP,BEA等.SCAServiceComponentArchitecture(ClientandImplementationModelSpecificationforJava)[S].IBM,2005.32~33 硕Ij学位论文致谢在学位论文完稿之际,特别向我的导师王加阳教授表示衷心的感谢。在我攻读硕士研究生阶段,老师对我的学习和科研工作给予了悉心关怀和耐心指导。从课题选择、进度安排、论文写作等方面,老师始终给予我精心的指导,与老师的每一次交流都使我的思维得到肩迪,视野得到开拓,我的每一点进步都与老师的言传身教分不开。王老师严谨求实的治学态度,高度的敬业精神,孜孜以求的工作作风显示出卓越的学者品质。他的兢兢业业、一丝不苟的作风将会一直是我学习、工作中的榜样。能够顺利完成我的硕士学业,得益于王老师的实在太多。在此,再次向尊敬的王老师表示我最诚挚的感谢,祝愿他身体健康,万事如意!同时也非常感谢研究生学习期问授课老师们,它们的授课丰富了我的知识,开拓了我的视野,使我获益匪浅。这些都将是我以后人生中非常宝贵的一笔财富!感谢几年来和我朝夕相处的实验室成员们。在实验室.咀与他们共同学习、科研的日子足我生命中一段宝贵的时光和美日阿的回忆。他们给了我方方面面的帮助和许多好的建议和意见,请允许我一并表示感谢。我还要感谢我的父母,感谢他们多年来给予我的支持、理解和爱,感谢他们对我的殷切希望和给予我的无限动力。最后,谨向百忙之中抽出宝贵时问评审本论文的老师致以最诚挚的谢意171尹兆冰2010年4月于中南大学 硕f?学位论文攻读硕}:学位期问差要的研究成果攻读硕士学位期间主要的研究成果【l】尹兆冰,王加阳.WebService及其关键技术研究综述【J】.软件导刊,2010,9(2):121-123【2】尹兆冰.WebService技术及其实现研究[A】.见:中南大学信息科学与工程学院2009年研究生学术论文集[C】.长沙:中南大学信息科学与工程学院,2009

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭