基于soa架構的集成方法研究與應用

基于soa架構的集成方法研究與應用

ID:35192560

大小:8.50 MB

頁數(shù):76頁

時間:2019-03-21

上傳者:U-22107
基于soa架構的集成方法研究與應用_第1頁
基于soa架構的集成方法研究與應用_第2頁
基于soa架構的集成方法研究與應用_第3頁
基于soa架構的集成方法研究與應用_第4頁
基于soa架構的集成方法研究與應用_第5頁
資源描述:

《基于soa架構的集成方法研究與應用》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。

中南大學碩士學位論文基于SOA架構的集成方法研究與應用姓名:尹兆冰申請學位級別:碩士專業(yè):計算機科學與技術指導教師:王加陽20100526 摘要當前,伴隨著經(jīng)濟建設的步伐,企業(yè)信息化得到了快速發(fā)展。但是,企業(yè)內也積累了許多分散孤立的應用系統(tǒng),形成一個個的“信息孤島”,所以集成這些應用系統(tǒng)成為當今企業(yè)的迫切需要。在這種背景下,面向服務構架應運而生。它為企業(yè)應用集成提供了一種動態(tài)、可擴展的架構方案,同時Web服務、服務組件架構和服務數(shù)據(jù)對象技術的成熟為面向服務架構以及企業(yè)應用集成提供了技術支持。本文提出一種新的方案來解決基于面向服務架構的企業(yè)應用集成。首先闡述了實現(xiàn)企業(yè)應用集成的面向服務架構理論以及Web服務、服務組件架構、服務數(shù)據(jù)對象技術。在闡述功能層集成思想的基礎上,深入研究了基于而向服務架構的企業(yè)應用集成,分析了Web服務應用集成原理并設計了一個Web服務集成架構、討論了Web服務應用集成的優(yōu)點、同時分析了服務組件架構應用集成以及該應用集成的優(yōu)勢。然后,結合對基于面向服務架構的企業(yè)應用集成的分析,將Web服務、服務組件架構技術相結合,設計了一個基于服務組件架構、服務數(shù)據(jù)對象和Web服務技術的企業(yè)應用集成架構,該架構解決了集成中的服務組裝和數(shù)據(jù)編程問題。重點對該架構進行了分析并對SCA組件調用、服務合成與匹配、服務組件架構設計理念及策略、數(shù)據(jù)訪問服務進行了深入的研究。最后,根據(jù)設計的集成架構來設計和實現(xiàn)個人房屋貸款系統(tǒng),同時詳細分析了開發(fā)中涉及的技術問題。關鍵詞面向服務的架構,Web服務,服務組件架構,服務數(shù)據(jù)對象,企業(yè)應用集成 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:學位論文第一章緒論當前,企業(yè)信息技術發(fā)展迅猛,其發(fā)展的~個主要趨勢是企業(yè)應用集成(EnterpriseApplicationIntegration,EAI),企業(yè)應用集成是實現(xiàn)企業(yè)業(yè)務自動化的基礎。企業(yè)應用集成已經(jīng)成為最近幾年應用程序和信息系統(tǒng)開發(fā)的驅動力。面向服務架構(Service—OrientedArchitecture,SOA)為傳統(tǒng)的企業(yè)應用集成帶來了一場革命,它能提供一種面向功能層的企業(yè)應用系統(tǒng)集成方式。這種方式不僅能保證遺留系統(tǒng)的數(shù)據(jù)安全性和邏輯安全性,而且還能實現(xiàn)各系統(tǒng)之間的松散藕合,這樣可以最大限度的集成現(xiàn)有的遺留應用。1.1研究背景當前,大多數(shù)企業(yè)都有各種各樣的系統(tǒng)、應用程序以及不同時期和技術的體系結構,通過使用這些應用系統(tǒng),達到降低管理成本、規(guī)范業(yè)務流程和提高服務質量的目的。而這些應用系統(tǒng)彼此之問并不是孤立的,通常它們彼此之間需要信息交互,通過它們之間的相互協(xié)作來更好地完成企業(yè)分配的任務,這就需要探索一種新的軟件開發(fā)方法,通過這種新的開發(fā)方法將現(xiàn)有的各個應用系統(tǒng)整合起來,從而達到整合企業(yè)資源的目的。這樣,企業(yè)應用集成的研究由此展開。傳統(tǒng)的企業(yè)應用集成解決方案按采用的方法學分類分為幾種。點對點集成方法,是通過少數(shù)不同應用系統(tǒng)之問的直接硬代碼集成。面向消息的中間件集成方法,利用高效可靠的消息傳遞機制進行平臺無關的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行網(wǎng)絡應用系統(tǒng)的集成【¨。但是,傳統(tǒng)的企業(yè)應用集成方法很復雜,成本高,而且不具備靈活性。此外,傳統(tǒng)的企業(yè)應用集成方法也不能很好的支持企業(yè)轉向以業(yè)務過程為中心的經(jīng)營模式。在不改變原有企業(yè)應用系統(tǒng)的基礎上,基于面向服務架構的企業(yè)應用集成開發(fā)方案被提了出來,企業(yè)應用集成進入面向服務架構的新時代。它通過發(fā)布可發(fā)現(xiàn)的接口為其它的應用程序提供服務,而其中的服務可以通過網(wǎng)絡進行調用。采用面向服務的架構,我們可以最大程度地減少系統(tǒng)間的耦合,從而提高可重用性。當前,已經(jīng)存在許多實現(xiàn)面向服務架構的方式。Web服務技術是其中之一,目前是一種的主流方式。它的若干實現(xiàn)技術基于XML標準接口,從而使得它具有良好的業(yè)務封裝機制、標準的協(xié)議規(guī)范、松散藕合集成機制以及高度的可集成性等特點,能夠很好的滿足面向服務架構應用模式需求。通過在企業(yè)應用集成中引入面向服務架構和W曲服務的相關技術(如SOAP/WSD圳DDI等),可以實現(xiàn)面向服務的企業(yè)應用集成。但是,面向服務架構并不一定是通過Web服務技術來實現(xiàn),而且一個基于Web服務技術開發(fā)出來的應用系統(tǒng)也不一定就代表一個基于面向服務架構的應用,Web服務技術只是實現(xiàn) 碩l:學位論文第一章緒論面向服務架構的具體方式之一。而服務組件架構、服務數(shù)據(jù)對象編程技術的相繼出現(xiàn),為面向服務架構提供了一種新的實現(xiàn)方式。兩者有著密切的聯(lián)系,相互協(xié)作,為企業(yè)應用集成提供了很好的支持。服務組件架構為開發(fā)者提供了單一的、使用服務的編程模型,服務數(shù)據(jù)對象為丌發(fā)者提供了單一的、展現(xiàn)和使用數(shù)據(jù)源的編程模型。本文正是基于服務組件架構、服務數(shù)據(jù)對象和Web服務技術構建了一種面向服務的、相粒度、松散耦合的、位置和傳輸協(xié)議透明的集成架構解決方案。1.2國內外研究現(xiàn)狀20世紀60年代,企業(yè)應用集成伴隨著信息技術的發(fā)展而出現(xiàn)。企業(yè)應用集成的理念就隨著企業(yè)信息化程度的不斷提高得到不斷的發(fā)展,其關注的焦點也不停地變化。到80年代初,企業(yè)規(guī)模丌始不斷擴大,業(yè)務和數(shù)據(jù)閂趨復雜,一些公司丌始意識到企業(yè)應用集成的價值和必要性,許多公司的專業(yè)技術人員試圖在企業(yè)系統(tǒng)整體概念的指導下對現(xiàn)有的應用系統(tǒng)進行重新設計,以期將它們集成在一起。這時,一種點對點(Point.to.Point)的集成技術開始出現(xiàn),在各個應用系統(tǒng)之間通過各自不同的接口進行點對點的簡單連接,實現(xiàn)信息和數(shù)據(jù)的共享。80年代術到90年代初,隨著企業(yè)規(guī)模的進~步擴大,應用系統(tǒng)不斷增加,簡單的傳統(tǒng)點對點集成已經(jīng)很難滿足企業(yè)不斷增長的業(yè)務要求,企業(yè)迫切需要新的集成方案。它以較少代碼編寫、低成本的開發(fā)來實現(xiàn)集成,可以將各種遺留系統(tǒng)和新系統(tǒng)無縫集成起來。利用CORBA、DCOM、MOM等面向信息的中間件技術【2】,實現(xiàn)了對企業(yè)信息系統(tǒng)的集成,~定程度上促進了企業(yè)的進一步發(fā)展,但其不足在于數(shù)據(jù)與傳輸緊密的耦合,不便于重用13】。當前,企業(yè)應用集成技術在國內外的應用已經(jīng)處于一個高速發(fā)展的時期。企業(yè)應用集成不受行業(yè)的限制,它廣泛應用于國防、汽車、金融服務、新聞、電信、高科技、咨詢、法律、政府等機構和行業(yè),主要應用范圍涉及企業(yè)應用系統(tǒng)問的數(shù)據(jù)整合、流程整合、異構系統(tǒng)集成、電子商務數(shù)據(jù)交換等諸多企業(yè)應用集成領域。在國外,以Microsott、BEA的企業(yè)應用集成解決方案最有代表性。目前,國內企業(yè)提供企業(yè)應用集成的解決方案并不多,用友、金蝶等國內大的軟件公司的產(chǎn)品競爭力也不很強。近幾年來,成為研究熱點的面向服務架構和Web服務技術的誕生,為企業(yè)內部及外部系統(tǒng)以及面向服務的集成提供了理論支撐和技術支持。在國外,面向服務架構已經(jīng)不一個新鮮的概念。早在1996年此概念就已經(jīng)出現(xiàn)了,不過受當時技術發(fā)展的限制,并不能完全地實現(xiàn)面向服務的架構。因此,面向服務架構在相當一段時間內沒有得到大家的重視。2002年的12月,Gartner再次提出“面向服務的體系結構”是現(xiàn)代應用開發(fā)領域最重要的課題之后,不僅國內外計算機專家學者對此表現(xiàn)出極大的興趣,而且以IBM和BEA為代表的各大lT廠商也紛紛加入研究面向服務架構的行列。目fi{f面向服務架構的理論研究主要集中在以下幾個方面。2 碩十學位論文第一章緒論(1)理論模型。為了更好地促進未來應用系統(tǒng)間的交互,需要規(guī)范和指導基于面向服務架構的企業(yè)應用系統(tǒng)的開發(fā)。從事面向服務架構參考模型研究的意義正在于此。各個研究機構和各個公司提出了若干概念參考模型,作為面向服務的體系結構的指導方針。OASIS在2006年初提出了面向服務架構參考模型【4l,各大公司IBM、BEA也有自己的面向服務架構參考模型【5,61。(2)服務設計。服務的構件要考慮到當前大量使用面向對象或面向構件方法開發(fā)出來的大量遺留構件的復用問題,因此將現(xiàn)有的非面向服務的構件轉化或者擴展為服務組件,為復用大量現(xiàn)有構件提供有效的途徑。除了要兼容以前的遺留構件外,服務的設計研究主要應該是使用新的技術和標準來開發(fā)服務構件,在這個方面已經(jīng)有了一些研究成果。比如OSOA聯(lián)盟的服務組件架構、服務數(shù)據(jù)對象規(guī)范,Microsoft的WCF以及SUN公司的JBI規(guī)范。這些規(guī)范為服務的設計和丌發(fā)提供了方法、規(guī)范,促進了面向服務的設計和開發(fā)的發(fā)展,是目前服務設計和開發(fā)方面的主流,也是整個面向服務的軟件體系結構方面實質性的探索和研究。(3)服務組合。它足面向服務的體系結構的研究中的熱點和重點。目前基于流程的研究大多基于BPEL(BusinessProcessExecutionLanguage,業(yè)務流程執(zhí)行語言)17J,BPEL是最有影響力,最廣泛接受的流程語言,并已經(jīng)成為標準。此鄉(xiāng),bOWL-St81,是一個比較有名的基于語義的流程語言,在學術研究中占有重要地位。此外還有基于語義的方法、基于形式化方法、基于規(guī)劃的方法的研究。文獻【9】提出了一種基于領域本體的服務動態(tài)組合算法。該方法利用領域本體及其推理能力,生成一個優(yōu)化的服務組合圖,然后基于該圖給出了一個高效的服務組合算法。(4)服務發(fā)現(xiàn)?;ヂ?lián)網(wǎng)上存在著大量的w曲服務,但是我們所需要的只是其中的少量W曲服務,W曲服務發(fā)現(xiàn)研究目的就在于此,使用w曲服務發(fā)現(xiàn)方法查找出滿足要求的服務。服務調用的質量由服務發(fā)現(xiàn)的效果來決定,同時,服務發(fā)現(xiàn)的效果也影響服務組合的相容性和可替換性,關系到能否真正實現(xiàn)服務的即插即用。由于傳統(tǒng)的Web服務發(fā)現(xiàn)機制查準率較低,w曲服務發(fā)現(xiàn)的研究者引入了語義網(wǎng)(SemanticWeb)技術加強服務描述信息的機器可理解性,支持用戶需求和服務能力之間的邏輯推理匹配;利用P2P技術來處理服務元數(shù)據(jù)的交捌Ⅻ,克服傳統(tǒng)UDDI(UniversalDescription,DiscoveryandIntegration,統(tǒng)一描述、發(fā)現(xiàn)和集成)技術中服務元數(shù)據(jù)集中注冊、集中存放對搜索廣度帶來的限制。值得一提的是,文科Il】是國內比較系統(tǒng)的總結和研究服務發(fā)現(xiàn)的文獻,它系統(tǒng)地總結了服務發(fā)現(xiàn)的相關技術,并在此基礎上提出了基于服務質量QoS的服務匹配算法,服務選擇模型,提出了Web服務發(fā)現(xiàn)的體系結構,提出了w曲服務發(fā)現(xiàn)的原型系starWSDS。服務發(fā)現(xiàn)是面向服務的體系結構的研究熱點,也是難點,這方面需要解決的問題還很多,未來幾年內仍然會有很多研究針對這個方面。在面向服務的體系結構的應用方面,各大軟件廠商在推行面向服務架構時一般結合3 第一章緒論自己產(chǎn)品平臺進行。IBM作為業(yè)界科技創(chuàng)新的領導廠商,早在面向服務架構領域投入了大量精力,提出面向服務架構的IBM解決方案,使客戶能夠快速實施面向服務的架構,并幫助企業(yè)全面丌發(fā)面向服務架構的潛能,從而實現(xiàn)隨需而變的業(yè)務。在通過面向服務架構實現(xiàn)真正業(yè)務價值的過程中,IBMWebSphere在IBM中間件的基礎上強化了很多應用接口。正如IBM所強調的“總線”概念,它關注的領域是系統(tǒng)領域,為企業(yè)用戶提供全套的架構服務【121。此外,BEA、SAP等軟件廠在商推出了自己的面向服務架構產(chǎn)品。它們都是站在自己的角度,所提的概念也不盡相同,很難形成統(tǒng)一的標準,這導致目前面向服務架構的實踐處于一種較為混亂的局面。在國內,對面向服務架構的研究仍然處于探索階段。國內科研機構的理論研究成果也并不多,對于面向服務架構的著作更是少見。中國企業(yè)正在尋求解決動態(tài)lT應用整合的問題,越來越多的企業(yè)己經(jīng)了解到面向服務架構的價值及重要性。盡管受到全球金融危機的影響,面向服務架構在會融、電信、交通行業(yè)【l3】等其它領域的應用有很大的進展。在2007年3月,面向服務架構核心組件標準SCA/SDO標準1.O正式發(fā)布,中國的企業(yè)普元軟件第一次在軟件架構層面參與全球標準制定,其研發(fā)的PrimetonEOS產(chǎn)品,是基于J2EE技術實現(xiàn)企業(yè)級應用開發(fā)、運行、管理、監(jiān)控、維護的中問件平臺【14】,其開發(fā)與集成技術接近于國外IT巨頭面向服務架構產(chǎn)品的水平。EOS采用面向構件構建應用系統(tǒng)的模式,一定程度上體現(xiàn)了面向服務架構的思想。但從總的來說,國內對面向服務架構的實踐仍處于較為初步而零散的局面。1.3本文主要工作為了能夠更好的解決企業(yè)應用集成的問題,人們不斷的提出新的解決方案,這些新的解決方案在一定程度上能夠彌補以往的不足,從而達到一種更加完美的解決方案。軟件體系結構的出現(xiàn)克服了軟件危機中的問題,降低了軟件開發(fā)的復雜度。伴隨著經(jīng)濟的飛速發(fā)展,企業(yè)的規(guī)模在不斷的壯大,企業(yè)信息化所需的軟件復雜度也在增加,傳統(tǒng)的軟件體系結構暴露出了它們的弊端,新的體系結構正在嶄露頭角,解決了過去軟件開發(fā)中出現(xiàn)的種種問題。面向服務架構正是為軟件體系結構注入了新的生命活力,實現(xiàn)了應用程序間良好的互操作性、可擴展性以及高度的集成性。基于面向服務架構的企業(yè)應用集成解決方案,將企業(yè)中不同業(yè)務功能的應用程序集成在一起。從而構建一個可供數(shù)據(jù)交流共享和應用溝通的中心系統(tǒng),達到現(xiàn)有的應用系統(tǒng)能夠在新的環(huán)境中良好運行的目的,使我們可以從另外一個角度來看待企業(yè)內部的信息資源,新的企業(yè)信息和企業(yè)原有的信息資源融合在一起,使得它們能夠在新的平臺上交互,從而一起發(fā)揮集成效應。本文從面向服務架構的企業(yè)應用集成角度出發(fā),深入闡述了面向服務架構模型以及w曲服務、服務組件架構、服務數(shù)據(jù)對象等技術。在研究了W曲服務應用集成、服務組4 碩+l二學位論文第一章緒論件架構應用集成的基礎上,結合本人碩士階段參與的軟件項目的經(jīng)驗和一些體會,進而提出了一種基于面向服務架構的企業(yè)應用集成方案。主要研究工作如下:(1)闡述了面向服務架構理論以及Web服務、服務組件架構和服務數(shù)據(jù)對象技術,對其中的概念、模型、特征、優(yōu)勢等方面進行了深入的分析,將它們與企業(yè)應用集成聯(lián)系起來,為最終的企業(yè)應用集成解決方案和架構設計提供理論依據(jù)。(2)深入研究了基于面向服務架構的企業(yè)應用集成,包括分析了集成的層次,重點研究了w曲服務、服務組件架構技術來實現(xiàn)基于面向服務架構的企業(yè)應用集成。分析了w曲服務工作原理并設計一個基于w曲服務的企業(yè)應用集成架構。同時,分析了基于服務組件架構的企業(yè)應用集成并闡述了該集成的優(yōu)勢。(3)提出一個基于面向服務架構的企業(yè)應用集成新方案,該方案最大的特點在于整合了w曲服務、服務組件架構和服務數(shù)據(jù)對象技術。設計了一個基于w曲服務、服務組件架構和服務數(shù)據(jù)對象的企業(yè)應用集成架構SSWSOA,其不同于W曲服務以及服務組件架構各自來實現(xiàn)企業(yè)應用集成。重點對該架構進行架構分析,深入分析架構中每層的功能及實現(xiàn)的技術,并對架構中的SCA組件調用、服務合成與匹配、服務組件架構策略框架以及設計理念、數(shù)據(jù)訪問服務進行了分析。(4)結合設計的SSWSOA,設計和實現(xiàn)了個人房屋貸款系統(tǒng)并對開發(fā)中涉及的主要問題進行了分析。1.4內容組織本文以基于面向服務架構的企業(yè)應用集成的研究為出發(fā)點,通過對面向服務體系架構理論以及實現(xiàn)基于面向服務架構的企業(yè)應用集成的技術Web服務、服務組件架構以及服務數(shù)據(jù)對象分析,提出一個企業(yè)應用集成解決新方案,該方案基于面向服務架構,充分體現(xiàn)了面向服務架構的思想,并根據(jù)這些技術設計了一個企業(yè)應用集成架構SSWSOA。本文分六章進行論述:第一章緒論,闡述了論文研究背景、研究意義和目的;詳細分析了國內外研究現(xiàn)狀以及闡述了論文的內容組織。第二章面向服務架構理論與技術,主要闡述了面向服務架構理論以及用于實現(xiàn)基于面向服務架構的企業(yè)應用集成的Web服務、服務組件架構、服務數(shù)據(jù)對象技術。第三章面向服務架構的企業(yè)應用集成,首先分析了企業(yè)應用集成層次,針對功能層集成優(yōu)勢,引出基于面向服務架構的企業(yè)應用集成解決方案。然后,研究了Web服務、服務組件架構技術來實現(xiàn)基于面向服務架構的應用集成。分析了Web服務工作原理,設計一個集成架構并闡述Web服務集成之優(yōu)點;研究了服務組件架構應用集成并分析了其集成帶來的優(yōu)勢。第四章面向服務架構的集成架構設計,主要內容是創(chuàng)新性的提出一個基于面向服5 碩士學位論文第一章緒論務架構的企業(yè)應用集成解決方案,該方案融合了基于Web服務的企業(yè)應用集成以及基于服務組件架構的企業(yè)應用集成方法,設計了一個基于服務組件架構、服務數(shù)據(jù)對象和Web服務技術的企業(yè)應用集成架構SSWSOA。并對框架進行以及其中每層中的問題進行研究。第五章面向服務架構的企業(yè)應用集成架構應用,主要通過個人房屋貸款系統(tǒng)的設計和實現(xiàn)展示基于面向服務架構的企業(yè)應用集成架構SSWSOA的應用。首先分析了個人房屋貸款系統(tǒng)的業(yè)務背景,對目的支持服務組件架構的編程環(huán)境的集成環(huán)境與工具進行了分析并選擇丌發(fā)技術與工具。接著,基于設計的集成架構SSWSOA對系統(tǒng)進行總體設計并分析了每層所使用的技術。然后,從數(shù)據(jù)訪問、業(yè)務功能、模塊設計以及客戶端調用幾個角度對系統(tǒng)進行實現(xiàn)。最后,論述了系統(tǒng)開發(fā)中的一些技術性問題。第六章總結與展望,是對本文的工作進行總結,并對未來作出展望。1.5本章小結面向服務架構及其實現(xiàn)技術的不斷發(fā)展越來受到人們的關注,如何設計與應用一種符合企業(yè)本身的集成架構成為了研究的熱點。本章首先介紹了企業(yè)應用集成的研究背景,指出本文將基于面向服務架構的企業(yè)應用集成研究作為出發(fā)點。然后,較為深入地分析了面向服務架構及其企業(yè)應用集成的國內外研究現(xiàn)狀。最后,討論了論文的主要研究就工作以及內容組織安排。6 碩-J:學位論文第_二章面向服務架構理論‘j技術第二章面向服務架構理論與技術為了實現(xiàn)應用系統(tǒng)問的集成,企業(yè)最初主要采取緊耦合的集成方法,最典型的就是點對點的集成,這種集成方法有著很多的弊端。不僅需要對應用系統(tǒng)做較大的改動,還需要編寫大量的代碼,并且當再有一個新系統(tǒng)需要集成時,系統(tǒng)需要再次重新設計,不儀加大了集成的難度,而且提高了集成的成本。為了有效的降低集成難度,減少集成的成本,成功的實現(xiàn)多個應用系統(tǒng)間的無縫集成,并且能保證系統(tǒng)集成的松散耦合性、開放性。本文設計了一個基于面向服務架構的企業(yè)應用集成架構,該集成架構采用了一些實現(xiàn)面向服務架構的技術,充分體現(xiàn)了面向服務架構的思想。對此,本章將主要對面向服務架構理論以及實現(xiàn)面向服務架構的技術Web服務、服務組件架構和服務數(shù)據(jù)對象予以闡述,為下面幾章進行企業(yè)應用集成分析以及架構設計打下基礎。2.1面向服務架構隨蓿信息技術的不斷發(fā)展,特別是分布式計算技術和因特網(wǎng)的飛速發(fā)展使企業(yè)擁有了大量基于網(wǎng)絡的大型分布式應用系統(tǒng)。而這些應用系統(tǒng)之間的數(shù)據(jù)很難共享,從而不可避免的形成了一個個的“信息孤島”。SOA,即面向服務架構正是為處理這個復雜問題而提出的有效解決方案。這種體系結構思想起源于“把軟件作為服務(SoftwareasaService)”的觀點。2.1.1概念及模型Gartner在1996年提出面向服務架構的概念,只是作為一種架構理念。2002年12月,Gartner3L提出面向服務架構是“現(xiàn)代應用開發(fā)領域最重要的課題’’,并預測到2008年,面向服務架構將成為占有絕對優(yōu)勢的軟件工程實踐方法。許多的學者提出了自己的面向服務架構的概念與定義。文獻【l5】提到服務有八條基本原則,其中,自治性、松散耦合、抽象、以及需要正式契約被視為形成面向服務架構根本基礎的核心原則。文獻【I6】定義面向服務架構是一種設計方式,它指導著業(yè)務服務在其生命周期中包括創(chuàng)建和使用的方方面面。面向服務架構也是一種定義和提供IT基礎設施的方式,它允許不同應用相互交換數(shù)據(jù)、參與業(yè)務流程,無論它們各自背后使用的是何種操作系統(tǒng)或采用了何種編程語言。其中文獻【17】定義面向服務架構是一個軟件架構,它包含四個關鍵概念:應用程序前端、服務、服務庫和服務總線。一個服務包含一個合約、一個或多個接口和一個實現(xiàn)。IdeaGroup對比了面向服務的體系結構和現(xiàn)存技術的不同和相同之處,用參照的方式陳述了面向服務架構的概念。7 碩l:學位論文第二章面向服務絮構理論oj技術Service-architecture.tom將面向服務架構定義為,“質上是服務的集合。服務間彼此通信,這種通信可能是簡誓的數(shù)據(jù)傳送,也可能是兩個或更多的服務協(xié)調進行某些活動。服務問需要某些方法進行連接【l引。所謂服務就是精確定義、封裝完善、獨立于其它服務所處壞境和狀態(tài)的函數(shù)”??傮w來說,面向服務架構是一種架構模型,它可以根據(jù)需求通過網(wǎng)絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。面向服務架構模型描述了三種角色(服務提供者,服務請求者,服務注冊中心),三種基本活動(發(fā)布,查找,綁定),這與基本的Web服務架構相同[19】。圖2.1描述了面向服務架構的參考模型。圖2-1面向服務架構模型下面對面向服務架構模型中的三個基本活動進行分析。發(fā)布(Publish)H艮務,服務提供者向服務注冊中心發(fā)布服務描述,以使服務使用者可以發(fā)現(xiàn)和調用,發(fā)布的信息包括與該服務交互必要的所有內容,如服務路徑,傳輸協(xié)議以及消息格式等圓】;查找(Findl服務,服務請求者直接檢索服務描述或在服務注冊中心來查找和定位滿足其標準的服務,查找服務的操作由用戶或者其它服務發(fā)起;綁定和調用(BindandInvoke)服務,在檢索服務描述之后,服務消費者繼續(xù)根據(jù)服務描述中的信息來調用服務。對應于這三種活動,涉及至.tl--種基本角色【2¨。服務提供者(ServiceProvider),即服務的創(chuàng)建者和擁有者,是一個可以通過網(wǎng)絡訪問的實體,它將自己的服務和服務描述發(fā)布到服務注冊中心,以便于服務請求者來定位,也可以因為用戶需求的改變而取消服務;服務請求者(ServiceRequester)從服務注冊中心定位其需要的服務,向服務提供者發(fā)送一個消息來啟動服務的執(zhí)行。它可以是一個請求的應用、服務或者其它類型的軟件模塊,完成發(fā)現(xiàn)提供所需服務的WSDL文檔,以及與服務通信的功能;服務注冊中,t】,(ServieeRegistry)作用是服務提供者在此發(fā)布自己的服務描述,服務請求者查找服務并獲得服務的綁定信息。實現(xiàn)增加、刪除、修改己發(fā)布的服務描述以及從注冊表中查詢服務的功能。由模型圖可以看出,面向服務的體系結構中的主要構件包括服務和服務描述。服務8 碩。f二學位論文第-二章面向服務架構理論與技術(Service)是一個由服務描述來描述的接口,而服務描述的實現(xiàn)就是該服務。服務是一個軟件模塊f221,獨立于技術的業(yè)務接口,可在不同業(yè)務過程中被重復調用,而且具體的服務實現(xiàn)不依賴特定實現(xiàn)語言與工具;服務描述(ServiceDescription),其本質是服務內容的標準化描述,提供了服務內容、綁定類型、傳輸協(xié)議和服務地址等,生成相應的完全的文檔,發(fā)布給服務請求者或服務注冊中心。2.1.2基本特征面向服務架構是一種粗粒度、松耦合的服務架構,其服務之間通過簡單、精確定義接口進行通訊,不涉及底層編程接口和通訊模型。這種架構特征歸納如下。(1)松散耦合。面向服務架構是“松散藕合”的組件服務,這一點區(qū)別于大多數(shù)其它的組件架構。歸納起來,在面向服務架構中松散耦合包括三個方面。接口藕合是將服務使用者和服務提供者在服務實現(xiàn)和客戶如何使用服務方面隔離開來。服務提供者和服務使用者間松散藕合背后的關鍵點是服務接口作為與服務實現(xiàn)分離的實體而存在1151。這使服務實現(xiàn)能夠在完全不影響服務使用者的情況下進行修改。技術耦合強調服務請求者和服務提供者的實現(xiàn)和運行不需要依賴與特定的某種技術,可以使用不同的技術實現(xiàn)。流程耦合強調服務不應與具體的業(yè)務流程相關,以便能夠用于多種不同的業(yè)務流程與應用,體現(xiàn)了服務的可重用性。(2)粗粒度服務。服務所公開功能的范圍,即為服務粒度(servicegranularity)。一般分為細粒度(fine—grainedservice)和粗粒度(coarse-grained)兩種。細粒度服務提供較小的功能單元。粗粒度服務針對復雜的業(yè)務邏輯,封裝了大塊的業(yè)務。服務粒度在設計時應該選擇合適的大小,必須在服務粒度設計上維護一種平衡,以獲得成本降低、靈活響應的好處。設計中在滿足一致性的前提下盡可能地進行粗粒度建模。(3)標準化的接口。面向服務架構通過服務接口的標準化描述,使得該服務可以提供給任何異構平臺和任何用戶接口使用。這一描述囊括了與服務交互需要的全部細節(jié),包括消息格式、傳輸協(xié)議和位置【231。該接E1隱藏了實現(xiàn)服務的細節(jié),允許獨立于服務基于的軟硬件平臺和編寫服務所用的編程語言。2.2Web服務技術W曲服務是由W3C(WoddWidew曲Consortium,萬維網(wǎng)聯(lián)盟)制定的一套開放的標準技術規(guī)范,其基于XML的三大關鍵技術SOAP,WSDL和UDDI,其最大的特點是允許不同的軟件應用程序能相互操作,無論這些程序是用什么編程語言實現(xiàn)、運行在什么樣的操作平臺或架構技術上。Web服務能使應用程序以一種松散耦合的方式組合起來,并實現(xiàn)復雜的交互。9 第二:章面向服務粲構理論’j技術2.2.1Web服務原理及概念Web服務體系工作組對Web服務提供了如下的參考定義:W曲Serviceprovidesastandardmeansofinteroperatingbetweendifferentsoftwareapplications,runningonavarietyofplatformsandframeworks。對Web服務更精確的解釋是【241,Web服務是建立可互操作的分布式應用程序的新平臺。Web服務平臺是一套標準,定義了一套標準的調用過程。從定義可以知道,Web服務在不同的軟件應用之問提供了標準的交互方式,使原來各孤立的站點之問的信息能夠相互通信、共享,而不用考慮應用程序的實現(xiàn)技術以及運行平臺。學術界對Web服務技術的研究趨于成熟,因此對其定義的解釋很多。本文在此提出對Web服務的理解,WebService=SOAP+H1]四+WSDL。其中,SOAP(SimpleObjectAccessProtocol,簡單對象訪問協(xié)議)是Web服務的主體。WSDL(WebServiceDescriptionLanguage,web服務描述語言)是一個XML文檔,它通過H丌P向公眾發(fā)布,公告客戶端程序關于某個具體的Web服務的URL信息、方法的命名,參數(shù),返回值等。2.2.2Web服務協(xié)議棧在Web服務環(huán)境中,工作任務是通過面向服務架構模型的三個角色之間的相互合作來完成的,要完成這種跨平臺的交互,必須有一套標準的Web服務規(guī)范,如服務描述格式、通訊格式、數(shù)據(jù)交換格式以及其它方面的規(guī)范,這就構成了web服務架構的協(xié)議棧嘲,如圖2.2所示。一f:作流業(yè)務處理WSFLBPEL4WS蔓UDDI壘兀服’司W(wǎng)SDL數(shù)磐象SOAP握:磕.’官:晷鴦圖協(xié)議棧層次結構從這樣的層次結構可以看出,由底向上,依次為基礎網(wǎng)絡層、傳輸層、信息包裝層、服務描述層、服務發(fā)現(xiàn)發(fā)布層、業(yè)務描述層。此外,服務質量、安全性、事物性、可靠性和可管理性貫穿了整個協(xié)議棧。W曲服務是建立在、和lO 碩-J二學位論文第二章面向服務架構理論’j技術基礎上的分布式技術【26】。Web服務需要通過網(wǎng)絡來訪問和調用,所以Web服務協(xié)議棧的基礎層是網(wǎng)絡層,使用HTTP標準網(wǎng)絡通訊協(xié)議。Web服務還可以支持其它的因特網(wǎng)協(xié)議,如SMTP、FTP等。信息包裝層采用的主要協(xié)議是SOAP,是基于XML的消息傳遞,是一個用于在分布式環(huán)境下數(shù)據(jù)交換的簡單、輕量級協(xié)議,它與編程語言、對象模型以及操作系統(tǒng)平臺都無關【2。71。服務描述層,采用的是Web服務描述語’言(WSDL),是用XML文檔來描述web服務的標準,是Web服務的接口定義語言,描述了服務所提供的操作、參數(shù)和參數(shù)類型;服務發(fā)布、發(fā)現(xiàn)層定義了服務如何公丌它們自己以及如何在網(wǎng)絡上相互發(fā)現(xiàn),對于要相互查找的服務,統(tǒng)一描述、發(fā)現(xiàn)和集成為查找和訪問服務定義了注冊中心和相關的協(xié)議,本質是服務的公共網(wǎng)址【281。由于WSDL文件中已經(jīng)定義了web服務的地址URL,外部可以直接通過WSDL提供的URL進行相應的Web服務調用,所以UDDI不是W曲服務必須的一個組成部分。最后一層是業(yè)務描述層,采用Web服務流語言(wsFL)、Web服務業(yè)務流程執(zhí)行語言(BPEL4WS),WSFL作為敘述網(wǎng)絡服務流程的語言,定義了服務操作的順序,服務間的交互方式;BPEL4WS定義了一起進行分布式事務處理的工作流操作、web服務事務(ws.Transaction)、Web服務協(xié)調(ws—Coordination),集成并替代了IBM的Web服務流語一言-(WSFL)和微軟的XLANG規(guī)范,用于應用程序和流程的集成【291。2.2.3Web服務實現(xiàn)技術面向服務架構是建立在分布式計算技術的基礎上,它使得分布在網(wǎng)絡上的軟件組件可以被發(fā)布,相互之間可以發(fā)現(xiàn)和調用。組件所提供的服務可以在任何地方、為任何人所獲得。Web服務是一種優(yōu)秀的分布式計算技術,在因特網(wǎng)或者企業(yè)內部網(wǎng)上通過使用標準的XML協(xié)議和信息格式來展現(xiàn)商業(yè)應用服務。通過使用開放的因特網(wǎng)標準:SOAP簡單對象訪問協(xié)議(用來服務調用)、WSDL(Web服務描述語言,用來服務描述)和UDDI(統(tǒng)一描述、發(fā)現(xiàn)和集成規(guī)范,用來服務的發(fā)布和集成1,使得服務發(fā)布者、Web服務平臺等相互獨立,從而消除了現(xiàn)存解決方案(如CORBA和DCOM)中的不足方面。(1)數(shù)據(jù)表示為XML。即ExtensibleMarkupLanguage(n-I"擴展標注語言),是基于文本的、自描述的結構化語言,完全獨立于平臺和編程語言,所以特別適合作為不同應用之間進行數(shù)據(jù)交換和消息傳遞的數(shù)據(jù)載體。它是是由W3C于1998年2月發(fā)布的一種標準,是SGML(StandardGeneralizedMarkupLanguage,標準通用標注語言)的一個簡化子集f30‘。XML具有可擴展、自描述性、獨立于平臺和應用等特點f311。需要注意的是XML不是HTML的替代品,XML和HTML是兩種不同用途的語言。XML是用來描述數(shù)據(jù),如何存放數(shù)據(jù)的,而HTML是用來顯示數(shù)據(jù)的,側重描述如何顯示數(shù)據(jù);HTML是與顯示信息相關的,而XML則是與描述信息相關的。 碩I:學位論文第二章面向服務架構理論oi技術(2)消息傳輸方式SOAP。即SimpleObjectAccessProtocol(簡單對象訪問協(xié)議),是一種輕量的、簡瞥的、基于XML的分布式計算協(xié)議,它允許在一個分散、分布式的壞境中交換信息。SOAP具有跨硬件平臺、操作系統(tǒng)、編程語言和網(wǎng)絡硬件平臺的高度互操作性。Web服務就是采用SOAP作為標準通信協(xié)議。SOAP規(guī)范由四部分組成:SOAPenvelop(SOAP信封)、encodingrules(soAP編碼規(guī)則)、SOAPRPCrepresentation(SOAPRPC表示)和SOAPbinding(SOAP綁定)【32J。SOAP信封結構是SOAP消息的信息框架。對于SOAP的工作機理,可以理解為一個開放協(xié)議SQ"=RPC+H1]rP+xML。XML作為數(shù)據(jù)傳送的格式,RPC作為一致性的調用途徑以及HTTP作為底層通訊協(xié)議,允許服務提供者和服務請求者經(jīng)過防火墻在因特網(wǎng)進行通訊交互。如圖2.3所示。圖2-3SOAP工作原理(3)描述方式WSDL。即W曲ServiceDescriptionLanguage(Web服務描述語言),是Web服務描述語言。簡單的說,就是一個XML文檔,它將Web服務描述定義為一組服務訪問端點,客戶端可以通過這些服務訪問端點對包含面向文檔信息或面向過程調用的服務進行訪問。本文在集成應用一章中將會闡述WSDL文件的創(chuàng)建。一個完整的WSDL文檔包括五個部分【331。types元素表示W(wǎng)曲服務中使用的數(shù)據(jù)類型,它是獨立與機器和語言的類型定義,這些數(shù)據(jù)類型被標簽所使用;message元素表明W曲服務包含的消息,它定義了Web服務函數(shù)的參數(shù),在WSDL中,輸入?yún)?shù)和輸出參數(shù)要分開定義,使用不同的標簽體標識,標簽定義的輸出輸入?yún)?shù)被標簽使用;portType元素:表示w曲服務執(zhí)行的操作。該標簽引用標簽的定義來描述函數(shù)名(操作名、輸入輸出參數(shù));binding元素表示W(wǎng)曲服務使用的通訊協(xié)議。其作用是將標簽中定義的所有操作在此綁定實現(xiàn);service元素用來確定每--標簽的端口地址。其中,、屬于抽象定義層,屬于具體定義層。所有的抽象可以是單獨存在于別的文件中,也可以從主文檔中導入。12 碩+l二學位論文第二章面向服務架構理論與技術(4)發(fā)布、發(fā)現(xiàn)方式UDDI。即通用描述、發(fā)現(xiàn)和集成規(guī)范,是由Microsoft,IBM,Ariba三家公司在2000年7月提出。UDDI是Web服務的信息注冊規(guī)范,以便被需要該服務的用戶發(fā)現(xiàn)和使用它。通過UDDI,Web服務可以真正實現(xiàn)信息的“一次注冊,到處訪問”,UDDI標準定義了Web服務的發(fā)布和發(fā)現(xiàn)的方法,它為Web服務在技術層次上提供了三個重要的支持:標準化的、透明的、專門描述Web服務的機制;調用Web服務的簡單機制以及可訪問的W曲服務注冊中心。UDDI注冊中-t二,(UDDIRegistry)是所有提供UDDI注冊服務的站點的通稱。分為公共UDDI注冊中心和私有UDDI注冊中心。其所提供的信息包含三個部分【蚓,白頁(WhitePage)說明提供W曲服務的公司(人)信息;黃頁(YellowPage),包括了基本標準分類法的行業(yè)類別;綠頁(GreenPage),說明接V1(Web服務提供)的詳細信息。UDDI標準包括了對Web應用服務的接口的定義,使得能通過編程實現(xiàn)對UDDI注冊中心的信息訪問。使用UDDI注冊中心的基本工作原理是服務提供者首先使用UDDI注冊中心注冊服務,服務使用者然后在UDDI注冊中心中查找所需的服務,當它發(fā)現(xiàn)需要的服務時,使用者將直接‘彳提供者綁定來使用該服務。2.3服務組件架構2005年11月30同,BEA宣布將與IBM、Oracle、SAP等公司一起,支持一種構建和包裝應用程序的新規(guī)范,即服務組件架構(ServiceComponentArchitecture,SCA)t351。SCA是一個用于服務調用和構建的、與實現(xiàn)語言無關的組件編程架構或者說是編程模型,是面向服務架構思想的一種實現(xiàn)形式。目前的組件的最大問題就是組件接口和傳輸協(xié)議是一種緊密耦合的情形。SCA就是為了將組件接口和傳輸協(xié)議解耦而出現(xiàn)的。面向服務架構是概念上的模型,SCA是為了構建面向服務架構系統(tǒng)而設計的,是對面向服務架構的一個特定實現(xiàn)。2.3.1服務組件架構規(guī)范SCA組件可以自由綁定各種傳輸協(xié)議,組件之間處于一種松散耦合的狀態(tài),不需要在自己的代碼中加入對方組件的接口代碼,為大規(guī)模的集成打下了良好的基礎。它是面向服務架構的實現(xiàn)方式之一,可以將不同的遺留應用方便的集成起來。SCA中組件和模塊以接口的方式提供服務,服務的調用者只需看到服務接口,而無須知道服務組件和服務模塊的內部細節(jié)。在服務實現(xiàn)方面,它易于被擴展為多種實現(xiàn)語言技術Java、C++、BPEL、腳本語言(如PHP、JavaScript),以及聲明性語言(如XQuery和SQL)t361,對這些語言的支持還包括支持它們所使用的框架和環(huán)境Tomcat、Jetty、Geronimo、OSGI等。在服務連接方面,13 碩士學位論文第二章面向服務架構理論與技術SCA支持各種常見的通信和服務訪問技術如Web服務、JMS、EJB、RPC等。安全、事務、可靠性消息等其基礎設旌環(huán)境,可以通過定義于獨立于實現(xiàn)組件的策略(Policies)來進行設置,這些屬性都配置在配置文件中。下面對SCA的核心概念服務組件、服務模塊等予以分析。(1)服務組件(SCAComponent)。在SCA模型中,服務組件是集成的基本單元。組件是業(yè)務功能的基本元素,通過模塊組合組件成為完整的商業(yè)解決方案。組件封裝了服務,因而是服務的提供者。不過在有些情況下,組件的實現(xiàn)需要依賴于其它服務,因此組件也可能是服務的請求者。圖24顯示了SCA組件的服務組件組成?!狫ava——BPEL—Composite圖2-4SCA組件由圖可以看出,一個組件由服務(service)、實現(xiàn)(implementation)、引用(reference)和屬性(property)四個元素構成。此外,幾乎所有的元素都有兩個可選的屬性:requires和policySets[37]o服務描述了這個組件對外提供的業(yè)務功能。通常一個組件會有若干個服務,每個服務包括一個接El(interface)和若干個綁定(binding),接12描述了該服務提供的操作(operation),而綁定則描述了該服務的訪問方式;組件實現(xiàn)即業(yè)務功能的實現(xiàn);引用描述了這個組件所依賴的外部服務;屬性是對組件實現(xiàn)的一種屬性參數(shù)注入。SCA作為一種服務組件架構,其與傳統(tǒng)組件架構的主要區(qū)別在于幾個方面。SCA是粗粒度的,而傳統(tǒng)組件架構以細粒度居多;SCA接口是標準的,主要是WSDL接口,WSDL是語言無關的;而傳統(tǒng)組件架構常以具體API形式出現(xiàn),具體API是語言相關的;SCA的實現(xiàn)是與語言無關的,傳統(tǒng)組件架構常綁定某種特定的語言;SCA可以通過組件容器提供QoS的服務,傳統(tǒng)組件架構完全由程序代碼直接控制。一個或多個組件的包裝就構成了服務模塊(SCAComposite)。把哪些組件放在一個模塊中主要取決于業(yè)務需求和部署上靈活性。模塊是SCA中的運行單位,由于模塊是一14 碩士學位論文第二章面向服務架構理論與技術個獨立部署的單元,因此給應用的部署帶來很大的靈活性。模塊的這些特點恰好適合于企業(yè)應用集成。模塊里包含若干組件、入口點(Service)、引用、屬性、連線(鏈接機制)等。在SCA服務模塊的結構圖如圖2—5所示。WebServiceSCABinding——JCA—JMS圖2-5SCA服務模塊-WebService—SCABinding—JCA—JMs組件在前面已經(jīng)做了詳細的分析說明,連線(Wire)和提升(Promote)將在下節(jié)單獨地加以分析,在此分析幾個重要的屬性Ⅲ】。模塊屬性(property)是對其內部實現(xiàn)進行配置的一種途徑,通常的用法是在模塊這一層定義屬性,然后由內部的組件屬性通過一定方式,如source屬性來引用這些模塊屬性;模塊服務(service)是通過提升模塊中某些組件的服務而形成的。一個模塊服務來自哪個服務,是用service元素的promote屬性定義的,屬性值的格式是“組件名/月&務名’’;模塊引用(reference)是通過提升模塊某些組件的引用而形成的。在reference元素中,name屬性說明了引用的名稱,在模塊中是唯一的;promote屬性定義了模塊引用來自哪些組件引用,屬性值的格式是“組件名/71用名”,若多個組件引用被提升成為同一個模塊引用,那么這些組件引用之間需要用空格分隔。此外,multiplicity屬性和target屬性與組件引用中的含義一樣,前者指明鏈接外部服務個數(shù),后者表示鏈接的外部服務。在模塊引用中還包含接口和綁定信息,分別用interface和binding元素來定義。(2)連線(Wire)和提升(Promote)。連線和提升是SCA中極其重要的術語,兩者皆為實現(xiàn)SCA應用集成的機制。當一個模塊內部的組件之間,或者模塊和模塊內的組件之間有調用的關系時,是通過SCA內部的Wire機制實現(xiàn)的。Wire是SCA架構的運行環(huán)境需要提供的功能,它把來源(Sources)弓I用連接到目標(Targets)服務。Promote本質上就15 第二章面向服務架構理論與技術是Wire,開發(fā)人員可以根據(jù)業(yè)務需求將某些組件的一些Service和Reference提升為整個模塊的Service和Reference,用來被模塊的外部世界訪問。定義連線的一種方法是在組件的配置文件中配置target屬性,格式為“組件名/服務名”,當組件只有一個服務并且接口類型與引用的相匹配時,服務名為可選從而可以省略。另一種方法就是用模塊(Composite)的wire子元素定義從一個引用到一個服務的連接。圖2-6為一個連線和提升的結構示例。SCAComposite≥尹腳謄,>P>組件2澄>≯j》、蘿i>組件3≥÷.?!荨菀晦?至鎏》Reference/一Wire圖2-6SCA集成機制組件1實現(xiàn)的功能公開為模塊的服務“A”,用來被模塊之外的組件i鞲tm(模塊的Reference)。組件1有兩個引用,調用組件2、組件3;組件2,組件3提升為模塊的引用“T”和“U",,用來調用模塊之外的組件(模塊的Service)。2.3.2與其它集成技術比較服務組件架構通過連線和提升來實現(xiàn)集成,是一種企業(yè)應用集成的方式。Web服務、JBI、Spring集成技術都有其特定的集成方式和策略,從而有其特定的集成特點,在此將它們與服務組件架構集成技術來進行比較,從而體現(xiàn)服務組件架構用來集成的優(yōu)勢。(1)SCA與Web服務。Web服務使用WSDL統(tǒng)一了服務接口的描述,使用SOAP統(tǒng)一了數(shù)據(jù)傳輸和交換格式,在增強應用之間的可連接性以及互操作性方面邁出了一大步,但是其缺少一個統(tǒng)一調用的模型,包括調用Web服務和其它類型的服務;此外Web服務沒有涉及如何去構建Web服務以及這個服務所需要使用的配置策略和服務之間的依賴關系,解決這些問題恰恰是SCA的使命之一。SCA發(fā)展了Web服務,它不但定義了一個服務組件模型,還提供了服務組裝模型,16 頎。I:學位論文第二章面向服務架構理論.‘j技術服務模型提供了比Web服務更多的功能,允許服務開發(fā)者不單定義服務的接口而且還可以定義這個服務和其它服務的依賴關系,以及這些交互(事務、安全以及可靠性傳輸)之間的策略還有服務所可能提供的配置功能。(2)SCA與JBl(JavaBusinessIntegration)。JBI足Sun公司發(fā)布的一個用于Java應用組件進行集成的一個標準,隨著在JSR208中被定義,它也成為了把服務容器組裝為合成應用的標準。它提供了一種全新的容器,能夠接受任何類型的傳輸協(xié)議,一種以松散耦合的方式將所有不同類型的服務集成起來的容器。JBI主要由規(guī)格化消息路由器(NormalizedMessageRouter)、綁定組件(BindingComponents)以及服務引擎(ServiceEngines)組成,創(chuàng)建了一個用于各種組件服務集成的集成環(huán)境(容器)【3引。SCA是由IBM和BEA等公司提出的,是一個用于服務調用和構建的、與實現(xiàn)語言無關的組件編程架構,可見兩者的關注點是不同的。SCA是以接口作為切入點,從組件接口層將傳輸協(xié)議和接口實現(xiàn)解耦,是從編程的角度出發(fā)的,是一種全新的編程模型。JBI是以請求消息和響應消息作為切入點,在集成時將消息和傳輸協(xié)議解耦,形成一種和傳輸協(xié)議無關的標準消息,這樣形成一種全興的區(qū)別于現(xiàn)有應用服務器的集成容器,是從容器的角度出發(fā),一種全新的容器模型。(3)SCA與Spring。Spring框架普遍用于構建Java應用,它提供的IoC(InversionofControl,控制反轉)機制,一般采用JavaBeans的setter方式實現(xiàn)依賴注入。通過在Spring配置文件中描述bean的信息,控制反轉將根據(jù)此配置文件在容器中實例化bean,再通過BeanFactory(在spring的jar包中)找到實例化的bean。SCA組件主要通過接口進行交互,組件提供的服務是一個由接口定義的操作的集合,組件引用其它組件提供的服務也是通過該服務定義的接口來進行。SCA依賴注入方式是從JNDI或ServiceManager等獲得被調用者,類似ServiceLocator模式【391。在本質上SCA和Spring實例化對象的思想是一致的,兩者都在不同程度上應用了依賴注入模式,和基于接口的實現(xiàn)。SCA可以將Spring封裝為組件來使用。也就是說,Spring框架能用于創(chuàng)建服務組件,并通過其依賴注入特性來連線構件中的服務組件。但是,兩者也有其不同之處,Spdng只能基于Java進行實現(xiàn),而SCA則可以采用多種實現(xiàn)技術;Spring面向的連接是基于同一業(yè)務過程之內的細粒度組件,而SCA面向的可以為不同業(yè)務流程問的服務組件。2.4服務數(shù)據(jù)對象服務數(shù)據(jù)對象(ServiceDataObject,SDO)是由IT界幾個重要的軟件開發(fā)商聯(lián)合制定的一種數(shù)據(jù)應用程序開發(fā)框架,是一種數(shù)據(jù)編程模型。它包括體系結構和相應的API;定義了統(tǒng)一的方法來訪問和操作來自異構數(shù)據(jù)源的數(shù)據(jù),包括關系數(shù)據(jù)庫(RDB)、實體EJB組件、XML頁面、Web服務、JCA和JSP等。在基于面向服務架構的企業(yè)應用集17 碩I二學位論文第二章面向服務架構理論‘j技術成中,遺留系統(tǒng)中分布著各種不同的數(shù)據(jù)源,運用SDO來統(tǒng)一地訪問它們,同時將SDO作為SCA元素之問傳遞的參數(shù)或返網(wǎng)值類型,能夠實現(xiàn)業(yè)務代碼與數(shù)據(jù)代碼的解藕。2.4.1服務數(shù)據(jù)對象的提出當阿數(shù)據(jù)對象編程面臨著幾個方面的挑戰(zhàn),從而服務數(shù)據(jù)對象被提了出來。首先,在面向服務架構的企業(yè)編程模式中,一個不可或缺的部分就是業(yè)務數(shù)據(jù)模型,以及數(shù)據(jù)操作和交換。SCA組件模型并沒有涉及到數(shù)據(jù)編程方面,因此需要結合其它技術進行解決。在丌發(fā)的過程中,數(shù)據(jù)可能會來自于不同的數(shù)據(jù)源。這些異構數(shù)據(jù)源的存在使應用開發(fā)者面臨很大的挑戰(zhàn)。其次,靜態(tài)、強類型接口為應用開發(fā)者提供了一種簡單易用的編程模型。對象/關系持久化機制EntityEJB、JDO、Hibernate提供了訪l、u】數(shù)據(jù)的強類型Java接口,這些接口為丌發(fā)者提供了簡便的編程模型(如student.getName())。相反,JDBC的ResultSet和RowSet接口,僅僅提供了動態(tài)的、沒有類型的數(shù)據(jù)接口(如rs.getString(“Name’’”。但是,單獨的靜態(tài)或者動態(tài)API都是不夠的,兩者都足必須的。靜態(tài)API是簡單易用應用開發(fā)者們需要的數(shù)據(jù)APl,但是在另外一些情況下,數(shù)據(jù)的靜態(tài)Java接口既不可行也不是所想要的。比如,一些動態(tài)查詢生成的結果數(shù)據(jù)的范圍是不確定的,這種情況下,靜態(tài)Java接口是不可行的。因此,對于一種統(tǒng)一的數(shù)據(jù)編程技術而言,需要同時無縫的支持靜態(tài)和動態(tài)數(shù)據(jù)APIl刪。最后,許多應用都天然需要一種離線數(shù)據(jù)訪問模式。應用中讀取一組數(shù)據(jù),短時間內保留在本地,操作這些數(shù)據(jù),然后將這些修改提交到數(shù)據(jù)源中。EntityEJB、JDO、Hibernate技術均為實時的數(shù)據(jù)處理技術,在數(shù)據(jù)處理的過程中保持和后端數(shù)據(jù)源的連接??梢?,已有的數(shù)據(jù)技術和框架,無論是EJB、Hibernate或是Web服務本身都是從某一角度和層面上解決了問題,沒有一個統(tǒng)一的比較全面的技術來解決問題。SDO就是在這樣的一個數(shù)據(jù)編程面臨的挑戰(zhàn)背景下形成和發(fā)展的,實現(xiàn)了對異構數(shù)據(jù)源的統(tǒng)一訪問,對靜態(tài)和動態(tài)數(shù)據(jù)API的統(tǒng)一支持和離線編程模型的支持。它的根本目的就是要實現(xiàn)數(shù)據(jù)代碼和業(yè)務代碼的解耦。2.4.2體系架構分析服務數(shù)據(jù)對象是一種編程模型,有其自己的體系結構。本節(jié)將闡述服務數(shù)據(jù)對象的體系結構。SDO采用離線數(shù)據(jù)圖的設計理念。數(shù)[](DataGraph)是一組樹形或者圖形結構的數(shù)據(jù)對象。離線的訪問方式是指客戶端從數(shù)據(jù)源提取并構建數(shù)據(jù)圖,然后在應用中操作數(shù)據(jù)圖并記錄相應的操作,在動作結束后由數(shù)據(jù)訪問服務(DataAccessService,18 碩l:學位論文第二章面向服務架構理論與技術DAS)[48】批量的將相應的改變反映回數(shù)據(jù)源。如XML文件DAS可以從XML文件中讀取和存儲數(shù)據(jù)圖,JDBCDAS從關系數(shù)據(jù)庫中讀取和存儲數(shù)據(jù)圖。圖2—7顯示了SDO的架構圖降¨,從圖中可以看到客戶端、數(shù)據(jù)圖、DataAccessService、數(shù)據(jù)源(DataSource)之間的調用關系。圖2-7SDO架構其中,SDOMetadata是SDO專門提供的統(tǒng)一的API來調用不同的DataAccessService,可以直接得到DataObject對象和DataGraph對象。SDO是語言中立的,因此可以被用于各種編程語言。在SDO中最核心的概念是DataGraph和DataObject。數(shù)據(jù)圖對整個數(shù)據(jù)對象進行封裝。任何一個數(shù)據(jù)對象都會存在一個屬性集。對于每個屬性,其對應于一個數(shù)據(jù)或是對應于一個數(shù)據(jù)對象,數(shù)據(jù)類型有String、int、double等類型。圖2.8是詳細的SDO的對象的關系類圖。由關系類圖知,SDO的基本概念有DataGraph、DataObject外,還有變更摘要(ChangeSummary)、屬性(Property)、類型(Type)和順序(Sequence)的概念。以JavaBean來類比DataObject,屬性類似于JavaBean的屬性名稱;類型對應于JavaBean屬性的類型,如String類型等;順序(Sequence)用來保存屬性的賦值順序和一些非結構的數(shù)據(jù)。數(shù)據(jù)圖(DataGraph)是一組屬性結構數(shù)據(jù)對象的封裝,是在各個組件之間傳遞的基本單元【42】。即數(shù)據(jù)圖是一個完備的、自描述的、可操作的數(shù)據(jù)對象。每一個數(shù)據(jù)圖包含唯一的一個根數(shù)據(jù)對象和變更摘要。一般來說,數(shù)據(jù)圖的構建是通過數(shù)據(jù)源或是服務來實現(xiàn)的。當前的數(shù)據(jù)源有關系數(shù)據(jù)庫、XML文件、EJB以及XML數(shù)據(jù)庫等。19 碩士學位論文第二章面向服務架構理論與技術btaAccessService|DataGraph1》b剛咄ct∥。{/ChangeSummary◇木~Sequence圖2-8SDO對象關系數(shù)據(jù)對象(DataObject)類似JavaBean的一個實例,它用來保存數(shù)據(jù)或者包含下級的數(shù)據(jù)對象,是整個SDO最核心的對象。每一個數(shù)據(jù)對象都有一個相應的類型定義。這一類型可以被看作是數(shù)據(jù)對象的元數(shù)據(jù)。每一個數(shù)據(jù)對象均有定義一系列的屬性。這些屬性可以是沒有順序,也可以定義在一個序列中。.此前提到SDO從某個角度而言和JavaBean類似,但是其也有與眾不同的特性類型轉換、多值屬性、開放性屬性、屬性索引。數(shù)據(jù)對象的操作主要有兩個方面:創(chuàng)建及刪除,以及其屬性的設置??梢杂胕sSet(Property)來判斷屬性是否已經(jīng)被設置,對于多值屬性、單值屬性其值的情況如表2—1所示。表2-1單值屬性和多值屬性變更摘要(ChangeSummary)用來保存數(shù)據(jù)對象的記錄修改的歷史,可以用來有效的更新后端數(shù)據(jù)源的數(shù)據(jù)記錄。變更摘要有打開和關閉兩種狀態(tài)。當其功能被激活的時候,變更摘要所記錄的信息包括從日志功能激活到停止的那個時間點,或者到讀取摘要的那個時間點。變更摘要中所記錄的一部分內容是數(shù)據(jù)對象原來的值,這些值可以通過getOldValues方法得到,其中的數(shù)據(jù)順序是由具體實現(xiàn)決定的。根據(jù)操作的不同,原值記錄的內容有所不同。刪除操作時,記錄被刪除的數(shù)據(jù)對象及其全部屬性;修改時,僅記錄被改變的屬性。這些過去值保存在以ChangeSummary.Setting作為接El的實例中。 碩I:學位論文第二章面向服務架構理論.‘j技術可以使用getOldSequence方法獲取所記錄的數(shù)據(jù)對象的序列。如果沒有任何記錄,則返回null。2.4.3與其它數(shù)據(jù)編程技術比較EJB、Hibernate編程技術是J2EE項目丌發(fā)中經(jīng)常會用到的兩種技術,在此將它們與服務數(shù)據(jù)對象編程技術比較,闡述服務數(shù)據(jù)對象編程的優(yōu)勢。(1)SDO和EJB技術對比。EnterpriseJavaBeans(EJB,企業(yè)級JavaBean)分為會話Bean(SessionBean),實體Bean(EntityBean)和消息驅動Bean(MessageDrivenBean)t釘1。EntityBean是域模型對象,用于實現(xiàn)O/R映射,負責將數(shù)據(jù)庫表中記錄映射為內存中的Entity對象。其核心是如何持久化數(shù)據(jù),將數(shù)據(jù)對象映射到關系數(shù)據(jù)庫,并將底層數(shù)據(jù)處理的細節(jié)屏蔽,讓開發(fā)者可以直接獲取數(shù)據(jù)。由此可見EJB是著眼于基于ORM的數(shù)據(jù)持久化技術。SDO著眼于數(shù)據(jù)本身、數(shù)據(jù)的模型和相關的操作,將數(shù)據(jù)抽象為適合業(yè)務邏輯使用的數(shù)據(jù)對象,并可以在數(shù)據(jù)對象和后端數(shù)據(jù)源之間進行轉換。具體而言,它們之間的不同如表2.2所示。表2-2SDO和EJB比較(2)SDO與Hibernate技術對比。Hibernate是目前最流行的ORM框架,是面向對象開發(fā)中常用的數(shù)據(jù)持久層技術。它將SQL操作完全包裝成對象化的操作,這種方式自動在對象和關系數(shù)據(jù)庫表之間進行映射,非常的方便、優(yōu)雅。這樣,程序員不再面對各種SQL語句和ResultSet的處理。而且這種映射綁定可以使數(shù)據(jù)對象和后端關系數(shù)據(jù)之問形成一種松耦合的關系,關系模型的變化并不影響應用程序的邏輯,只是影響映射綁定的定義。最新的Hibernate版本不僅支持關系數(shù)據(jù)源,還包括XML數(shù)據(jù)源。Hibernate和EJB的實體Bean類似,主要解決對象一關系系映射問題,提供了一個輕量級引擎。SDO的RDBDAS同樣致力于解決這樣一個問題,但是SDO所包含的功能遠大于這樣一個范疇??梢圆捎肏ibernate作為SDo的DAS。21 第_二章面向服務架構理論‘j技術2.5本章小結Web服務技術使用WSDL統(tǒng)一了服務接口的描述,使用SOAP統(tǒng)一了數(shù)據(jù)傳輸和交換格式。SCA實現(xiàn)了組件接口和傳輸協(xié)議的解耦。SDO封裝了異構數(shù)據(jù)源的數(shù)據(jù)以及成為SCA元素之間數(shù)據(jù)交互的數(shù)據(jù)類型,實現(xiàn)了業(yè)務代碼與數(shù)據(jù)代碼的解藕。這樣可以解決應用集成中緊密耦合的問題,是本文研究本章首先介紹了面向服務架構的概念及模型、基本特征和特點優(yōu)勢。接著提出對Web服務的理解,分析了Web服務技術。然后闡述了SCA規(guī)范及編程模型,比較了SCA與其它集成技術。最后,對服務數(shù)據(jù)對象編程的架構、數(shù)據(jù)對象、數(shù)據(jù)圖等進行了分析,其本質是實現(xiàn)數(shù)據(jù)代碼和業(yè)務代碼的解耦,并對SDO和EJB、Hibernate技術進行了比較分析,闡述了SDO的優(yōu)勢。 碩上學位論文第三章面向服務架構的企業(yè)應用集成為解決企業(yè)中不同部門和系統(tǒng)之I’日J信息孤島等問題,整合利用企業(yè)內部的遺留系統(tǒng),企業(yè)應用集成已成為信息化發(fā)展的熱點。在對企業(yè)應用集成技術的研究中,不應把注意力放在技術細節(jié)上,類似于如何解決異構平臺,如何實現(xiàn)不同編程語言之間的通信,如何實現(xiàn)不同數(shù)據(jù)庫平臺的數(shù)據(jù)共享等問題,而是要跳出技術這一層面,站在業(yè)務層面對系統(tǒng)集成設計,只有這樣才能買足當前企業(yè)應用系統(tǒng)的業(yè)務變化需求,才能構建更加敏捷、高效的lT系統(tǒng)?;诿嫦蚍占軜嫷钠髽I(yè)應用集成遵循面向服務架構以服務為核心的原則,為業(yè)務為中心的系統(tǒng)集成提供了很好的解決方案。下面將對企業(yè)應用集成理論,基于面向服務架構的企業(yè)應用集成進行研究。Web服務、服務數(shù)據(jù)對象技術是面向服務架構的實現(xiàn)方式,在此,本章重點分析了基于這兩種技術來實現(xiàn)基于面向服務架構的企業(yè)應用集成。3.1企業(yè)應用集成企業(yè)應用集成是近年來國內外研究的一個熱點領域。隨著市場競爭的不斷加劇,企業(yè)擁有的IT系統(tǒng)不斷增多,而系統(tǒng)之間相互進行數(shù)據(jù)或信息交換是大勢所趨,這就引發(fā)了不同系統(tǒng)的集成問題。它是一種全新的戰(zhàn)略企業(yè)解決方案,能融合企業(yè)的遺留應用,促使企業(yè)利用現(xiàn)有信息資源來快速提供新的產(chǎn)品和服務,從而使企業(yè)的業(yè)務管理資源和各個環(huán)節(jié)達到高效運作,最終促使企業(yè)效益的穩(wěn)步提高。3.1.1企業(yè)應用集成概述在過去,應用程序被認為是與孤立的問題相對應的一個個解決方案。體系結構的設計并沒有把它當作是整個企業(yè)內信息系統(tǒng)的一部分,這導致了過去的應用程序與其它應用程序協(xié)同工作的能力十分有限,更嚴重的是導致企業(yè)內部形成一個個“信息孤島"。對此,企業(yè)從整體來考慮企業(yè)的信息化需求,根據(jù)實際情況,對各個應用系統(tǒng)進行總體規(guī)劃,選擇一個合適的集成平臺,把企業(yè)的各個“信息孤島’’有機的集成起來,這種解決方案不管是從實施難度,還是從實施成本、周期和技術上考慮都是切實可行的㈣。企業(yè)應用集成應運而生。企業(yè)應用集成是一個從企業(yè)內部開始,并快速發(fā)展起來的領域,形成這一趨勢有多種影響因素【4引,不僅包括對客戶關系管理(cRM)、供應鏈管理(scM)、企業(yè)資源計劃(ERP)、數(shù)據(jù)倉庫以及其它重要的內部系統(tǒng)之間無縫地共享和交換數(shù)據(jù)的需要;也包括由于因特網(wǎng)上的企業(yè)合并以及激烈的競爭所帶來的商業(yè)需求的快速變化等,這些因素使 碩:.1:學位論文第三章面向服務粲構的企業(yè)應用集成企業(yè)應用集成備受關注。簡單地說,企業(yè)應用集成是指將業(yè)務流程、應用軟件、硬件和各種標準聯(lián)合起來,在多個企業(yè)應用系統(tǒng)之間實現(xiàn)無縫集成,使其像一個整體一樣進行業(yè)務處理和信息共享,使氽業(yè)的整個業(yè)務管理資源等各個環(huán)節(jié)達到協(xié)調運轉效率優(yōu)化,從而最終實現(xiàn)企業(yè)效益的提高。3.1.2企業(yè)應用集成層次每個企業(yè)都會有自己的一套集成解決方案,從而企業(yè)應用集成解決方案會呈現(xiàn)多種多樣地形式。對要實施的企業(yè)應用集成而言,企業(yè)應用集成是分層次的。企業(yè)應用集成涉及到結構、硬件、軟件以及流程等企業(yè)系統(tǒng)的各個層面。一般來說,企業(yè)信息系統(tǒng)(EmerpriseInformationSystem,EIS)由數(shù)據(jù)庫、業(yè)務邏輯以及用戶界面三個層次組成。因此,從EIS本身層次結構來劃分,企業(yè)應用集成可以分為表示層集成、數(shù)據(jù)層集成和功能層集成三種類型。下面分析了這三種類型的集成,三種類型的集成表示層集成易于實現(xiàn),但有很大的局限性;數(shù)據(jù)層集成比表示層集成靈活,能提供廣泛的數(shù)據(jù)訪問;功能層集成提供了最強的集成能力,解決問題的方法也最為靈活。(1)表示層集成。表示層集成是面向用戶的整合,指用統(tǒng)一的標準界面代替原有系統(tǒng)的界面,新界面看起來好像是一個單一的應用系統(tǒng),但實際上卻可能調用幾個遺留系統(tǒng)。表示層是一種原始但比較有效的集成方法,可以把用戶界面作為公共集成點來集成不同的系統(tǒng),實現(xiàn)與現(xiàn)有系統(tǒng)的業(yè)務邏輯或封裝的應用(如ERP、CRM)進行集成。下圖3.1給出了表示層集成的模型,在已有的兩個不同軟件的顯示界面上,建立了公共的顯示界面。瀏覽器是這種集成中常用的技術。表示層集成易于實現(xiàn),但存在很大的局限性,集成只發(fā)生在顯示界面層而不是發(fā)生在應用軟件或數(shù)據(jù)的互聯(lián)中。圖3-1表示層集成模型 碩-L學位論文第三章面向服務架構的企業(yè)應用集成(2)數(shù)據(jù)層集成。數(shù)據(jù)層集成是指跳過顯示界面與業(yè)務邏輯模塊,直接進入應用軟件的數(shù)據(jù)結構或數(shù)據(jù)庫來創(chuàng)建新的集成,具體包括數(shù)據(jù)共享、數(shù)據(jù)轉化、數(shù)據(jù)移植及數(shù)據(jù)復制等。這樣的集成可能只需要簡單訪問軟件所使用的數(shù)據(jù)庫管理系統(tǒng)(DBMS),也可能需要與應用程序所管理的文件或用戶數(shù)據(jù)庫進行更加復雜的集成【釣】。數(shù)據(jù)層集成是現(xiàn)有企業(yè)應用集成解決方案的最普遍的一個形式。與表示層集成相比,它更加靈活,能提供更廣泛的數(shù)據(jù)訪問,允許用戶訪問完整的一套信息或其中_部分。數(shù)據(jù)集成一旦完成,可以被其它集成方案復用。而缺點在于幾個方面,第一,不能實現(xiàn)信息的實時交換,只能進行批量的數(shù)據(jù)處理。第二,由于各個系統(tǒng)維護自己的數(shù)據(jù),因此存在大量的冗余信息。第三,由于需要維護兩套單獨的系統(tǒng),會增加長期成本。如圖3.2所示,顯示了數(shù)據(jù)層集成模型。圖3-2數(shù)據(jù)層集成模型件(3)功能層集成。功能層集成是在業(yè)務邏輯層上完成集成的,可通過軟件接口集成,現(xiàn)大多采用函數(shù)或方法集成。方法或函數(shù)的集成是一種客戶端與服務器之間的請求/響應的交互。目前主要采用提供調用的應用程序接口(APIs)、遠端過程調用(RPCs)、CORBA、Java遠程方法調用(RMI)、分布式對象技術(DOT)、面向消息的中間件(MOM)以及Web服務等各種軟件技術。面向函數(shù)和方法的集成一般來說是處于同步模式的,即基于客戶(請求程序)和服務器(響應程序)間的請求響應交互機制一71。如圖3.3所示,功能層集成比表示層集成和數(shù)據(jù)層集成更靈活,它不僅能解決前兩種方法可解決的問題,還能解決更多難題。其實現(xiàn)方法與表示層集成和數(shù)據(jù)層集成不同,它通過訪問1日顯示機 碩l:學位論文第_三章面向服務架構的企業(yè)應用集成制的代碼或以前用來獲取數(shù)據(jù)的代碼來集成。圖3-3功能層集成模型功能層集成提供了最強的集成能力,解決問題的方法也最為靈活。但是,在有些情況下,某些軟件的應用功能很難訪問,就不能采用功能層集成;而且,由于需要在業(yè)務邏輯層進行集成,它的復雜度要遠遠大于數(shù)據(jù)層集成和表示層集成。3.2面向服務架構與企業(yè)應用集成企業(yè)應用集成是將過程、軟件、標準和硬件聯(lián)合起來,在兩個或更多的系統(tǒng)之問實現(xiàn)無縫集成,使它們就像一個整體一樣。集成的目標是無約束地連接分布的應用程序,并實現(xiàn)應用程序間的數(shù)據(jù)和功能的共享,這種共享是以不對應用程序本身做大的修改為前提條件的。即在不損失或損害相關性、一致性和完整性的情況下,完成應用程序間的集成。隨著全球經(jīng)濟的一體化,敏捷的、不受限制的業(yè)務集成已經(jīng)成為面向服務架構的目標。面向服務架構通過應用組件和傳輸協(xié)議的松散耦合,即服務的即時綁定,從而實現(xiàn)業(yè)務組件的虛擬化,形成一個虛擬的集成架構,這樣使得服務集成不受任何限制,可以同時集成不同的組件以及集成遺留系統(tǒng)的各種應用,同時也可以隨時變換這些服務組件。面向服務架構具備松散耦合、粗粒度服務、位置和傳輸協(xié)議透明的特點更好的說明了它很適合于做企業(yè)應用集成。一是松散耦合的三個方面服務之間、接口和實現(xiàn)之間、業(yè)務組件和傳輸協(xié)議之間的松散耦合;二是粗粒度服務比面向對象的編程API要大一 碩士學位論文第三章面向服務架構的企業(yè)應用集成些,更接近用戶的實際操作;三是位置和傳輸協(xié)議透明保證服務組件位置發(fā)生變化也不必修改客戶端的應用程序,同時保證服務組件的傳輸協(xié)議如何變化也不必對客戶端調用程序的傳輸協(xié)議做改變。這樣,面向服務架構可以基于現(xiàn)有的系統(tǒng)投資來發(fā)展,而不需要徹底重新創(chuàng)建系統(tǒng)。如果將丌發(fā)力量集中在創(chuàng)建服務,利用現(xiàn)有的技術,結合基于組件的方法來開發(fā)企業(yè)應用集成項目上,將獲得許多方面的優(yōu)判4引。將現(xiàn)有的資產(chǎn)封裝成企業(yè)功能的服務,可以利用現(xiàn)有的資產(chǎn);集成點是規(guī)范而不是實現(xiàn),這提供了實現(xiàn)透明性,并將基礎設施和實現(xiàn)發(fā)生的改變所帶來的影響降到最低限度,更易于集成和管理復雜性;通過利用現(xiàn)有的組件和服務,可以減少完成軟件開發(fā)所需的時間,從而提高上市速度;通過以松散耦合的方式使用和組合服務,達到降低成本、節(jié)約開支的目的。3.3面向服務架構的應用集成分析面向服務架構的應用集成即基于面向服務架構的企業(yè)應用集成。上面分析到功能層集成是在業(yè)務邏輯層上完成集成的,比表示層集成和數(shù)據(jù)層集成更靈活?;诿嫦蚍占軜嫷钠髽I(yè)應用集成解決方案遵循功能集成的思想,以服務為中心,在IT系統(tǒng)架構設計時跳出技術層面,站在業(yè)務層面對IT系統(tǒng)集成設計。它提供了一個抽象的接口,通過這些接口,系統(tǒng)可以進行交互,而不是使用低層的協(xié)議和自定義的編程接口來規(guī)定系統(tǒng)如何與其它系統(tǒng)進行通訊。應用程序只需封裝成服務,通過服務提供的接口,調用者不需知道服務的底層實現(xiàn)技術和其所在的具體位置,實現(xiàn)服務的調用。因而可以很好的解決企業(yè)應用集成的問題。Web服務、服務組件架構技術都是基于面向服務架構,通過屏蔽底層技術及其變更來提供業(yè)務邏輯,可以為不同類型、不同接口的組件提供了統(tǒng)一調用的方法,而不管所使用的是哪種具體編程語言以及運行平臺,從而大大降低了應用程序集成的復雜性。但是,服務組件架構技術更好的發(fā)展了Web服務技術,它不但有服務組件模型,也提供了服務組裝模型。一些w曲服務技術沒有解決或者涉及到的問題在服務組件架構技術中有很好的實現(xiàn)機制。Web服務應用集成在創(chuàng)建數(shù)據(jù)、服務和流程模型時考慮不多,而它們是要被廣泛重用于當前服務領域或不同服務領域的。各種傳輸協(xié)議不可以自由綁定,應用是通過傳輸層或中間APIs直接發(fā)送SOAP消息的,這為更換傳輸協(xié)議或中間件增添了困難。W曲服務沒有涉及如何去構建W曲服務以及如何構建其它類型服務的問題。此外,服務的組合(servicecomposition)問題是面向服務架構中的一個基礎又很重要的主題【49】。 碩f:學位論文第二章面向服務架構的企業(yè)心用集成3.3.1Web服務應用集成Web服務應用集成即基于Web服務的企業(yè)應用集成。在分析Web服務是如何來實現(xiàn)企業(yè)應用集成之前,在此先對Web服務是如何使用其實現(xiàn)技術來工作予以闡述。當前,Web服務技術是面向服務架構的一種主流實現(xiàn)方式,后者是概念模式,面向商業(yè)應用而前者則是實現(xiàn)模式。Web服務提供了一種分布式的計算技術【50j,用于在岡特網(wǎng)或者企業(yè)內部網(wǎng)上通過使用標準的XML協(xié)議和信息格式來展現(xiàn)商業(yè)應用服務。使用標準的XML協(xié)議,可使得Web服務在平臺、語言和發(fā)布者之間能夠互相獨立。通過開放的因特網(wǎng)標準WSDL、UDDI、SOAP和BPEL等,Web服務消除了現(xiàn)存解決方案f如CORBA和DCOM)中的互用性問題。圖3-4闡明了這些技術的:[作過程。圖3-4Web服務工作流程境根據(jù)W曲服務工作流程圖,下面對其工作過程予以分析。服務提供者通過服務注冊中心發(fā)布自己的We;b服務,以供服務請求者查找和調用,服務請求者(Java、VB等應用程序)通過服務注冊中心查找到Web服務描述文件,服務注冊中心授權給服務請求者,繼而通過WSDL描述文檔創(chuàng)建相應的SOAP請求消息。Web服務放在具體的可執(zhí)行環(huán)境(J2EE、COILBA、JMS)中,服務描述與可執(zhí)行環(huán)境通過一個映射層相分離,映射層通常以代理(Proxy)或樁(Stub)的形式實現(xiàn);SOAP請求通過H訂P發(fā)送給可執(zhí)行環(huán)境。Web服務在完成服務請求后,將SOAP返回消息通過HTTP傳回請求者,服務請求者再根據(jù)WSDL文檔將SOAP返回消息解析成自己能夠理解的內容。W曲服務實際上一個應用程序,它向外界提供~個能夠通過Web進行調用的API,即服務使用者能夠用編程的方法通過Web來調用該應用程序。W曲服務的這種技術特性給 碩上學位論文第三章面向服務架構的企業(yè)應用集成企業(yè)應用集成帶來了新的集成模式。在這種模式中,開發(fā)人員只需將需要復用的方法和業(yè)務功能構建為Web服務,然后使用相應的工具發(fā)布這些W曲服務,且這些服務可以得到統(tǒng)一的管理維護。不管這些服務是用什么工具、什么語言寫出來的,只要使用SOAP協(xié)議通過HTTP來凋用它即可。這樣,客戶端應用能夠以標準的方式、透明的調用、以及重新組裝所提供的服務,來達到集成的目的,即基于w曲服務的企業(yè)應用集成原理。如圖3—5所示,設計了一種基于w曲服務的企業(yè)應用集成架構,該架構將各種企業(yè)信息系統(tǒng)(ERP,SCM,CRM等)通過Web服務被松散地集成在一起。當服務請求者需要調用某個服務時,它通過內部應用程序使用UDDI注冊中心提供的目錄去查找該服務,通過WSDL得到如何凋用該服務的信息;然后,根據(jù)這些信息到soAP服務器中去調用服務提供者發(fā)布的服務,在這罩應用服務器扮演者服務提供者的角色。一旦服務請求者從UDDI注冊中心得到調用所需服務的信息,則通信就在服務請求者和服務提供者之間直接進行【511,而無需經(jīng)過服務代理。圖3-5基于Web/l艮務的EAI框架在這里,Web服務適配器是一個連接到后端服務器的Java應用程序,對于每個SoAP服務請求,它都去調用一個后端應用。適配器設計模式,是個結構型模式,有適配者(adapter)和被適配者(adaptee)。在Java應用開發(fā)中,經(jīng)常使用Java思想的組合和繼承機制來實現(xiàn)這種模式。在實際的使用中,Web服務有兩種調用方式,一是單向的調用模式,服務請求者調用服務提供者,二是雙向的“服務提供者+服務請求者"調用模式,即兩者之間相互調用。對于這兩種調用模式,分別在此對適配器的設計給出解決方案。圖3—6所示類圖展示了單向調用模式時適配器的實現(xiàn)結構。 碩}?學位論文第三章面向服務架構的企業(yè)心用集成IAdapter圖3-6單向模式適配器實現(xiàn)如圖中所示,該方案在服務請求者一方添加對服務提供者的適配器,這樣就可以通過適配器實現(xiàn)與服務提供者的交互。對于雙向的調用模式,解決方案是在兩個服務都要提供針對另一方的適配器。如圖3.7類圖所示。圖3-7雙向調用適配器實現(xiàn)通過這種適配器模式,為進行服務連接提供了一種標準化的機制,各個不同應用可以通過它進行調用。在這種集成技術中,集成的對象是一個個的Web服務或者是Web服務的業(yè)務處理。SOA的核心實質是實現(xiàn)服務和技術的完全分離,從而在最大程度上實現(xiàn)服務的重組和集成,以達到可重用性的目的。Web服務是實現(xiàn)SOA的具體實現(xiàn)方式,成為新一代面向服務的應用系統(tǒng)構建和應用系統(tǒng)集成的基礎設施。目前基于Web服務的企業(yè)應用集成成為廣泛使用的集成解決方案,已經(jīng)應用于企業(yè)軟件開發(fā)中。3.3.2Wob服務應用集成的優(yōu)點傳統(tǒng)的企業(yè)應用集成是一種緊耦合的集成模式,比較適用于那些對性能要求比較高的、需要多種層次集成的應用系統(tǒng)集成。而Web服務能夠以一種松散耦合的Web服務 碩l:學位論文第二三章面向服務架構的企業(yè)應用集成捆綁集合形式快速、低代價地開發(fā)、部署、發(fā)現(xiàn)和動態(tài)綁定應用,比較適用于那些需要更大的靈活性、變動頻繁的應用系統(tǒng)集成。結合傳統(tǒng)的企業(yè)應用集成方案(CORBA、DCOM),上節(jié)中所設計的基于Web服務的企業(yè)應用應用集成架構有以下優(yōu)點:(1)統(tǒng)一接口。利用w曲服務對應用系統(tǒng)接口進行統(tǒng)一封裝,都采用WSDL統(tǒng)一描述的標準接口,構建獨立于平臺、組件模型和編程語言的系統(tǒng)集成,可跨平臺與任何系統(tǒng)實現(xiàn)無縫連接。(2)松散耦合的集成機制。W曲服務技術為集成雙方提供了一種松散耦合的機制,任何需求方只需理解一種通用的對象接口就可以集成并調用現(xiàn)有的因特網(wǎng)上的W曲服務,而無需考慮w曲服務的內部實現(xiàn)機制、操作平臺、開發(fā)語言等細節(jié)。同時,即使在往后的運行過程中,當Web服務產(chǎn)生了接口上或是功能上的更改,集成調用方也可以通過W曲服務的描述性文檔,及時地發(fā)現(xiàn)并適應這樣的更改。(3)信息發(fā)現(xiàn)機制。Web服務的面向服務架構中的UDDI注冊中心,以w曲服務的方式存放所有商業(yè)實體的信息和交互參數(shù),可以發(fā)現(xiàn)并且集成新的商業(yè)合作伙伴及其提供的新的W曲服務。(4)實現(xiàn)跨防火墻通信。w曲服務所使用的SOAP協(xié)議是一個松散的遠程訪問協(xié)議,為分布式環(huán)境中使用XML對等地交換結構化的和類型化的信息提供了一個簡單的、輕量級訪問機制。SOAP采用的是HTTP傳輸,這樣就不會受防火墻和代理服務器的限制。3.3.3服務組件架構應用集成服務組件架構(SCA)應用集成即基于服務組件架構的企業(yè)應用集成,本節(jié)將對其集成的兩個方面以及集成優(yōu)勢進行分析。Web服務使用WSDL統(tǒng)一了服務接口的描述,使用SOAP統(tǒng)一了數(shù)據(jù)傳輸和交換格式,使得基于Web服務的企業(yè)應用集成取得了巨大了成功,但Web服務在企業(yè)應用集成中仍存在著一些問題,如傳輸協(xié)議不能自由綁定、服務組裝等問題。SCA技術在這些方面有其自己的解決機制。SCA是一個用于構建面向服務架構應用和解決方案的編程模型,其基本思想是業(yè)務功能總是由一系列的服務組成的,這些服務裝配在一起就構成了能夠滿足一定商業(yè)需求的應用和解決方案。它擴展了Web服務集成技術,因為不但提出了如何構建單個服務,而且還提供了服務的組裝模型,而SCA的接口和綁定等規(guī)范使集成技術不再限于Web服務的WSDL和SOAP。連線和提升是實現(xiàn)SCA應用集成的機制,借助SCA服務組件和服務模塊,實現(xiàn)以業(yè)務功能定義的服務,而沒有使程序員面對傳統(tǒng)集成中間件編程的復雜性,能迅速地把個體服務組裝成適應業(yè)務流程的系統(tǒng),并通過對安全性、事務和可靠消息傳遞之類的特性定義了聲明式策略,可以控制集成方案的各個方面,從而達到解決業(yè)務系統(tǒng)整合的目的。因此,SCA是實現(xiàn)面向服務架構的最好方式。SCA服務模塊強制地將服務的接口和服務的綁定完全分離,服務就是業(yè)務的服務,3l 碩:|:學位論文第三章面向服務架構的企業(yè)應用集成而綁定則是服務的外在表現(xiàn)和通信協(xié)議,和服本身的邏輯是沒有交叉的【24l,具體來說,一個模塊可以暴露出同一個接口的多種綁定形式,這就可以被不同的業(yè)務環(huán)境集成。通過Service和Reference問的連線來實現(xiàn)SCA模塊內組件的集成。利用組件的Reference調用其它組件的Service,此外,SCA組件的Reference和Service可以提升(Promote)為模塊對應的的Service和Reference,從而通過模塊的Service和Reference實現(xiàn)模塊之間的集成。下面就SCA應用集成從兩個方面來加以分析。。(1)服務組件之間的集成分析。服務組件之間的集成即模塊內部服務組件之間的集成,在此引入了入口點(EntryPoint)和外部服務(ExternalService)兩個概念,模塊外部通過EntryPoint調用模塊內部組件的服務,而模塊內部組件可以通過ExternalService引用模塊外部提供的服務。兩者均是通過綁定(binding)來實現(xiàn)與外界進行信息交互的。綁定若是用在服務里,表示SCA提供某種類型的服務(Export,導出);綁定若是用在引用里,表示SCA使用某種類型的服務(Import,導入),導入和導出是模塊中的兩個特殊的端點。因此,模塊內部組件的集成實際上是一個從導出(Expoft)到-導,K(Import)的順序過程。如圖3.8所示SCA模塊內部組件集成。Properties,一一7/,7/,Compositef1,,t、Property—t—l/setting㈠i。一衛(wè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實現(xiàn)把Reference連接到組件B的服務上,連線使用服務的URI指明引用要調用的服務接口,數(shù)據(jù)也通過引用進行傳 碩士學位論文第三章面向服務架構的企業(yè)應用集成遞,這樣就實現(xiàn)了組件中服務的集成。(2)模塊之間的集成分析。模塊之問的集成即SCA域中服務模塊之問的集成。一個SCA域,即服務子系統(tǒng)。它由多個服務組成,這些服務提供了由某個組織進行控制的一組業(yè)務功能。比如一個公司的財務部門對應的SCA域涵蓋了所有財務相關的功能,這個域可能由兩個模塊構成,比如一個用來處理人事檔案,另一個用來處理考勤。一個SCA域可能是整個公司,也可能是公司內部的一個部門。在一個比較大的應用項目里面,不僅要開發(fā)一個模塊,可能需要多個模塊以及模塊之間的交互。服務模塊之間通過兩種形式來集成,一是通過SCA綁定來實現(xiàn)模塊之間的交互。在SCA運行環(huán)境下,有兩種SCA綁定的機制。若是服務和引用在同一個JVM環(huán)境下,則通過內存復制機制(i11.memorycopymechanism)實現(xiàn);若是服務和引用分布在通過消息機制連接的兩個節(jié)點上,則通過消息機制來實現(xiàn)。二是將一個服務模塊作為另一個服務模塊的組件實現(xiàn)。如圖3-9所示SCA模塊之間的集成。通過模塊的集成,集成了較大粒度的服務,實現(xiàn)了更高層次的企業(yè)應用集成。圖3-9SCA模塊間的集成該域由CompositeX、CompositeY、CompositeA、CompositeB四個模塊邏輯組合而成,其中CompositeX含有兩個組件,分別為組件A和組件B,是通過連線來組裝的,即模塊內部組件的集成。CompositeX、CompositeY的交互通過SCABinding來實現(xiàn)。對外部使用者來講,只有模塊提供的服務(Services)和它對其它服務的弓lm(References)33 碩l:學位論文第二三章面向服務架構的企業(yè)腑用集成才是可見的,模塊可以用作組件的實現(xiàn)也可以作為一個獨立的部署堆元來使用??梢?,CompositeA、CompositeB正是如此。通過SCA進行企業(yè)應用集成的有其巨大的優(yōu)勢。首先,服務的調用和服務的實現(xiàn)完全分離,服務的調用者只需使用服務提供者提供的服務接口,不需知道服務所在的組件或模塊的內部細節(jié),不管所使用的是哪種具體編程語言以及運行平臺,從而大大降低了應用程序集成的復雜性。其次,采用SCA架構不需要花費太大的代價就能實現(xiàn)企業(yè)現(xiàn)有遺留系統(tǒng)之間的集成,SCA服務組件和服務模塊是SCA應用的構建單元,服務組件和服務模塊可以以不同的組合方式構成不同的應用,而既有的非SCA系統(tǒng)可以通過SCA組件實現(xiàn)的方式很方便地加入到SCA系統(tǒng)【52J。最后,SCA應用集成有著強大的靈活性,隨需控制各個層面的粒度和服務。組件為模塊提供服務,模塊為服務子系統(tǒng)提供服務。這樣,每一個層次都比下一級的粒度小或者相同。3.4本章小結本章首先討論了企業(yè)應用集成的相關理論,通過對企業(yè)應用集成層次的分析,指出功能層集成的優(yōu)勢,其核心在于業(yè)務上的集成并對面向服務架構與企業(yè)應用集成的關系進行分析,闡述了服務組件架構特別地適合于企業(yè)應用集成。然后,在功能層集成思想下,對基于面向服務架構的企業(yè)應用集成進行研究,探討了使用Web服務技術來實現(xiàn)基于面向服務架構的企業(yè)應用集成,設計了一個基于Web服務的企業(yè)應用集成架構并分析了Web服務應用集成的優(yōu)點;然后,分析了基于服務組件架構的企業(yè)應用集成,闡述了使用服務組件架構技術來實現(xiàn)基于面向服務架構的企業(yè)應用集成的優(yōu)勢。 碩L學位論文第四章卣向服務架構的集成架構設計第四章面向服務架構的集成架構設計本章是在前面幾章對面向服務架構模型,Web服務、服務組件架構、服務數(shù)據(jù)對象編程技術以及面向服務架構的企業(yè)應用集成研究分析的基礎上,提出了一個基于面向服務架構的企業(yè)應用集成解決新方案。該方案基于服務組件架構、服務數(shù)據(jù)對象和Web服務技術來設計集成架構,簡稱SSWSOA架構。此外,本章對架構及每層中的一些問題、技術和策略進行了深入的研究與分析。該架構體現(xiàn)了“把軟件作為服務”的面向服務架構思想,為企業(yè)應用集成提供了理論和實踐的新思路,期望能對整個企業(yè)的管理、資源整合帶來實質性的提升。4.1設計目標面向服務架構是一種以服務為導向的架構,它將應用程序的不同功能單元,通過這些服務之l、日J定義良好的接口和契約聯(lián)系起來,使得構建在各種系統(tǒng)中的服務可以以一種統(tǒng)一和通用的方式進行交互,本架構的設計目的就是要實現(xiàn)服務組件和傳輸協(xié)議的分離,業(yè)務代碼與數(shù)據(jù)代碼的解耦,為應用的大規(guī)模集成打下基礎。主要完成三個方面的目標。(1)一個目的是這種架構不需要花費太大的代價就能集成現(xiàn)有的系統(tǒng)。(2)一個目的是這個架構能夠創(chuàng)建出一種新的模式,這種模式能夠組建與傳輸協(xié)議的綁定達到一種松散耦合,服務組件可以自由選擇傳輸協(xié)議,從而達到服務組件的最大可重用性。(3)另一個目的是提供一種獨特的數(shù)據(jù)編程模型供應用程序來保存信息以及提供一個統(tǒng)一的數(shù)據(jù)訪問,實現(xiàn)業(yè)務處理和信息源之間的松散耦合。4.2集成架構解決方案模型面向服務架構是一個完整的軟件系統(tǒng)構建體系,包括運行環(huán)境、編程模型、架構風格和相關的方法論等。其核心是服務,并涵蓋服務的整個生命周期,建模一開發(fā)一裝配一運行一管理。面向服務架構的核心理念是業(yè)務驅動,采用松耦合的、靈活的體系架構來滿足隨需應變的業(yè)務需求。它是對現(xiàn)有體系結構的繼承和發(fā)展,較好的解決了面向對象和面向組件分析與設計方法無法解決可重用和可維護性的問題,并消除了不同協(xié)議和軟硬件平臺帶來的整合問題。圖4—1給出了一個基于面向服務架構的集成架構解決方案模型視圖,它與具體的技術實現(xiàn)是無關的,是一個邏輯視圖。由圖可見,該集成架構解決方案模型是一個分層的結構,從最底層的功能性服務,35 碩I:學位論文第pq章面向服務架構的集成絮構設計到原子服務和服務構件,到頂層的業(yè)務流程服務,目的是最大限度地封裝不同的服務,從而達到復用的目的。無論哪一個層次,其核心都是服務,一個復雜的服務組件是由不同的原子服務組件組成,用于提供業(yè)務流程所需的功能。這樣,企業(yè)應用集成變得得心應手。無論是在一個垂直系統(tǒng)內部,還是跨部門的整合,甚至是跨企業(yè)的行業(yè)整合。既可以重用定義好的服務,也可以是新開發(fā)的業(yè)務功能。消費者PortletsfWSRP。/\業(yè)務流程,//乏X;■、、\業(yè)務狀態(tài)機壚≠/婁霧ff’≮蘭9到弋<竺#二/,|盅—J烏占^芬一-:服務廠刊∈≥卿(糧oo白讒簡單和復雜服務L1島∞滁l蒼l服務組件flklI,;≯/’‘運營系統(tǒng)打包應用定制應用面向對象應用南圖4-1集成架構解決方案模型視圖此集成架構解決方案充分利用了面向服務的思想,從底層開始分別為運營系統(tǒng)層、服務組件層、服務層、業(yè)務過程層、消費者層。此外集成層、Qos層、信息架構層、治理層作用于整個集成架構。下面對模型視圖中的每層予以闡述。運營系統(tǒng)層,包含了當前IT環(huán)境中存在的運營系統(tǒng),支持著業(yè)務活動。包括了所有定制的應用程序、打包的應用程序、遺留系統(tǒng)、事物處理系統(tǒng)和各種數(shù)據(jù)庫。服務組件層,此層中的組件滿足了服務層中的服務所定義的契約。一個服務組件可以實現(xiàn)一個或多個服務。服務層,該層包含了所有在企業(yè)服務組合中定義的服務,服務由語法和語義信息組成。業(yè)務過程層,該層描述了業(yè)務的編排、執(zhí)行的順序等。業(yè)務過程是各種活動的lT表現(xiàn)形式。在企業(yè)中,這些活動相互協(xié)作,實現(xiàn)特定層面的業(yè)務功能。此層代表了松散耦合的服務聚合起來的過程,使用了服務層中提供的服務。消費者層,此層描述了不同的渠道,通過這些渠道rr的功能得以交付。其目標是 碩.1j學位論文第陰章面向服務架構的集成架構設計對訪問協(xié)議和數(shù)據(jù)格式進行標準化,繼而可以為業(yè)務過程和底層暴露的服務快速地創(chuàng)建前端。集成層,該層為服務請求者提供了定位服務提供者和發(fā)起服務調用的功能。通過中介、路由,以及數(shù)據(jù)和協(xié)議轉換等三種基本能力,建立起一個服務生念系統(tǒng),服務在這個生態(tài)系統(tǒng)中可以作為業(yè)務過程的一部分,實現(xiàn)相互通信。Qos層,此層關注實現(xiàn)和管理非功能性需求。信息架構層,確保面向服務架構中中需要的數(shù)據(jù)和信息的正確形式表示。每個特定水平層的數(shù)據(jù)結構和信息架構表示形式都是該層的職責。治理層,確保正確管理服務的完整生命周期。其中,該集成架構解決方案的左邊鄭分為架構的功能性方面,而其右邊部分為架構的服務質量方面。4.3集成架構總體設計與分析根據(jù)基于面向服務服務架構的企業(yè)應用集成研究,結合基于面向服務架構的集成架構解決方案模型視圖以及對Web服務技術、服務組件架構和服務數(shù)據(jù)對象編程技術的分析,在此設計了一個基于服務組件架構、服務數(shù)據(jù)對象和Web服務技術的企業(yè)應用集成架構(簡稱SSWSOA)。如圖4.2所示,該集成架構通過具體的技術實現(xiàn)了基于面向服務架構的集成架構解決方案模型視圖。服務調用層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服務技術描述服務,服務組件架構技術將服務集成,實現(xiàn)遺留系統(tǒng)中應用程序的集成;通過服務數(shù)據(jù)對象技術實現(xiàn)了對異構數(shù)據(jù)源的統(tǒng)一訪問,達到了對數(shù)據(jù)的集成,這些都是集成性的很好體現(xiàn)。該架構以分層的方式來進行構建,從上到下依次為:服務調用層、消息和代理服務層、服務層、數(shù)據(jù)訪問層和數(shù)據(jù)源層。對于安全、可靠性消息、事務管理等非業(yè)務功能的基礎設施,面向服務架構運行環(huán)境會提供支持,進行面向服務架構構建和組裝時只需定義相應的策略(Policy)即可,而策略完全可以兼容于現(xiàn)有的Web服務策略(ws—Policy),使已有的Web服務IT資產(chǎn)可以充分利用。服務數(shù)據(jù)對象貫穿于整個體系架構中,即除了數(shù)據(jù)服務層屏蔽數(shù)據(jù)源層的技術細節(jié)外,其它層與層之間或同一層服務組件fbj的交互數(shù)據(jù)單元可以部分或全部為服務數(shù)據(jù)對象。服務層使用面向服務架構編程模型,把己有或新開發(fā)的系統(tǒng)集成起來。4.3.1架構分析架構的設計遵循面向服務架構模型,數(shù)據(jù)訪問層和服務層相當于面向服務架構模型的服務提供者,這兩層是本文研究的重點,消息和代理服務層相當于服務代理者,服務調用層相當于服務請求者。這種分層與服務提供者和請求者之間的劃分只是相對的。由圖清晰的看出,設計的集成架構采用的集成技術主要有服務組件架構、服務數(shù)據(jù)對象以及Web服務技術。各層實現(xiàn)的豐要功能闡述如下:(1)服務調用層。即面向服務架構的服務請求者,訪問服務層中的各種服務。服務請求者對服務組件架構構建的服務進行調用,在企業(yè)應用集成過程中,將業(yè)務邏輯中最容易變化的部分剝離出來,采用專門的服務組件實現(xiàn),則可以很靈活的配置業(yè)務規(guī)則。服務請求者可以是前端應用、外部應用程序。從2.2.3小節(jié)中SOAP的分析,可以知道Web服務有不針對某個平臺的特點,可以運行于多種平臺上。因此,我們可以用不同的編程語言編寫的客戶端應用程序來調用Web服務。(2)消息和代理服務層。這一層是基礎架構中的整合服務層,包括消息傳輸、動態(tài)路由、目錄服務及數(shù)據(jù)轉換等服務,并可支持BPEL實現(xiàn),它是客戶機應用程序和服務之間進行訪問的有力保障。對于服務請求者來說Web服務的實現(xiàn)框架、實現(xiàn)技術、數(shù)據(jù)來源等都是透明的,服務請求者只關心Web服務的WSDL。WSDL文檔包含了Web服務所有相關內容(如服務的傳輸方式、服務方法接口、服務路徑等),BPEL文檔中標明了每個服的使用順序。該層中還有能理解WS.BPEL過程描述文檔的工作流引擎,該引擎負責按順序或必要的邏輯來使用服務153J。(3)服務層。服務層使用的主要技術是服務組件架構技術,利用服務組件架構來集成已有的系統(tǒng)或是新開發(fā)的系統(tǒng)。通過服務組件架構可以把任何應用程序封裝成SCA組件,封裝的應用程序可以是已存在的,也可以是新開發(fā)的。然后,將組件進行組裝;通過服務組件架構的基礎設施可以引用外界提供的非SCA服務。安全、事務、可靠性38 碩上學位論文第網(wǎng)謄面向服務架構的集成架構毆計消息等其基礎設施環(huán)境,可以通過定義于獨立于實現(xiàn)組件的策略(Policies)來進行設置,這些屬性都配置在配置文件中。服務數(shù)據(jù)對象作為模塊內部以及模塊與外部交互的數(shù)據(jù)傳輸格式。(4)數(shù)據(jù)訪問層。數(shù)據(jù)訪問層中包含了對數(shù)據(jù)源層的數(shù)據(jù)訪問的邏輯,將業(yè)務邏輯與數(shù)據(jù)源分開。數(shù)據(jù)訪問服務(DataAccessService,DAS)屏蔽了底層異構數(shù)據(jù)源的差異性,向服務組件層提供SDO數(shù)據(jù)服務,不僅使應用程序無需依賴于數(shù)據(jù)庫,而且還使應用程序獨立于整個持久化技術,實現(xiàn)了服務層與不同類型數(shù)據(jù)源的交互。當前還沒有一個數(shù)據(jù)訪問服務的相關規(guī)范出臺,典型的DAS有LDAPDAS、Tuscany關系數(shù)據(jù)庫(RDBDAS)、XMLDAS。(5)數(shù)據(jù)源層。數(shù)據(jù)源層中提供了當前廣泛使用的數(shù)據(jù)源形式。包括DataBase系統(tǒng)、XML文件系統(tǒng)、LDAP數(shù)據(jù)庫以及其它外部數(shù)據(jù)資源。數(shù)據(jù)訪問層發(fā)送指令給數(shù)據(jù)源層,然后對數(shù)據(jù)庫進行操作和處理。從數(shù)據(jù)源中加載數(shù)據(jù)到數(shù)據(jù)圖,數(shù)據(jù)修改后將數(shù)據(jù)圖存回到后端數(shù)據(jù)源。更詳細的處理過程將會在4.3.5小節(jié)進行分析。每層都有一些相關的設計策略、問題以及實現(xiàn)技術等,各層相互配合,共同完成倉業(yè)應用集成。下面將就該架構中一些策略、問題以及技術進行一些比較詳細的論述。4.3.2SCA組件調用SCA向我們提供一個以與技術無關的方式創(chuàng)建接口、實現(xiàn)和引用的組件模型,這樣的技術特點,使我們可以將組件綁定到所選擇的某一技術的特定實現(xiàn)。圖4.3顯示了SCA組件的調用?;赪SDL的接口規(guī)范是SCA服務組件的主要形式,此外SCA的部分服務組件也提供了Java接口。因此,使用服務組件的客戶端可以選擇使用Java接口或WSDL接口來調用組件。Implementation組件實現(xiàn)-Java——BPEL——Composite圖4-3SCA組件調用39 碩J二學位論文第pq章面向服務架構的集成架構設計對于組件的調用,SCA編程模式提供了三種方式的異步調用,單向調用方式、延遲響應方式和請求回調方式。需要注意的是SCA也支持組件的同步調用,常見的方法調用都是同步調用,這種調用方式是一種阻塞式的調用方式,即客戶端(主調用方)代碼一直阻塞等待直到被服務端(被調用方)返回為止。這種調用方式相對比較直觀,也是大部分編程語言直接支持的一種調用方式。但是,如果面對是基于粗粒度的服務組件,面對的是一些需要比較長時間彳’能有響應的應用場景,就需要一種非阻塞式調用方式,即異步調用方式。(1)單向調用方式。這種方式要求不返回調用的結果,其調用方式為單向的。即客戶端發(fā)出請求后就不再關心服務端的情況,包括是否執(zhí)行成功,返回值等。(2)延遲響應方式。這種方式是指客戶端在發(fā)出凋用請求之后繼續(xù)執(zhí)行,但是經(jīng)過一段時間之后,客戶端再調用相應的方法去檢索返凹結果,并通過參數(shù)指定如何根據(jù)調用的結果而執(zhí)行進一步動作。由于是異步調用方式,因此,在第一次發(fā)出調用請求的時候,服務器端需要返回一個稱為票據(jù)(Ticket)的對象。這個對象會作為第二次發(fā)出檢索結果請求時的一個參數(shù)。顯然,這個Ticket對象的作用與Web編程的SessionlD非常類似。(3)請求回調方式。這種方式與延遲響應方式類似,只是服務器端結果的返回是由服務器端通過回調方式觸發(fā)的,并不像延遲響應方式那樣由客戶端再次發(fā)送請求信息到服務端。這種方式是異步的,服務請求者是無法知道服務提供者何時調用接口,服務提供者能夠在被激活后任何時刻回調接口。4.3.3服務合成與匹配消息和代理服務層是基礎架構中的整合服務層,提供一些消息傳輸、目錄服務及數(shù)據(jù)轉換等服務。為此,本節(jié)針對服務的合成與匹配問題進行分析,為服務合成與匹配提供解決方案。當前,BPEL為廣泛采用的服務合成描述語言,提供了一個抽象的模型和語法來表達抽象的、可執(zhí)行的商業(yè)流程。BPEL中的一個流程是一些活動的合成,這些活動執(zhí)行特定的功能,流程中規(guī)定了活動的執(zhí)行順序囝】。BPEL是基于工作流的服務合成方法的語言,能夠讓Web服務之間按照一定邏輯順序在適當?shù)臅r候通信,用來描述構成服務合成的服務之間的邏輯關系。此外,基于語義的合成方法也是服務合成方式之一,DAML-S為其提供了語言支持,它是從語義Web上發(fā)展起來的,用于描述Web服務的DAML+OIL本體語言。服務合成主要研究如何將多個服務按照一定方式組合起來共同滿足用戶需求。服務合成強調在Web服務之間,為了完成一項特定工作而相互協(xié)作,將具有一定邏輯順序的服務按照某種規(guī)則合成為一個新服務,這個新服務的組成成員問不僅可以相互通信,更為重要的是,它們是按照某種邏輯合成的。在此,研究一種基于Mediator中間件的服務合成方法,是一種語義合成的方法。Mediator是一個封裝了一系列對象之間的交互的中間件,自己并不存儲數(shù)據(jù),只是利用 碩}:學位論文第四章面向服務架構的集成架構設計Wrapperl55】提供對各種數(shù)據(jù)源的一種一致訪問方法,把查詢請求轉化成一個或者多個相對于數(shù)據(jù)源的查詢,然后把從數(shù)據(jù)源返回的結果進行綜合合成并返回給客戶,并通過數(shù)據(jù)和本體來解決其中的語義沖突問題,從而為異構、自治的數(shù)據(jù)集成提供方便。在服務合成之前,首先對Web服務進行屬性綁定建模,即將一個Web服務看作一個類,其輸入l,輸出。和約束C作為類的屬性,形式為s(I,o,c)。如Web服務HongKongStock(CompanylD,HongKong,GivenTime,Price,Info),通過輸入公司代碼、香港證券交易所和給定的時刻,返回該公司在香港證券交易所的股票價格和股票其它的信息。該服務的服務建模后的模型如圖4—4所示,在此把服務的輸入常量HongKong作為該類的一個約束,并添加一個輸入屬性Stock_Place。圖4-4服務模型其次,在對Web服務建模之后,服務模型之間以及領域模型之間的關系通過屬性級本體來關聯(lián),以消除合成過程中的語義沖突。圖4.5所示,在該屬性級本體中,它的最頂層是基本的數(shù)據(jù)類型,中『自J層是領域模型屬性,底層是Web服務模型屬性。StocklnfoCompanylnfoC0untryInf0CompanyID/’Info圖4-5屬性級本體結構然后,進行服務的合成步驟。在此服務合成的思想是根據(jù)用戶的輸入來推導各種41沱.\渺./響\\風 碩l:學位論文第叫章面向服務架構的集成架構設計Web服務輸出,把推導中用到的Web服務和Web服務產(chǎn)生的輸出分別加到Web服務集合和Web服務輸出集合中,同時把每次Web服務產(chǎn)生的輸出加到Web服務輸入集合中,這樣一直下去,直到用戶所要求的查詢結果完全包含在Web服務輸出中?;贛ediator的服務合成算法描述如下: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服務,計算它們的相似程度。傳統(tǒng)的服務匹配算法對服務進行匹配,僅限于服務注冊中心與服務請求進行直接匹配,如果服務注冊中心中不存在能夠直接匹配的單個服務即返回匹配失敗,而這樣未能充分利用服務注冊中心的眾多服務的協(xié)作【姍。本節(jié)提出的優(yōu)化服務組合匹配算法假定服務注冊中心存在滿足服務請求者的全部輸入條件和輸出條件,其思想是引入服務組合領域的技術進行組合匹配以最大化利用服務注冊中心中的服務,發(fā)掘能相互協(xié)作共同滿足查詢請求的服務集合。在此引入一個重要的概念:服務功能信息IOPE。它指的是服務的Input、Output、Precondition和Effect。Input指服務的輸入,Output指服務的輸出,它們指明了與服務交互過程中的數(shù)據(jù);Precondition和Effect是指服務的前提條件和效果,即服務執(zhí)行前應該滿足的約束條件和服務執(zhí)行后實際產(chǎn)生的效果,指明了狀態(tài)的改變。本文的算法設計中,從服務功能信息的這幾個屬性方面來進行服務匹配。以功能描述中的Output屬性為例,當Output為多個時按圖4-6流程進行匹配。42 碩I:學位論文第四章面向服務架構的集成架構設計圖4-6優(yōu)化服務匹配算法流程圖143 碩f:學位論文第|fII章面向服務架構的集成架構設計當對單個Output進行匹配時嵌套調用圖4—7所示流程。圖4-7優(yōu)化服務匹配算法流程圖2經(jīng)該算法得到的匹配結果相互問無依賴關系,只需將匹配服務結果集中的所有服務提交給服務執(zhí)行引擎并執(zhí)行便可得到結果。Output的分解是通過領域本體中的定義來完成的,將大的目標分解為小的目標,綜合各個子目標滿足總目標。4.3.4服務組件架構設計理念及策略服務組件架構為該集成架構服務層中的核心技術,使用它來集成已有的應用或是新開發(fā)的應用;安全、事務、可靠性消息等基礎設施環(huán)境,可以通過服務組件架構的策略來提供,其重要性不言而喻。在此,對服務組件架構的設計理念以及服務組件架構策略框架進行分析。(1)服務組件架構設計理念。其設計理念比較深奧,涉及開放式的結構思想,性能、安全方面的考慮等。為更深入的理解服務組件架構編程,在此剖析其插件式設計思想。對于當前流行的工具Eclipse、企業(yè)服務總線等都使用了插件式的設計思想。在Web應用集成中,UDDI注冊機制同樣體現(xiàn)了該思想,所有的Web服務都可以動態(tài)的插拔。插件式即為可插拔的軟件架構,體現(xiàn)了面向服務架構中松散耦合的特點。插拔式的設計模 碩l:學位論文第pq章面向服務架構的集成架構設計式給已有的模式提供了新的發(fā)展思路和解決方案。在服務組件架構設計中很好的發(fā)展了這種設計模式。靜態(tài)類圖4—8所示,展示了注冊結構的靜態(tài)分析,其類似于注冊中心功能的擴展點(實現(xiàn)接口的類)注冊類,是服務組件架構設計中的基本形式。圖4-8注冊結構靜態(tài)類圖類org.印aChe.tuscany.sea.core.DefaultExtensionPointRegistry的getExtensionPoint方法用來實現(xiàn)從注冊中心獲取需要的對象,程序邏輯片段如下所示: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>來實現(xiàn)??梢哉J為DefaultExtensionPointRegistry為HashMap的特殊封裝,其中,Object>是非常重要的。META.INF/services下的文件包含著若干個插件板,插-孑LP,IJ為實現(xiàn)類的名稱,對于每個插件板的插件孔可以預先調配。通過這種機制,可以方便的實現(xiàn)對插件板的修改,滿足系統(tǒng)需求的變化。45 碩j:學位論文第四章面向服務粲構的集成架構設計調用getExtensionPoint上根據(jù)Class類:7l{!從HashMap中取對象extensionPoints.get(extensionPointType)否<逗鎏>弋竺竺≥吵//上是調.}}jServiceConfigurationUti1.getServiceClassNames土從META—INFO/services‘卜.面找到與參數(shù)類型名稱的同名文件,從文件中按行讀取數(shù)據(jù),并把每行數(shù)據(jù)寫入一個L{st的子類型。服務策略選擇遞歸算法描述如下t輸入:目標元素的一組意向輸出:與目標元素的意向匹配的policySets步驟1:計算應用到目標元素的所需和意向集合。從元素的@requires屬性定義的意向列表開始,為每一個父元素添加在@requires屬性中找到的意向。如果該元素是一個綁定的實例,并且它的父元素己連接,那么當連接另一段的所需意向可獲得時,加入到意圖集合中。本步驟完成后,所需意向的集合現(xiàn)在包含了所有必需提供給目標元素的意向。步驟2:清除所有來自所需意向集合直接支持的意向,剩余的所需意向由policySets提供。步驟3:計算被應用到目標元素的顯式定義的policySets列表。從元素的@policySets屬性定義的policySets列表開始,顯式定義的policySets包含來自父元素的a@policySets屬性的值。如果這些顯式列出的policySets沒有被應用到目標元素(綁定或實現(xiàn)),則該composite是無效的。步驟4:清除所有由指定policySets提供的所需意向f如來自每個policySets各自的@provides屬性的所有意向)。如果在SCA域中能夠找到附加匹配的policySets,則剩余的所需意向由找到的policySets提供。步驟5:選擇附加policySet的最小集合,來匹配剩余的所需意向。當所需意向確切地匹配提供的意向,提供的意向是所需意向的上級或者提供的意向比所需意向更加具有47 碩f:學位論文資格時,policySet和所需意向匹配成功。如果不存在覆蓋所需意向的policySets集合,那么配置是無效的。4.3.5數(shù)據(jù)訪問服務數(shù)據(jù)訪問服務(DAS)是一種組件,它提供了某些方法,通過這些方法來組裝數(shù)據(jù)圖,數(shù)據(jù)圖中數(shù)據(jù)修改后,也負責將更改的數(shù)據(jù)圖保存到數(shù)據(jù)源。一般情況下,每種數(shù)據(jù)訪問服務類型對應于某種數(shù)據(jù)源和技術。當前流行的數(shù)據(jù)源和技術主要有XML、JMS、JCA、JDBC等。數(shù)據(jù)訪問服務總是以同一種格式(DataGraph,數(shù)據(jù)圖1返同結果信息,其封裝了實際的數(shù)據(jù)存儲信息并在SDO應用程序和企業(yè)信息系統(tǒng)之問提供了一層數(shù)據(jù)提取的功能。數(shù)據(jù)訪問服務雖不屬于服務數(shù)據(jù)對象編程規(guī)范的范疇,但是在應用中集成了不同數(shù)據(jù)類型和異構數(shù)據(jù)源。那么,通過數(shù)據(jù)訪問服務加載的SDO數(shù)據(jù)圖包含了異構數(shù)據(jù)源以及不同數(shù)據(jù)類型的信息。圖4-10分析了SDO客戶機通過數(shù)據(jù)訪l’uJ服務與數(shù)據(jù)庫交互的過程。從順序圖中可總結出數(shù)據(jù)訪問服務具有定義、創(chuàng)建一個數(shù)據(jù)圖,獲取變更歷史信息并根據(jù)這一信息更新數(shù)掘源的功能。匭垂囹匡匣型圈一1.1://開始事務I://加載數(shù)據(jù)圖一.?—/1.2://讀———————一1.3://讀請求返同的結果∈-一一一一?一一一:)1.4://構建數(shù)據(jù)圖1.5:11結束事務,2://返同數(shù)據(jù)圖———————一:p3://i黼]t:●-I●:=>4://修改數(shù)據(jù)圖lL5://保存數(shù)據(jù)圖5.1:11開始事務5.2://更新5.3://結束事務’r圖4-10客戶機通過DAS與數(shù)據(jù)源交互 碩f=學位論文第pIl章匾向服務絮構的集成架構設計(1)客戶機在需要檢索數(shù)據(jù)的時候使用數(shù)據(jù)訪問服務來請求數(shù)據(jù)圖。(2)數(shù)據(jù)訪問服務負責管理對數(shù)據(jù)庫的訪問。首先開肩讀事務執(zhí)行查詢,然后根據(jù)數(shù)據(jù)庫返回的記錄集創(chuàng)建數(shù)據(jù)圖,最后提交事務。(3)客戶機使用斷丌連接的方式處理數(shù)據(jù)圖,即數(shù)據(jù)訪問服務在返回數(shù)據(jù)圖后便不再持有與數(shù)據(jù)庫的連接。(4)當客戶機需要保存對數(shù)據(jù)圖的更改時,它將更改后的數(shù)據(jù)圖發(fā)送給數(shù)據(jù)訪問服務。(5)數(shù)據(jù)訪問服務負責更新數(shù)據(jù)庫中的記錄。它根據(jù)數(shù)據(jù)圖的更改摘要生成相應的SQL語句,開啟寫事務,執(zhí)行批量更新語句,提交該事務。服務數(shù)據(jù)對象可以與其它數(shù)據(jù)編程技術(JDBC、實體EJB、JDO、Hibernate等)無縫隙的集成。這些編程技術已經(jīng)在軟件開發(fā)中得到廣泛的應用,用來與數(shù)據(jù)庫進行交互,提供和服務數(shù)據(jù)對象類似的特性,因此這些持久性框架可以融入SDO數(shù)據(jù)編程中。例如JDO和Hibernate都提供了方便的靜態(tài)數(shù)據(jù)API,Hibernate和一些JDO實現(xiàn)提供了樂觀并發(fā)、斷開模型。這些持久性框架可以被擴展為支持服務數(shù)據(jù)對象的數(shù)據(jù)訪問服務,從而融入SDO框架中。4.4本章小結在這一章,提出了一個基于面向服務架構的企業(yè)應用集成架構解決方案。結合基于面向服務架構的企業(yè)應用集成解決方案模型視圖,采用分層的思想設計了基于服務組件架構、服務數(shù)據(jù)對象和Web服務的企業(yè)應用集成架構,對每層從功能角度進行了深入的闡述并重點研究了各層中的一些關鍵問題:SCA組件的調用、Web服務合成與匹配、服務組件架構設計理念及策略以及數(shù)據(jù)訪問服務(DAS)等。49 碩‘l:學位論文第五章面向服務架構的企業(yè)應用集成架構心用第五章面向服務架構的企業(yè)應用集成架構應用根據(jù)面向服務架構的理論闡述,服務組件架構、服務數(shù)據(jù)對象以及W曲服務技術的分析,結合第四章設計的基于服務組件架構、服務數(shù)據(jù)對象以及Web服務技術的企業(yè)應用集成架構,來給出一個該架構的具體應用實現(xiàn)并對系統(tǒng)開發(fā)中主要問題進行了研究。本章將以個人銀行房屋貸款系統(tǒng)的丌發(fā)為例,通過應用本文提出的基于面向服務架構的集成架構SSWSOA來解決個人行房屋貸款系統(tǒng)中的集成問題,展示如何運用服務組件架構、服務數(shù)據(jù)對象以及Web服務技術來實現(xiàn)系統(tǒng)中集成問題并以此來論證架構的可行性、靈活性。5.1業(yè)務背景近幾年來,我國的房價一直以比較快的速度上漲,其中有很多方面的原岡。其中一個比較現(xiàn)實的原兇在于炒房者一人擁有多套房子。并不是每位炒房者都足夠的資本來買多套房子,他們中的大部分炒房者都是利用銀行貸款的錢在炒房子,這與我國實行的銀行貸款政策有很大的關系。我國的銀行房屋貸款政策對購買一套房和多套房的首付比率(FirstRatio)和貸款利率(LendingRate)基本上是一樣的,這樣的銀行政策是將炒房子的少數(shù)人和真iF的大多數(shù)的購房者置于同等的地位,為炒房者提供了很好的發(fā)財機會,使之能夠以小博大,以少量的首付貸款得到多套房子,然后倒手得到巨大的差價,賺取巨大的利潤。為此,中國金融行業(yè)采取了一系列的購房貸款政策來限制炒房者的牟利行為,從而一定程度上緩解房價上漲的趨勢。銀行應該根據(jù)購房者目前擁有的房屋數(shù)量提供不同的首付比率和貸款利率。房屋數(shù)量為0的客戶應該得到最小的首付比率和貸款利率;然后根據(jù)客戶的房屋數(shù)量依次提高首付比率和貸款利率。對炒房者來說,就意味著用于炒房的資金量需要加大,這樣就能起到一定的平抑房價的作用。5.1.1需求概況目前有五個獨立的Web服務,它們相互之間不知道,也不能互相調用。HouseLoanAgency服務通過客戶的姓名向系統(tǒng)中查詢客戶已有的房屋數(shù)量;Bank0服務用來處理客戶已有房屋數(shù)量為0時的房屋貸款需求,提供房屋數(shù)量為0時的貸款首付和貸款利率;Bankl服務用來處理客戶已有房屋數(shù)量為l時的房屋貸款需求,提供房屋數(shù)量為l時的貸款首付和貸款利率;Bank2服務用來處理客戶已有房屋數(shù)量為2時的房屋貸款需求,提供房屋數(shù)量為2時的貸款首付和貸款利率;Bank3服務用來處理客戶已有 碩f=學位論文第五章面向服務架構的企業(yè)應用集成架構應用房屋數(shù)量為3時的房屋貸款需求,提供房屋數(shù)量為3時的貸款首付和貸款利率。將上面的五個服務集成起來,滿足兩個前提條件:不影響上面的五個W曲服務的正常運行以及不修改上面五個w曲服務的任何代碼。集成起來的新系統(tǒng)只需要輸入用戶姓名,就會自動查出客戶的房屋數(shù)量,然后自動轉到相應的銀行進行房屋貸款服務,客戶最后可以得到對應于自己目前已有房屋數(shù)量的貸款首付和貸款利率。5.1.2業(yè)務流程根據(jù)上節(jié)中的業(yè)務概況,在此對業(yè)務進行流程分析,業(yè)務流程圖如5.1所示。圖5-1個人房屋貸款系統(tǒng)業(yè)務流程本業(yè)務需求中明確的指出房屋貸款數(shù)量的四種情況,根據(jù)每種情況系統(tǒng)都會去調用相應的服務,然后到數(shù)據(jù)庫銀行貸款額度表中查詢貸款額度信息,包括銀行名稱,貸款首付以及利率。從流程的分析來看,在此系統(tǒng)的開發(fā)中,需要有兩個數(shù)據(jù)模型。一個是客戶,包括客戶編號、姓名、擁有房屋數(shù)量等信息;另一個事銀行貸款額度,包括額度編號、銀行名稱、貸款首付、貸款率等信息。通過分析,就可以方便的來進行數(shù)據(jù)庫的設計。5.2開發(fā)平臺選擇根據(jù)第四章中章提出的基于面向服務架構的企業(yè)應用集成解決方案,服務組件架構 碩l:學位論文第五章面I川服務架構的企業(yè)應用集成架構戍用是在該方案中是核心技術。本節(jié)將采用設計的SSWSOA框架的技術路線來集成房屋貸款案例中相互獨立的服務。從系統(tǒng)中提供的w曲服務角度來看,在此考慮面向向服務的集成,以w曲服務為中心,服務組件架構技術為紐帶,集成起一個動態(tài)的系統(tǒng)。同時,在開發(fā)中使用服務數(shù)據(jù)對象編程技術。在構建服務模塊時,使用自底向上的面向對象軟件開發(fā)思想,即從系統(tǒng)的需求出發(fā),構造出各個功能模塊。功能實現(xiàn)之后,考慮的將是功能的集成。對于模塊內部而言,功能的集成是子模塊,它完成一定范疇內的業(yè)務功能。本章遵循這種開發(fā)思想,從底層的功能模塊丌始,實現(xiàn)業(yè)務功能,從而進一步的模塊集成,完成案例的集成丌發(fā)。在開發(fā)之前,先來來分析下目自訂的集成環(huán)境與工具。目前支持SCA的編程環(huán)境主要有IBM的WebSphereIntegerationDeveloper,Eclipse的STP項目,ObjectWeb的Lomboz,TIBCO的TIBCOActiveMatrix2.0,Apache的Tuscanyincubator。WebSphereIntegerationDeveloper簡稱wlD是基于SoA的流程開發(fā)和集成工具wID基于Eclipse3.x平刨5丌,提供對SCA規(guī)范的支持,將SCA組件以模塊為單位進行管理;STP(SOAToolsPlatform)是Eclipse的一組插件,STPCoreFramework定義SCA規(guī)范的EMF(EclipseModelingFramework)模型,為SCA提供一個可視化組裝平臺【58J;TIBCOActiveMatrix2.0用于在單一平臺下實現(xiàn)集成、綜合應用開發(fā)和管理,以便更有效地管理異構面向服務的架構f59】。它使客戶可以利用一套通用的工具來組裝、部署、托管和管理Java及.NETJ]艮務等,將它們作為基于SCA的綜合應用,從而提供了對SCA的廣泛支持,提高了在在部署企業(yè)級SOA的過程中的互操作性和生產(chǎn)效率;Tuscanyincubator能同時支持服務組件架構與服務數(shù)據(jù)對象,但由于其構建環(huán)境是基于Maven。OracleFusionMiddleware119提供了一整套的工具和集成的端對端功能,從而為構建服務導向架構及實現(xiàn)全面集成提供了堅實的基礎唧J。包括了一個OracleSOA組件的更新,提供了對服務組件架構模型的支持。針對目前支持SCA的編程環(huán)境的分析,本章使用MyEclipse6.6開發(fā)工具為服務組件架構、服務數(shù)據(jù)對象構建開發(fā)環(huán)境。使用的集成開發(fā)工具具體為Jdkl.5,可視化開發(fā)環(huán)境MyEclipse6.6,ApacheTuscany的JavaSCA,SDO等,SOAP服務器Axis2,Tomcat6.0,數(shù)據(jù)庫Mysql,數(shù)據(jù)庫可視化管理工具Navicat,操作系統(tǒng)MicrosoftWindowsxP。開發(fā)過程中利用Java語言,遵從J2EE標準。5.3系統(tǒng)總體架構設計上一章所設計基于面向服務架構的企業(yè)應用集成架構SSWSOA是從一個宏觀的角度進行構架設計,在具體應用時,還需要基于該構架使用具體的技術進行模塊開發(fā)和集成。為此,本節(jié)根據(jù)對集成架構的分析,將個人房屋貸款系統(tǒng)按照圖5.2所示分層設計,能夠很好的體現(xiàn)松散耦合的特性,方便維護、擴展、和其它系統(tǒng)的應用集成。 碩上學位論文第五章面向服務粲構的企業(yè)應用集成架構應用服務調用層Web服務SCA、SDoDAS數(shù)據(jù)層圖5-2系統(tǒng)總體架構服務層通過服務組件架構(SCA)實現(xiàn)了個人房屋貸款系統(tǒng)的所有業(yè)務邏輯,是整個系統(tǒng)模型中最復雜也是最重要的層次,以服務組件架構來設計各個功能模塊。數(shù)據(jù)訪問層包含了對數(shù)據(jù)層的訪問邏輯,它與業(yè)務邏輯是分丌的,由于所有的系統(tǒng)都要與數(shù)據(jù)層交互,而且操作也大體相同,其重復利用的可能性比較大,以強大的數(shù)據(jù)編程技術服務數(shù)據(jù)對象(SDO)以及數(shù)據(jù)訪問服務(DAS)來實現(xiàn)數(shù)據(jù)訪問層功能。服務接口層提供了Web服務的w曲服務描述文檔,是對web服務相關信息的描述。W曲服務將根據(jù)個人房屋貸款系統(tǒng)的具體業(yè)務需求將服務層的功能模塊通過SCA運行環(huán)境發(fā)布供客戶端應用程序調用。數(shù)據(jù)層使用MySQL作為數(shù)據(jù)的存儲形式。5.4系統(tǒng)實現(xiàn)個人房屋貸款系統(tǒng)的設計從用戶的需求出發(fā),以系統(tǒng)的功能為基本單位,將業(yè)務不同層次的功能劃分成不同的服務,然后將相互聯(lián)系的服務組合成服務模塊,從而構建出服務需求的業(yè)務流程。在系統(tǒng)的設計過程中,充分利用了面向服務架構的理念,用面向服務的思想對系統(tǒng)進行功能模塊設計。本系統(tǒng)的實現(xiàn)關鍵在于服務層和數(shù)據(jù)訪問層。5.4.1數(shù)據(jù)訪問數(shù)據(jù)訪問層的設計主要是提供對數(shù)據(jù)庫的數(shù)據(jù)訪問的邏輯,將業(yè)務邏輯與數(shù)據(jù)庫分開。數(shù)據(jù)訪問服務RDBDAS提供了四個核心接口,Command接口封裝了對數(shù)據(jù)庫的CRUD操作;Session接口實現(xiàn)了與數(shù)據(jù)庫的連接;SessionFactory接El完成配置信息的配置工作,包括讀取配置信息、創(chuàng)建配置文件的ConunandYlJ表、初始化數(shù)據(jù)庫連接池等;Converter接口完成數(shù)據(jù)列的值與DataObject屬性的值之間的相互轉換,在默認的情況下,數(shù)據(jù)蚴ar類型的值會對應DataObject中STRING類型的屬性值。通過RDBDAS的這三個核心接口實現(xiàn)與數(shù)據(jù)庫的交互。在此對數(shù)據(jù)訪問層的設計從兩個技術方面來實現(xiàn)。53 碩t:學位論文第五章面向服務架構的企業(yè)心用集成架構應用(1)數(shù)據(jù)訪問服務類的實現(xiàn)。根據(jù)數(shù)據(jù)訪問服務配置文件,設計了一個通用的數(shù)據(jù)訪問服務類(DBlnit),它實現(xiàn)了對數(shù)據(jù)的訪問邏輯,有查詢、刪除、更新以及插入操作,這些操作共同完成與數(shù)據(jù)庫的交互,這樣業(yè)務邏輯與數(shù)據(jù)庫交互時可以調用該服務類,實現(xiàn)了代碼的解耦。如圖5.3所示顯示了數(shù)據(jù)訪問服務層的具體實現(xiàn),使用了數(shù)據(jù)訪問服務(DAS)與數(shù)據(jù)庫交互。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數(shù)據(jù)訪問層U地類圖在此數(shù)據(jù)層的設計中,采用了依賴注入的思想,將數(shù)據(jù)訪問服務(DAS)作為DBInit服務類的私有成員變量。DASFactory接口根據(jù)數(shù)據(jù)訪問服務(DAS)的配置文件創(chuàng)建一個數(shù)據(jù)訪問服務實例,然后,查詢、刪除等操作中通過該實例動態(tài)的創(chuàng)建命令對象,實現(xiàn)對數(shù)據(jù)庫的操作。下面是一段DASFactory根據(jù)數(shù)據(jù)訪問服務配置文件獲得一個數(shù)據(jù)訪問實例以及使用該實例的代碼:publicDBInitO{//創(chuàng)建數(shù)據(jù)庫連接,實現(xiàn)訪問層das=DAS.FACTORY.createDAS(getConfig(”DBConfig.xml”));)publicDataObjectselectByClientName(Stringclientname){ 碩卜學位論文第五章面向服務粲構的企業(yè)應用集成架構應用Commandcmd2das.gctCommand(”selectclienmame”);cmd.setParametcr(1,clientname);DataObjectroot=cmd.executeQuery0;returnroot.getDataObject(”client[1]”);)在數(shù)據(jù)訪問服務類(DBlnit)的構造函數(shù)DBInitO@實現(xiàn)對數(shù)據(jù)訪問服務(DAS)成員變量的初始化,DBConfig.xml文件即為數(shù)據(jù)訪問服務配置文件。在selectByClientName方法中,通過使用DAS實例創(chuàng)建一個Command實例,然后執(zhí)行對數(shù)據(jù)庫的操作。(2)數(shù)據(jù)訪問服務配置文件的創(chuàng)建。數(shù)據(jù)訪問服務配置文件用來定義連接數(shù)據(jù)源信息、RDBDAS中DataObject與關系數(shù)據(jù)庫問的映射以及sql命令等信息。為此主要從連接數(shù)據(jù)源信息、DataObject與關系數(shù)據(jù)庫間的映射以及sql命令的配置幾個方面創(chuàng)建了一個DBConfig.xml數(shù)據(jù)訪問服務配置文件。數(shù)據(jù)庫連接信息包括JDBC驅動程序、連接URL、數(shù)據(jù)庫用戶名、密碼等信息。sql命令包括SQL語句及其類型、用于參數(shù)化查詢的相關參數(shù)、數(shù)據(jù)庫返回記錄集的描述信息、數(shù)據(jù)庫表、數(shù)據(jù)庫表名和對應的DataObject類型名、數(shù)據(jù)庫表的列信息以及表之間的關系。在本系統(tǒng)的開發(fā)中,未涉及表之間的關系,從而沒有配置表之問的關系。這些信息通過XML文件進行配置,提高了很強的靈活性,從而可以在不修改程序源代碼的情況下很容易從開發(fā)環(huán)境轉換到部署環(huán)境。5.4.2業(yè)務功能系統(tǒng)所有的應用邏輯都在服務層中,應用邏輯就是根據(jù)具體業(yè)務需求來設計處理程序,是整個系統(tǒng)的核心部分,包含數(shù)據(jù)操作、業(yè)務處理等,它通過調用數(shù)據(jù)訪問層的訪問接口來訪問數(shù)據(jù)庫,并完成所需的業(yè)務規(guī)則。采用服務組件架構技術來設計各個功能模塊以及實現(xiàn)模塊之間的交互,所有的邏輯功能單元都以SCA服務組件的形式存在。下面對個人房屋貸款系統(tǒng)的業(yè)務進行業(yè)務模塊創(chuàng)建,根據(jù)系統(tǒng)的業(yè)務需求設計了兩個服務模塊。如圖54顯示了Web服務引用模塊和w曲服務實現(xiàn)模塊之間的關系圖。web服務綁定圖5-4Web服務引用模塊和Web服務實現(xiàn)模塊 碩l:學位論文第五章面向服務架構的企業(yè)應用集成架構應用w曲服務實現(xiàn)模塊,負責創(chuàng)建房屋貸款實現(xiàn)服務,在此可以專注于業(yè)務邏輯的開發(fā)并將w曲服務發(fā)布供外部調用,可以使用如l洲I,W曲服務、JMS等多種協(xié)議進行綁定,在此使用W曲服務進行綁定;w曲服務引用模塊,不實現(xiàn)服務,通過w曲服務來引用前面所創(chuàng)建的服務模塊的服務。為了實現(xiàn)個人房屋貸款功能,在此設計了如下方面的開發(fā)內容。(1)創(chuàng)建3個基本接口,LoanBrokerService接口代表房屋貸款基本接口,接收客戶姓名,返回客戶的貸款額度;包括指定貸款銀行、首付額度、貸款利率。HouseLoanAgencyService接口通過客戶姓名查詢房問數(shù)量。BankService接口,耳HBank服務提供貸款額度。(2)1個集成模塊,實現(xiàn)LoanBrokerService接E1,1個引用模塊。(3)1個HouseLoanAgency模塊,實現(xiàn)接口HouseLoanAgencyService。(4)4個Bank模塊,實現(xiàn)接口BankService。每個{ava接口實現(xiàn)了一個業(yè)務,新的房屋貸款服務LoanBrokerService構建在五個已知服務之上的,在此稱之為一個Web服務流程。該流程的業(yè)務時序圖設計如圖5.5所示,反映了這些業(yè)務之間的關系。目叵巫國;1.提交查’向信息;圖5-5Web服務流程時序圖在該流程中,LoanBrokerService服務接收客戶的輸入信息客戶姓名,引用HouseLoanAgencyService服務,通過客戶姓名查詢房間數(shù)量。根據(jù)該客戶擁有的房間數(shù) 碩士學位論文第五章面向服務架構的企業(yè)應用集成架構應用量,判斷調用哪個具體的BankService服務,獲取客戶的貸款額度。5.4.3模塊設計根據(jù)上一節(jié)中業(yè)務功能的分析,奉系統(tǒng)的,F(xiàn)發(fā)中涉及到兩個大的服務模塊。為此對這兩個模塊進行設計和分析。(1)Web服務實現(xiàn)模塊。它負責創(chuàng)建房屋貸款實現(xiàn)服務,并將服務模塊發(fā)布成Web服務供外部調用。創(chuàng)建+個房屋貸款的w曲服務的實現(xiàn)模塊豐要實現(xiàn)以下內容:一是,WSDL文件的創(chuàng)建,SCAOJ建的w曲服務將會以WSDL的“portType”作為SCA的服務接口;二是,創(chuàng)建SCA的Java實現(xiàn)類,因為要實現(xiàn)W曲服務的遠程調J}{j,所以需要在Java接口(Inter:face)中加入遠程調用注釋“@Remotable”和服務注釋“@Service’’,同時也需要在Java實現(xiàn)類中加上服務注釋“@Service”;三是,配置SCA服務模塊,主要是在配置文件中加上W曲服務的綁定。如圖5.6所示,設計了房屋貸款Web服務實現(xiàn)模塊的架構圖。駁mn務B組ro件ke么r\竺.1夕\服務組件,∥7¨_/蘿≯/,∞嬲努。≥!!>L。an服務Brok/e'擎..>引由>≤>腦C咄om峪poervnen沁t服務/l/服務///々¨”,/z}/Web服務綁定墓燮爹串Bacomnk2咖Serev,圖5-6房屋貸款web服務實現(xiàn)模塊架構由圖所示,涉及到5個基本的服務組件:houseLoanAgencyComponent,Bank0ServiceComponent,。BanklServiceComponent,Bank2ServiceComponent,Bank3ServiceComponent和LoanBroker服務組件。它們提供不同的服務,houseLoanAgencyComponent服務組件根據(jù)客戶的姓名得到客戶的房屋數(shù)量; 碩l:學位論文第五章面向服務架構的企業(yè)應用集成架構心用Bank0ServiceComponent,BanklServiceComponent’Bank2ServiceComponent,Bank3Ser啊ceComponent服務組件根據(jù)客戶擁有房屋數(shù)量返回貸款信息,包括貸款銀行、貸款利率和首付比率;LoanBroker服務組件:將會以上面所有的基本業(yè)務組件的服務作為引用,集成所有上面的服務組件。它將首先調用houseLoanAgeneyComponent組件,得到客戶的房屋數(shù)量,再根據(jù)房屋數(shù)量調用不同的Bank服務。這些SCA服務組件組裝成Web服務實現(xiàn)模塊。通過編寫配置文件loanbrokerws.composite束組裝各個SCA組件。圖5.7靜態(tài)類圖顯示了這些組件的java實現(xiàn)類之間的靜態(tài)關系。<>LoanBrokerServieeZ∑LoanBrokerlmpl<>HouseLoanAgencyServieeZ∑HouseLoanAgencylmpl)圖5-7靜態(tài)類圖Bank服務的接口類為BankService.java,用來返回客戶的貸款額度。LoanBrokerService.java是房屋貸款的java接口類,它通過SCA的Java注釋機制來定義W曲服務的遠程接口。LoanBrokerlmpl.java是房屋貸款的實現(xiàn)類,其中,要實現(xiàn)W曲服務而加入了SCA的服務注釋@Service,并通過引用注釋@Reference來弓l用其它幾個服務。(2)Web服務引用模塊。它不實現(xiàn)服務,只是通過W曲服務來引用前面所創(chuàng)建的服務模塊的服務。創(chuàng)建一個房屋貸款的w曲服務引用模塊主要完成以下幾個方面的工作:創(chuàng)建WSDL文件,SCA創(chuàng)建的Web服務引用模塊將會通過實現(xiàn)W曲服務的綁定,這里不需要另外創(chuàng)建WSDL,利用前面創(chuàng)建的WSDL文件即可;創(chuàng)建SCA的Java實現(xiàn)類,一個是Java接口類,另一個是Java實現(xiàn)類。在Java實現(xiàn)類中直接調用遠程接口的方法即可;配置SCA服務模塊,主要是要在配置文件中通過應用(Reference)hI_LWebl]毆務的綁定。W西服務引用模塊架構如圖5.858 顧十學位論文第五章面向服務架構的企業(yè)應用集成架構應用所示。廠]C1ient}lI}.................................J圖5-8Web服務引用模塊架構Web服務綁定為此,在開發(fā)Web服務引用模塊中,開發(fā)引用遠程Web服務的接口類LoanBrokerService.java及其對應的LoanBrokerServiceComponent.java,編寫配置文件loanbrokerwsclient.composite來組裝各個SCA組件。同時要創(chuàng)建客戶端調用程序LoanBrokerClient.java。在客戶端,LoanBrokerClient.java調用引用組件LoanBrokerServiceComponent,LoanBrokerServiceComponent通過W曲服務綁定引用遠程的服務器端上W曲服務實現(xiàn)組件。5.4.4客戶端調用通過創(chuàng)建客戶端的調用程序來調用SCA的W曲服務引用組件,然后SCA的服務引用組件通過W曲服務綁定調用遠程的W曲服務實現(xiàn)組件。首先實例化SCADomain,通過SCADomain實例得到房屋貸款服務的java接ISlLoanBrokerService,再通過接121調用getQuoteObject方法,得到返回數(shù)據(jù)對象后使用XMLHelper.INSTANCE.save方法將整個數(shù)據(jù)對象顯示出來。如下程序邏輯所示: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(); 碩上學位論文第五章面向服務架構的企業(yè)應用集成架構應用SCADomain是一個抽象類,通過其實現(xiàn)類獲得Domain組件的實例。SCADomain有幾個實現(xiàn)類,如靜態(tài)類圖5.9所示。圖5-9SCADomain及其實現(xiàn)類.其中,DefaultSCADomain是SCADomain的一個實現(xiàn)類,本代碼中SCADomain.createlnstanceO通過DefaultSCADomain構造一個SCADomain類型的實例,其包含了一個運行對緣ReallySmallRuntime,該對象實現(xiàn)擴展機制。SCADomain的實例化過程中完成擴展點注冊器實例化、注冊對象到擴展點注冊器、加載ModuleActivator、解析策略配置文件definitions.xml、資源加載(資源查找,解析)、資源組裝(build,activate,start)的工作。然后通過SCADomain的對外接口來獲取服務。5.5系統(tǒng)開發(fā)問題分析基于面向服務架構的企業(yè)應用集成架構SSWSOA作為一個全新的集成架構,在應用該架構來系統(tǒng)集成的過程中,會遇到一些細節(jié)、重要性的開發(fā)技術問題。本節(jié)會針對開發(fā)中的技術問題進行予以分析研究。(1)創(chuàng)建W曲服務描述文件(WSDL)的解決方案。SCA服務組件中w.eb服務的綁定要依賴于WSDL文件,所設計的兩個模塊都用到房屋貸款的Java接口類對應的WSDL文件,因此WSDL的創(chuàng)建是本系統(tǒng)開發(fā)中重要的一個技術。在此提出一個創(chuàng)建WSDL文件的解決方案,通過Java類來生成WSDL,這樣不用手動編寫WSDL文件,減少工作量以及提高WSDL文件的正確率。這種解決方案要利用ApacheAxis的Java2WSDLSE具、Jdk開發(fā)工具包以及T0mcat服務器搭建一個環(huán)境來實現(xiàn)從Java類至I]WSDL文件的生成。在控制臺下使用axis提供的Java2WSDL命令:javaorg.a(chǎn)pache.a(chǎn)xis.wsdl.Java2WSDL60 碩l:學位論文第五章面向服務架構的企業(yè)應用集成架構應用吣loanbroker.wsdl—lhttp://localhost:8085/LoanBrokerService·nhttp://loanbroker-ploanbroker=http://loanbrokerloanbroker.LoanBrokerServieeloanbroker.LoanBrokerService是類的全路徑:包名+類名。如果沒有拋出異常,就可生成了W曲服務描述文件loanbroker.wsdl。(2)遠程接El(RemoteInterface)。一個遠程服務是指那些被運行在不同操作系統(tǒng)進程里或在不同機器上的客戶端調用的服務。服務的接【:l的定義表明了該服務是否是遠程服務。在本系統(tǒng)開發(fā)中,Web服務實現(xiàn)模塊與w曲服務引用模塊處于不同的操作系統(tǒng)進程中,因此,為了實現(xiàn)客戶端對Web服務實現(xiàn)模塊中服務的調用,需要開發(fā)服務為遠程的服務。Web服務實現(xiàn)模塊實現(xiàn)了Web服務的遠程調用(Remoteinvoke),在Java接I:1LoanBrokerService.java中加入了注釋“@Remotable",實現(xiàn)對遠程服務的調用。與遠程接口對應的是本地接口,其服務只能被與其實現(xiàn)的組件處于相同過程的客戶端所調用。Java方式定義的接E1,沒有@Remotable定義的,默認為本地服務。通過Java類而不是接口來定義的服務是不可以作為遠程服務的,而從WSDLportTypes生成的Java接口則總可以是遠程接口。遠程接口通常設計成粗粒度,以用于松耦合的交互。遠程服務接口不允許方法或操作的重載。無論遠程服務是被外部調用還是被模塊內部的其它組件調用,數(shù)據(jù)的傳遞均為值(by-value)傳遞。遠程服務在實現(xiàn)時,可以在調用中或調用后修改輸入數(shù)據(jù),或在調用后修改返回數(shù)據(jù)。但是對于一個遠程服務進行的每次本地或遠程調用,SCA容器應該確保對輸入數(shù)據(jù)或發(fā)生在調用后對返回數(shù)據(jù)的修改應該對調用者不可見。一個遠程接口可以在接口定義中指明是否通過傳引用來進行參數(shù)傳遞,以避免進行參數(shù)的值拷貝。允許傳引用的遠程服務的實現(xiàn)不應該允許在調用期間修改輸入數(shù)據(jù),也不能在調用后修改返回數(shù)據(jù)。@AllowsPassByReference注釋可以用在接口或單個的方法上,用來定義是否通過傳引用來進行參數(shù)傳謝61】。(3)SCAJava注釋機制。Java注釋機制用來識別服務參照和屬性以及如何注釋實施中使用的字段,通過這種技術實現(xiàn)服務組件類型的輕松描述。@Reference指定引用名和@Service指定java接口名,@Property實現(xiàn)屬性注入:服務組件定義語言SCDL(ServiceComponentDefinitionLanguage)所定義的配置文件loanbrokerws.composite聲明了組件之間的引用,在使用一個引用的時候,需要在組件實現(xiàn)中使用@Reference注釋注入,LoanBroker服務組件需要引用另外的四個組件,代碼片段如下:@Service(LoanBrokerService.class)//LoanBrokerService接口的實現(xiàn)代碼publicclassLoanBrokerlmplimplementsLoanBrokerService{61 碩士學位論文第五章面向服務架構的企業(yè)心用集成架構應用@PropertyprotectedStringclientName;//成員變量privateHouseLoanAgencyServicehouseLoanAgencySerVice:@ReferencepublicvoidsetHouseLoanAgencyService(HouseLoanAgencyServicehouseLoanAgencyService){this.houseLoanAgencyService=houseLoanAgencyService;)由此片段得知,LoanBrokerJ]&務組件引用houseLoanAgencyComponent服務組件得到客戶的房屋數(shù)量。注釋@Reference會告訴SCA運行時,Java實現(xiàn)類里的變量域“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實現(xiàn)類與組件配置的映射關系620LIS(Sea.忙dⅣcC.:Sb固Ⅲ站A吣啪烈咎∞徂d∞唱出篡 碩.1二學位論文第五章面融服務架構的企業(yè)應用集成架構成用LoanBrokerlmpl.java是房屋貸款的實現(xiàn)類,@Service注釋聲明了一個服務,表明LoanBrokerlmpl.java實tr覓LoanBrokerService.java接L1。(4)Web服務綁定。它是服務組件架構中極其重要的機制,使用綁定的思想解決了SCA與其它技術的交互問題,解決了SCA如何構建其它服務的問題,也解決了其它的服務服務如何來使用SCA。綁定(Binding)是用來訪問組件中的服務。在SCA中主要用在服務和引用里。服務中的綁定表示該服務的客戶端調用調用該服務時需要使用的訪問機制,而引用中的綁定表示該引用調用其它服務時所使用的訪問機制。SCA和目前的組件(如EJB、WebService、JMS)的根本區(qū)別在于SCA組件的Service、Reference和傳輸協(xié)議是一種松散耦合的關系,可以綁定不同的傳輸協(xié)議,而且可以修改綁定。SCA支持多種類型的綁定,常見的綁定類型有SCA綁定、W曲服務綁定和JMS綁定【3引。在系統(tǒng)的的開發(fā)中兩次使用W曲服務綁定,在此對兩處的W曲服務綁定予以分析。一是W曲服務實現(xiàn)模塊的配置文件loanbrokerws.compositeqb通過serviee:元素創(chuàng)建W曲服務的綁定,供引用模塊來調用。二是在W曲服務引用模塊的配置文件Loanbrokerwsclient.Composite@J嗵過reference元素來創(chuàng)建W曲服務的綁定,以說明要調用一個w曲服務。由此得出,W曲服務綁定如果用在服務里,表明這個服務可以被當成一個W曲服務來訪問;如果用在引用里,表明這個引用要調用的是一個W曲服務。因此,在配置文件的開發(fā)時,要特別注意W曲服務綁定是用在服務還是引用里。在開發(fā)中,利用了W曲服務綁定的兩種形式。一是直接通過“uri".另一通過“wsdlElement”。由于綁定總是和接口在一起,因此在開發(fā)時先要定義服務的接口,格式如下:。然后,進行W曲服務綁定的定義。(5)SDO的運用。目前系統(tǒng)開發(fā)中數(shù)據(jù)代碼和業(yè)務代碼基本上處于一種緊密耦合的狀態(tài),如面向對象的開發(fā)中,JavaBean根據(jù)業(yè)務需求來定義屬性字段,當業(yè)務有一點變化,或是數(shù)據(jù)庫表中添加一個新的字段,對于使用JavaBean對象的地方都需要做相應的修改,這樣就加大了開發(fā)人員的工作。在本系統(tǒng)的開中,使用服務數(shù)據(jù)對象作為各層之間傳遞數(shù)據(jù)的形式,實現(xiàn)了業(yè)務代碼與數(shù)據(jù)代碼的解藕,對數(shù)據(jù)的操作變得更容易,實現(xiàn)了不同層之間的松耦合。在數(shù)據(jù)訪問層,RDBDAS根據(jù)從數(shù)據(jù)庫查詢返回的記錄集創(chuàng)建DataObject以及把DataObject的修改持久化到數(shù)據(jù)庫,都需要完成數(shù)據(jù)庫表與DataObject之間的映射。這種映射類似與對象/關系映射(ORM),它將對象和它們之問的關聯(lián)映射到數(shù)據(jù)庫中的表以及表之間的關系。在此,對DAS對象/關系映射機制進行分析。數(shù)據(jù)庫模式對應DataObject類型(Type),即一個表對應到一個Type;表的列對應DataObject的數(shù)據(jù)屬性(Property);表之間的關系對應DataObject的關聯(lián)屬性(Property)?;緮?shù)據(jù)類型的映射通過數(shù)據(jù)訪問服務配置文件中RDBDAS中DataObject與關系數(shù)據(jù)庫問的映射配置完成,從而將數(shù)據(jù)庫 碩士學位論文第五章面向服務架構的企業(yè)應用集成架構應用表中額度信息記錄轉換成服務數(shù)據(jù)對象的DataObject。在數(shù)據(jù)訪問服務類DBlnit類中對數(shù)據(jù)庫的查詢操作均以DataObject作為返回類型。部分代碼如下:publicDataObjectselectByHouseNum(inthousenum){//DAS調用配置文件中定義好的sql命令Commandcmd=das.getCommand("selecthousenum”);cmd.setParameter(I,housenum);//執(zhí)行sql命令,返回數(shù)據(jù)對象DataObjectroot=cmd.executeQueryO;returnroot.getDataObject(”quote[1]”);)在此代碼中,通過數(shù)據(jù)訪問服務實例創(chuàng)建一個Command實例,然后執(zhí)行對數(shù)據(jù)庫的操作得到與數(shù)據(jù)庫表中記錄對應的DataObject。由于查詢操作可能有符合條件的多條記錄,因此在返回時getDataObject(”quote[1]”)方法使用了Ⅺ,tah表達式技術指定一個特定的屬性quote[1],索引號為1表明獲取其中的一個數(shù)據(jù)對象。此外,在服務層中,DataObject作為各個模塊之間數(shù)據(jù)傳遞的形式。如實現(xiàn)BankService接口的四個模塊以DataObject作為輸出返回給LoanBorker集成模塊。5.6本章小結本章主要論述了個人房屋貸款系統(tǒng)的設計和實現(xiàn)過程,將第四章設計的基于面向服務架構的企業(yè)應用集成架構應用于該系統(tǒng),使得該系統(tǒng)具有良好的松散耦合和易集成的特性。首先對個人房屋貸款系統(tǒng)業(yè)務背景進行分析,通過對目前支持SCA的編程環(huán)境的集成環(huán)境與工具進行了分析提出本系統(tǒng)開發(fā)使用到的技術、工具。接著,基于設計的集成架構SSWSOA對系統(tǒng)進行總體設計并分析了每層所使用的技術。然后,從數(shù)據(jù)訪問、業(yè)務功能、模塊設計以及客戶端調用幾個角度對系統(tǒng)進行實現(xiàn)。最后,論述了系統(tǒng)開發(fā)中的一些技術性問題。 碩l:學位論文第六章總結‘i展肇第六章總結與展望面向服務架構的提出使得構建動態(tài)、可擴展的企業(yè)應用集成架構解決方案成為可能,Web服務、服務組件架構和服務數(shù)據(jù)對象技術的相繼成熟為面向服務架構以及企業(yè)應用集成提供了技術支持。.因此,面向服務架構不再單單作為一種架構理念,更重要的是成為一種軟件工程實踐方法。本文正是闡繞面向服務架構和企業(yè)應用集成,利用實現(xiàn)基于面向服務架構的企業(yè)應用集成技術Web服務、服務組件架構和服務數(shù)據(jù)對象設計了一種新型的集成架構SSWSOA,它區(qū)別于傳統(tǒng)的企業(yè)應用集成架構。該集成架構SSWSOA能夠方便快捷地集成企業(yè)現(xiàn)有的遺留系統(tǒng),實現(xiàn)系統(tǒng)間的互操作性和集成的有效性。6.1論文總結在軟件體系架構中應用面向服務架構是毫無疑問的發(fā)展趨勢,越早地理解面向服務架構并且以面向服務架構思想構建系統(tǒng),意味著越少的后期業(yè)務變更或系統(tǒng)整合的投入。在企業(yè)應用集成中,通過面向服務架構下的Web服務技術,對于構建單個服務,使業(yè)務模塊或系統(tǒng)問的交互性邁出了很大的一步,但Web服務仍然存在組件和傳輸協(xié)議緊耦合、服務組裝不靈活等問題。服務組件架構、服務數(shù)據(jù)對象技術的出現(xiàn),發(fā)展了目前面向服務架構中基于Web服務的集成技術,為企業(yè)應用集成提供一個服務組裝模型。本文的研究工作就是在這樣一個背景下展開的。本文的研究圍繞企業(yè)應用集成展丌,首先闡述了企業(yè)應用集成的相關理論和技術,分析了面向服務的體系架構的相關理論知識,W曲服務、服務組件架構、服務數(shù)據(jù)對象編程技術。接著,闡述企業(yè)應用集成的理論,提出基于面向服務架構的企業(yè)應用集成解決方案,該集成方案有兩種實現(xiàn)的形式。分析了基于W曲服務應用集成原理,設計了一個基于Web服務的企業(yè)應用集成架構并分析了Web服務應用集成的優(yōu)點以及分析了基于服務組件架構的企業(yè)應用集成。然后,在此分析研究的基礎上,提出了一個新型的基于面向服務架構的企業(yè)應用集成架構解決新方案。該方案基于服務組件架構、服務數(shù)據(jù)對象和Web服務技術,設計了SSWSOA架構并對架構、服務合成與匹配、數(shù)據(jù)訪問服務等進行了分析。最后,結合設計的SSWSOA架構,對個人房屋貸款系統(tǒng)的進行設計和實現(xiàn)并對開發(fā)中的主要問題進行了分析。面向服務架構有極大的優(yōu)越性,越來受到人們的重視。它可以讓我們從更高的層次來思考問題,以便構建、集成靈活的和功能強大的系統(tǒng)。而且基于面向服務架構的企業(yè)應用集成具有易集成性、優(yōu)秀的擴展性和易于維護性。采用面向服務架構,還可以進行快速開發(fā),大大提高開發(fā)效率和降低成本。本文中實現(xiàn)基于面向服務架構的企業(yè)應用集 碩’I:學位論文成關鍵技術服務組件架構、服務數(shù)據(jù)對象為開發(fā)基于面向服務架構的應用系統(tǒng)帶來許多有益的方面。服務組件架構提供的自頂向下的方法、可重用性、技術異構性和組裝機制為基于面向服務架構的企業(yè)應用集成提供了更靈活的編程模型以及更高的敏捷性。服務數(shù)據(jù)對象提供的標準化方法對異構的數(shù)據(jù)源提供了統(tǒng)一的數(shù)據(jù)訪問技術,實現(xiàn)了數(shù)據(jù)代碼與業(yè)務代碼的解耦,減少了丌發(fā)人員在數(shù)據(jù)編程方面的復雜性。6.2工作展望面向服務架構本質上是一種思想,它超越了所有的具體技術,也超越了所有的具體的架構:同時面向服務架構也包容這些具體的技術和架構。當前面向服務架構己應用于企業(yè)的應用丌發(fā)中,成為了一種重要的軟件工程實踐方法,在當前以及未來的應用丌發(fā)中將是重要的研究方面。根據(jù)目前的發(fā)展趨勢,可以預見,服務組件架構、服務數(shù)據(jù)對象、BPEL以及它們之問的結合將會在未來的軟件體系架構和企業(yè)應用集成中得到越來越多的支持和應用。本文雖然對基于面向服務架構的企業(yè)應用集成理論、關鍵技術以及實施進行了較為全面和詳盡的分析研究,但是仍有一些需進一步研究的方面沒有涉及,它們包括:(1)SCA支持多種語言技術,但是,在本文中涉及的SCA組件的開發(fā),SDO編程均是利用了Java開發(fā)語言。因此,需要進一步研究在不同開發(fā)語言下(如C++,Ci!i}等)服務具體實現(xiàn)的綁定、服務發(fā)布和發(fā)現(xiàn)、客戶端的調用等。(2)鑒于對企業(yè)應用集成開發(fā)經(jīng)驗的缺乏,因此本文在設計過程中難免考慮不夠周全。比如集成后系統(tǒng)的性能、交互性、安全性問題以及可靠性消息、事務等非業(yè)務邏輯的策略(Policy)管理等都有待進一步的探索研究。(3)SDO技術的進一步掌握,除了論文中提及的功能外,SDO具有反射、元信息、約束、驗證等功能,全面掌握SDO編程技術才能更好地處理企業(yè)應用集成中數(shù)據(jù)編程問題。此鄉(xiāng)'I'SDO的安全性需進一步的分析。(4)BPEL的研究,BPEL是針對復雜業(yè)務流程的最好選擇,盡管BPEL是針對w曲服務提出的,但它在SCA中得到了很好的支持,SCA和BPEL的結合能充分發(fā)揮SOA的優(yōu)勢,需進一步的研究。上述方面的研究將會進一步推動軟件體系結構和企業(yè)應用集成的發(fā)展。我相信面向服務架構、服務組件架構、服務數(shù)據(jù)對象以及Web服務等技術必然在未來的軟件體系結構和企業(yè)應用集成中得到廣發(fā)的支持和應用。 碩‘J:學位論文參考文獻【l】謝小軒,張浩等.企業(yè)應用集成綜述【J】.計算機工程與應用,2002,38(22):l~5[2】喬小東.EJB組件技術分析[J】.微處理機,2006,12(5):68-70【3】劉通,張亞男.基于Xfire的分布式JavaWebServices的應用【J】.長春工業(yè)大學學報:自然科學版,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的研究與實現(xiàn)[J】.計算機工程與設計,2007,28(9):234~236【8】楊清平,邱玉輝,蒲國林.基于Qos和OWL—S的W曲服務發(fā)現(xiàn)研究【J】.2009,36(3):14亂147[9】李曼.基于領域本體的W曲服務動態(tài)組合【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系統(tǒng)的設計與實現(xiàn)[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的應用系統(tǒng)丌發(fā)初探【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+思想、技術與系統(tǒng)集成+應用詳解【M】.北京:電子工業(yè)出版社,2007.359-368[25】柴曉路,梁宇奇.W曲Services技術、架構和應用[M】.北京:電子工業(yè)出版社,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】.網(wǎng)絡與信息,2007,(1):75~76[30】(美)ThomasErl.SOA概念、技術與設計(王滿紅,成榮華譯)【M】.北京:機械工業(yè)出版社,2006.103~105【31】SteinerM,TsudikG,WaidnerM.Diffie—Hellmankeydistributionextendedtogroupcommunication[C].Proceedingsofthe3rdACMConferenceOnComputerandCommunicationsSecurity,1996.31~37【32】柴晟,羅傳軍,卓畢生.基于SOAP的W曲Services開發(fā)的關鍵技術fJ】.計算機與現(xiàn)代化,2007,(8):104--106【33】李玲,袁;JEth,張敏.基于WSDL文件生成測試用例的研究[J】.計算機技術與發(fā)展,2007,17(10):54~56【34】NieolmM.Josuttis.SOA實踐指南(程樺譯)【M】.北京:電子工業(yè)出版社,2008.218-220【35】祁金華.下一代編程架構:SCA/SDO/BEPL[J].軟件世界,2006,(17):82【36】堯飄海,張云華等.基于SCA的面向服務的設計與實現(xiàn)【J】.計算機系統(tǒng)應用,2008,(8):28~31 碩上學位論文參考文獻【37】王紫瑤,南俊杰,段紫輝等.SOA核心技術及應用[M】.北京:電子工業(yè)出版社,2008.48-56【38】閏建新,張宇,陸東泰等.基于JBI標準的企業(yè)集成中間件研究【J】.微計算機信息,2007,23(27):11-13【39】馮新?lián)P,崔凱,沈建京.面向插件的應用框架研究與實現(xiàn)【J】.計算機工程與應用,2009,45(10):89-91[40】毛新生.SOA原理·方法·實踐【M】.北京:電子工業(yè)出版社,2007.294~296【4l】(美)NorbertBieberstein等著SOA實踐指南一執(zhí)行SOA(T_海鵬譯)【M】.北京:機械工業(yè)出版社,2009.120--122【42】IBM,Sun等.Next—Gen—Data-Programming-Whitepaper[S].2005.“【43】陳立巖.EJB組件技術及應用【J】.計算機技術與發(fā)展,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,F(xiàn)rancisX,Maginnis.EnterpriseApplicationIntegration(張博等譯)[M】.北京:機械工業(yè)出版社,2003.86--89[47】柴曉路.W曲服務輕松進行企業(yè)應用集成[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商業(yè)流程建模[J】.科技情報開發(fā)與經(jīng)濟,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】.湖北工業(yè)大學學報,2005,2(4):38-41[57】張洪斌.WebSphereSen慣平臺的J2EE實例開發(fā)指南【M】.北京:機械工業(yè)出版社,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學位論文致謝在學位論文完稿之際,特別向我的導師王加陽教授表示衷心的感謝。在我攻讀碩士研究生階段,老師對我的學習和科研工作給予了悉心關懷和耐心指導。從課題選擇、進度安排、論文寫作等方面,老師始終給予我精心的指導,與老師的每一次交流都使我的思維得到肩迪,視野得到開拓,我的每一點進步都與老師的言傳身教分不開。王老師嚴謹求實的治學態(tài)度,高度的敬業(yè)精神,孜孜以求的工作作風顯示出卓越的學者品質。他的兢兢業(yè)業(yè)、一絲不茍的作風將會一直是我學習、工作中的榜樣。能夠順利完成我的碩士學業(yè),得益于王老師的實在太多。在此,再次向尊敬的王老師表示我最誠摯的感謝,祝愿他身體健康,萬事如意!同時也非常感謝研究生學習期問授課老師們,它們的授課豐富了我的知識,開拓了我的視野,使我獲益匪淺。這些都將是我以后人生中非常寶貴的一筆財富!感謝幾年來和我朝夕相處的實驗室成員們。在實驗室.咀與他們共同學習、科研的日子足我生命中一段寶貴的時光和美日阿的回憶。他們給了我方方面面的幫助和許多好的建議和意見,請允許我一并表示感謝。我還要感謝我的父母,感謝他們多年來給予我的支持、理解和愛,感謝他們對我的殷切希望和給予我的無限動力。最后,謹向百忙之中抽出寶貴時問評審本論文的老師致以最誠摯的謝意171尹兆冰2010年4月于中南大學 碩f?學位論文攻讀碩}:學位期問差要的研究成果攻讀碩士學位期間主要的研究成果【l】尹兆冰,王加陽.WebService及其關鍵技術研究綜述【J】.軟件導刊,2010,9(2):121-123【2】尹兆冰.WebService技術及其實現(xiàn)研究[A】.見:中南大學信息科學與工程學院2009年研究生學術論文集[C】.長沙:中南大學信息科學與工程學院,2009

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。
關閉