服務(wù)計(jì)算概論_第1頁(yè)
服務(wù)計(jì)算概論_第2頁(yè)
服務(wù)計(jì)算概論_第3頁(yè)
服務(wù)計(jì)算概論_第4頁(yè)
服務(wù)計(jì)算概論_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第一章緒論§1.面向效勞計(jì)算概述1.1效勞計(jì)算起因和概念隨著經(jīng)濟(jì)全球化和電子商務(wù)的普及,當(dāng)代企業(yè)必須要面對(duì)不斷變化的市場(chǎng)條件、劇烈的競(jìng)爭(zhēng)壓力、新出臺(tái)的法規(guī)以及新的競(jìng)爭(zhēng)威脅,從而企業(yè)要獲得競(jìng)爭(zhēng)優(yōu)勢(shì)就要不斷調(diào)整其業(yè)務(wù)模式和需求。因此,企業(yè)應(yīng)用要能需要根據(jù)業(yè)務(wù)的需要變得更加靈活,能夠?qū)I(yè)務(wù)模式和業(yè)務(wù)需求的變化迅速做出反響,具有“隨需而變”的敏捷性。這種敏捷性表達(dá)在新的業(yè)務(wù)可以通過(guò)組合現(xiàn)有的效勞快速構(gòu)造出來(lái),業(yè)務(wù)的調(diào)整也可以通過(guò)調(diào)整效勞之間的關(guān)系迅速改變。這種應(yīng)用集成既包括企業(yè)內(nèi)的各種應(yīng)用系統(tǒng)之間的集成,也包括集團(tuán)企業(yè)總部與下屬企業(yè)、企業(yè)與上下游伙伴之間的業(yè)務(wù)協(xié)同。但是,構(gòu)建“隨需而變”的應(yīng)用。面對(duì)怎么樣的環(huán)境呢?隨需應(yīng)變的軟件應(yīng)用需要考慮三個(gè)因素:重用、標(biāo)準(zhǔn)化封裝和松耦合組裝。重用不僅可以被其它效勞或使用者調(diào)用,而且可以與其它效勞一起組合成新的效勞;標(biāo)準(zhǔn)化封裝通過(guò)提供統(tǒng)一的描述標(biāo)準(zhǔn),消除軟件對(duì)語(yǔ)言、平臺(tái)和廠家的依賴(lài);松耦合組裝利用松耦合的組件構(gòu)造靈活可變的企業(yè)應(yīng)用。但是,假設(shè)實(shí)現(xiàn)企業(yè)應(yīng)用的快速調(diào)整和構(gòu)造,傳統(tǒng)的分布式計(jì)算技術(shù)存在兩大難題:一是應(yīng)用程序客戶端和效勞端之間的緊密耦合問(wèn)題,以微軟的DCOM為例,客戶端和效勞器端都要求遵循同樣的API,一旦一個(gè)COM對(duì)象代碼有改變,那么訪問(wèn)該對(duì)象的客戶端代碼也需要相應(yīng)的更改。二是不同應(yīng)用程序之間的異構(gòu)問(wèn)題。由于企業(yè)應(yīng)用嚴(yán)重依賴(lài)計(jì)算環(huán)境,從而使得同一企業(yè)不同應(yīng)用之間,不同企業(yè)應(yīng)用之間還不能有效地相互集成??傊?,傳統(tǒng)架構(gòu)存在的最大缺陷就是對(duì)變化的適應(yīng)性差,難以適應(yīng)企業(yè)不斷變化的業(yè)務(wù)需求。構(gòu)造靈活可變的企業(yè)應(yīng)用系統(tǒng)必須通過(guò)建立松耦合的計(jì)算環(huán)境來(lái)實(shí)現(xiàn)。計(jì)算環(huán)境包含一組計(jì)算機(jī)、軟件平臺(tái)、協(xié)議和相互連通的網(wǎng)絡(luò)。在該計(jì)算環(huán)境中,計(jì)算機(jī)之間、軟件平臺(tái)之間可以通過(guò)網(wǎng)絡(luò)按照協(xié)議實(shí)現(xiàn)數(shù)據(jù)交換和信息處理。采用標(biāo)準(zhǔn)化的效勞描述將企業(yè)應(yīng)用進(jìn)行封裝,通過(guò)以編程方式實(shí)現(xiàn)的自描述接口,提供效勞的核心功能,屏蔽了應(yīng)用的實(shí)現(xiàn)細(xì)節(jié),這樣可以通過(guò)效勞描述訪問(wèn)效勞構(gòu)造企業(yè)應(yīng)用。形象地說(shuō)就是將軟件封裝成類(lèi)似于硬件模塊帶接口的構(gòu)件,在接口匹配的情況下可以隨時(shí)“插入”特定的軟件應(yīng)用完成相應(yīng)的功能,使效勞之間〔企業(yè)內(nèi)或跨企業(yè)〕以松散耦合的形式互聯(lián)、互操作完成特定的業(yè)務(wù)需求?;谛诟拍畹馁Y源封裝和抽象逐漸成為資源發(fā)布、共享和應(yīng)用協(xié)同的重要技術(shù)根底。這樣,剝離了客戶端和效勞器端之間的語(yǔ)言/平臺(tái)依賴(lài),消除了不同應(yīng)用之間由于采用的不同系統(tǒng)、不同平臺(tái)和不同語(yǔ)言所造成的異構(gòu)。在接口描述不變的情況下,效勞實(shí)現(xiàn)的任意變更都不會(huì)對(duì)應(yīng)用產(chǎn)生影響。這樣,一方面可以將遺留系統(tǒng)封裝為效勞進(jìn)行重用,一方面可以直接調(diào)用企業(yè)外效勞提供商提供的效勞,從而可使開(kāi)發(fā)者更快速、敏捷地根據(jù)企業(yè)業(yè)務(wù)的變化,構(gòu)造企業(yè)應(yīng)用。面向效勞計(jì)算(SOC)是一種新的計(jì)算范式,它利用效勞為根本構(gòu)建塊,支持異構(gòu)環(huán)境下分布式應(yīng)用的快速、低本錢(qián)、便捷的組合。這種方法的根本思想是通過(guò)重用已有的網(wǎng)絡(luò)效勞而不是重新開(kāi)發(fā)來(lái)構(gòu)造企業(yè)應(yīng)用。重用和組裝是這個(gè)方法的核心,松散耦合是這個(gè)方法的本質(zhì)。重用就是使應(yīng)用系統(tǒng)具有較強(qiáng)的獨(dú)立性,以便其作為一個(gè)“零部件”能隨時(shí)被單獨(dú)使用;組裝就是高效而靈活地將跨組織、跨平臺(tái)的應(yīng)用無(wú)縫地進(jìn)行組合來(lái)構(gòu)造滿足企業(yè)需求的應(yīng)用。松散耦合的目標(biāo)是使應(yīng)用系統(tǒng)之間的依賴(lài)到達(dá)最小,任何應(yīng)用系統(tǒng)的更改和錯(cuò)誤對(duì)其他的應(yīng)用系統(tǒng)沒(méi)有影響。效勞是自治的,與平臺(tái)無(wú)關(guān)的計(jì)算實(shí)體。效勞是可描述,可發(fā)布、可發(fā)現(xiàn)的、可以動(dòng)態(tài)組裝成分布式的、可交互的、可擴(kuò)展的系統(tǒng),效勞可以包括從執(zhí)行簡(jiǎn)單的請(qǐng)求到復(fù)雜的業(yè)務(wù)流程,該流程要求不同多種層的效勞消費(fèi)者和供給商之間點(diǎn)對(duì)點(diǎn)之間的關(guān)系。部署在一個(gè)系統(tǒng)中的任何一段代碼和任何應(yīng)用組件都可以重用,并且可以轉(zhuǎn)化為網(wǎng)絡(luò)效勞。實(shí)現(xiàn)這一思想的關(guān)鍵是面向效勞架構(gòu),SOA是一種符合邏輯的設(shè)計(jì)軟件系統(tǒng)的方式,通過(guò)已發(fā)布的或可發(fā)現(xiàn)的接口將效勞提供給終端用戶或者分布在網(wǎng)絡(luò)上的效勞。一個(gè)結(jié)構(gòu)良好、基于標(biāo)準(zhǔn)SOA通過(guò)以效勞的形式提供獨(dú)立的、可重用的應(yīng)用功能和更加健壯的根底,可以賦予企業(yè)更加靈活的根底設(shè)施和處理環(huán)境。Web效勞是當(dāng)今最有前途的面向效勞計(jì)算技術(shù),Web效勞利用互聯(lián)網(wǎng)作為傳輸媒介、利用開(kāi)放的基于因特網(wǎng)的標(biāo)準(zhǔn),如簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議SOAP作為傳輸數(shù)據(jù)、Web效勞描述語(yǔ)言WSDL用于效勞定義、業(yè)務(wù)流程執(zhí)行語(yǔ)言BPEL編排效勞。Web效勞解決了以往分布式計(jì)算平臺(tái)的兩大難題:一個(gè)是平臺(tái)之間的互操作問(wèn)題;另一個(gè)是客戶端和效勞端之間的緊密耦合問(wèn)題。它提供一個(gè)與操作系統(tǒng)無(wú)關(guān)、與程序設(shè)計(jì)語(yǔ)言無(wú)關(guān)、與機(jī)器類(lèi)型無(wú)關(guān)、與運(yùn)行環(huán)境無(wú)關(guān)的平臺(tái),實(shí)現(xiàn)網(wǎng)絡(luò)上應(yīng)用的共享。效勞技術(shù)是由作為一個(gè)整體的現(xiàn)代社會(huì)而形成的,特別是動(dòng)態(tài)業(yè)務(wù)、醫(yī)療、教育和政府效勞等關(guān)鍵領(lǐng)域,同時(shí)也將不斷推動(dòng)作為一個(gè)整體的社會(huì)的形成。通過(guò)封裝和重用業(yè)務(wù)的核心功能、增強(qiáng)靈活性、提高技術(shù)遷移的適應(yīng)性、改善操作效率,應(yīng)用效勞技術(shù)降低了復(fù)雜性和本錢(qián)。由于這些原因,面向效勞的范型可望得到迅速地應(yīng)用,由于它解決昂貴的、難以解決的業(yè)務(wù)和技術(shù)問(wèn)題,將比以往的任何應(yīng)用技術(shù)更具有前途。Servicestechnologiesarebeingshapedby,andincreasinglywillhelpshape,modernsocietyasawhole,especiallyinvitalareassuchasdynamicbusiness,health,educationandgovernmentservices.Applyingservicestechnologiesleadstoreducedcomplexityandcosts,exposingandreusingcorebusinessfunctionality,increasedflexibility,resiliencetotechnologyshiftsandimprovingoperationalefficiency.Forallthesereasons,itisexpectedthattheServiceOrientedComputingparadigmwillexhibitasteeperadoptioncurve,asitsolvesexpensiveandintractablebusinessandtechnologyproblems,andwillinfiltratemoreoftheapplicationsportfolio,thanpreviousapplicationtechnologies.SOC包括效勞根本原理、效勞組合、效勞管理和監(jiān)控以及面向效勞的工程?!?.效勞計(jì)算產(chǎn)生的背景效勞計(jì)算給軟件體系架構(gòu)以及軟件開(kāi)發(fā)方法帶了革命性的變化,軟件體系架構(gòu)從早期集中式的整體軟件體系結(jié)構(gòu)逐步開(kāi)展成為一種松散、靈活、易擴(kuò)展的分布式軟件架構(gòu)模式,效勞表達(dá)了面向效勞的編程方法,這種方法改變了傳統(tǒng)的重新開(kāi)發(fā)的軟件設(shè)計(jì)理念和方法,通過(guò)重用已有的網(wǎng)絡(luò)效勞構(gòu)造應(yīng)用的設(shè)計(jì)思想。不難看出,效勞計(jì)算是軟件體系架構(gòu)和軟件開(kāi)發(fā)方法不斷演化的產(chǎn)物,也是進(jìn)一步提高和加快軟件產(chǎn)業(yè)開(kāi)展的必然結(jié)果。2.1軟件體系架構(gòu)的開(kāi)展歷程軟件體系架構(gòu)是指構(gòu)成軟件系統(tǒng)的軟件元素、軟件元素外部可見(jiàn)的屬性以及這些軟件元素之間的關(guān)系。為便于說(shuō)明問(wèn)題,首先介紹軟件系統(tǒng)的分層邏輯結(jié)構(gòu)。一般而言,構(gòu)造軟件時(shí)都會(huì)遇到三類(lèi)問(wèn)題:⑴如何將軟件功能以圖形或字符人機(jī)界面的形式呈現(xiàn)給用戶;⑵如何編寫(xiě)實(shí)際的應(yīng)用邏輯實(shí)現(xiàn)軟件功能;⑶如果利用已有資源如數(shù)據(jù)庫(kù)、文件系統(tǒng)等完成對(duì)資源的管理和操作?;谝陨戏治觯浖w系架構(gòu)從邏輯上可以分為三層,即表示層、應(yīng)用邏輯層和資源管理層1.主機(jī)計(jì)算環(huán)境。其軟件體系架構(gòu)的特點(diǎn)是,軟件的所有功能集中由主機(jī)完成,而分布的是僅僅具有輸入輸出功能的啞終端或多人分時(shí)使用一臺(tái)計(jì)算機(jī)。其優(yōu)點(diǎn)是其所有功能都在一致的系統(tǒng)環(huán)境下實(shí)現(xiàn),因此可方便地對(duì)系統(tǒng)進(jìn)行調(diào)試。其缺點(diǎn)是組成系統(tǒng)的表示層、應(yīng)用邏輯層和資源管理層之間彼此緊密耦合、很難維護(hù)和擴(kuò)展;各個(gè)主機(jī)之間的數(shù)據(jù)、功能很難共享和相互調(diào)用。2.客戶/效勞器計(jì)算環(huán)境。通過(guò)局域網(wǎng)相互連接的計(jì)算設(shè)備構(gòu)成客戶/效勞器計(jì)算環(huán)境,這種體系架構(gòu)將表示層從集中式的效勞器中剝離出來(lái)轉(zhuǎn)移給客戶端,客戶和效勞器通過(guò)網(wǎng)絡(luò)協(xié)議、遠(yuǎn)程調(diào)用或消息等方式來(lái)相互協(xié)作,完成計(jì)算。其主要優(yōu)點(diǎn)是將表示層和其他兩層功能別離,降低了對(duì)效勞器的性能要求,支持跨平臺(tái)系統(tǒng)開(kāi)發(fā),還可以根據(jù)需要個(gè)性化地設(shè)計(jì)和實(shí)現(xiàn)表示層的樣式。主要缺點(diǎn)是客戶端和效勞器端之間緊密耦合,一般一個(gè)特定的客戶端只能連接到一臺(tái)效勞器,容易造成“信息孤島”;另外維護(hù)代價(jià)高,一旦應(yīng)用環(huán)境發(fā)生變化需要改變業(yè)務(wù)邏輯時(shí),每個(gè)客戶端程序都要進(jìn)行更新。3.多層分布式計(jì)算環(huán)境。為了滿足更高的可伸縮性需求,C/S計(jì)算環(huán)境派生出多層軟件架構(gòu),在C/S架構(gòu)根底上進(jìn)一步將效勞器端的應(yīng)用邏輯層和資源管理層別離,把應(yīng)用邏輯交給單獨(dú)應(yīng)用效勞器處理。其中,表示層被一分為二,通用功能由標(biāo)準(zhǔn)應(yīng)用軟件承當(dāng)、而非通用功能由特定的分布式計(jì)算平臺(tái)實(shí)現(xiàn),瀏覽器和應(yīng)用效勞器上的表示層之間通過(guò)標(biāo)準(zhǔn)文檔形式的標(biāo)準(zhǔn)HTML對(duì)話;應(yīng)用邏輯層和資源管理層之間通過(guò)標(biāo)準(zhǔn)數(shù)據(jù)訪問(wèn)協(xié)議〔JDBC/ODBC〕對(duì)話。其主要優(yōu)點(diǎn)是瀏覽器和應(yīng)用效勞器之間、應(yīng)用效勞器和資源管理器之間是松耦合關(guān)系。但是,表示層和應(yīng)用邏輯層之間是緊耦合的,兩者之間在技術(shù)平臺(tái)上耦合緊密。當(dāng)表示層想訪問(wèn)不同平臺(tái)如J2EE和DCOM上的應(yīng)用邏輯時(shí),不得不參加額外的接口適配器代碼。4、面向效勞的計(jì)算環(huán)境。也就是基于標(biāo)準(zhǔn)、開(kāi)放的互聯(lián)網(wǎng)技術(shù),以效勞為中心的計(jì)算環(huán)境。這是一個(gè)以效勞為根本單位和抽象手段的世界。隨著互聯(lián)網(wǎng)〔Internet〕的開(kāi)展,開(kāi)放和標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議被普遍支持,所有底層計(jì)算平臺(tái)都開(kāi)始支持這些標(biāo)準(zhǔn)和協(xié)議,這導(dǎo)致一個(gè)計(jì)算環(huán)境內(nèi)部和各個(gè)計(jì)算環(huán)境之間交互的藩籬被打破。其軟件架構(gòu)的特點(diǎn)是將應(yīng)用邏輯層封裝為Web效勞,這樣表示層就可以通過(guò)XML/SOAP協(xié)議與其實(shí)現(xiàn)松耦合交互,從而解決表示層和應(yīng)用邏輯層緊密耦合的問(wèn)題,保證了通用性和最大的交互能力,這使得計(jì)算環(huán)境開(kāi)展到一個(gè)全新的階段—基于標(biāo)準(zhǔn)、開(kāi)放的互聯(lián)網(wǎng)技術(shù)的計(jì)算環(huán)境。在這樣的計(jì)算環(huán)境中,各個(gè)局部可以采用異構(gòu)的底層技術(shù),它們使用XML來(lái)描述和表示自己的數(shù)據(jù)和功能,采用開(kāi)放的網(wǎng)絡(luò)協(xié)議〔如〕來(lái)握手,在此之上,基于Web效勞來(lái)互操作和交換數(shù)據(jù)。在這里,一個(gè)很重要的新概念是"效勞",它是一個(gè)自包含的功能,使用者通過(guò)明確定義的接口〔契約〕來(lái)與一個(gè)效勞交互,這個(gè)接口的描述基于WSDL〔WebServiceDescriptionLanguage〕這樣的開(kāi)放標(biāo)準(zhǔn)。Web效勞是實(shí)現(xiàn)效勞的技術(shù)手段,就如同各種編程語(yǔ)言中的對(duì)象是實(shí)現(xiàn)對(duì)象的技術(shù)手段,J2EE中的EJB是實(shí)現(xiàn)組件的技術(shù)手段一樣。2.2軟件編程范型的演變過(guò)程軟件系統(tǒng)的規(guī)模越大,復(fù)雜程度也就越高,驅(qū)動(dòng)軟件技術(shù)不斷向前開(kāi)展的核心動(dòng)因之一是復(fù)雜性控制。復(fù)用是控制軟件復(fù)雜度的有效機(jī)制,下面從軟件復(fù)用角度闡述闡述每種編程范型的特點(diǎn)。編程范型經(jīng)歷四個(gè)階段,即面向過(guò)程的編程、面向?qū)ο蟮木幊?、面向組件的編程以及標(biāo)準(zhǔn)化的Web效勞的編程。簡(jiǎn)言之,范型就是某一學(xué)科在一定時(shí)期內(nèi)開(kāi)展研究活動(dòng)共有的根底和準(zhǔn)那么。編程范型是指導(dǎo)和制約編程活動(dòng)的范型。1.面向過(guò)程的編程。是指用程序狀態(tài)和改變程序狀態(tài)的語(yǔ)句描述計(jì)算的編程范型。面向過(guò)程的語(yǔ)言提供一種通過(guò)過(guò)程抽象控制復(fù)雜性的方法,從而支持更大規(guī)模軟件的開(kāi)發(fā),同時(shí)過(guò)程也提供一種根本的代碼復(fù)用機(jī)制。但是該范型的主要缺點(diǎn)是:這種復(fù)用范圍是一個(gè)可執(zhí)行程序內(nèi)復(fù)用,靜態(tài)開(kāi)發(fā)期復(fù)用,如果修改了過(guò)程,意味著所有調(diào)用這個(gè)過(guò)程的系統(tǒng)必須重新編譯、測(cè)試和發(fā)布。2.面向?qū)ο蟮木幊?。是指用封裝了數(shù)據(jù)和對(duì)數(shù)據(jù)操作的對(duì)象以及對(duì)象之間的消息傳遞描述計(jì)算的編程范型。面向?qū)ο蟮恼J(rèn)識(shí)論是將系統(tǒng)看成由多個(gè)對(duì)象組成,通過(guò)對(duì)象之間的通信形成了系統(tǒng)面向?qū)ο笙到y(tǒng)中功能。其主要特征是:(1)封裝性(2)繼承性,(3)多態(tài)性。復(fù)用的兩種最常用技術(shù)是封裝性和類(lèi)繼承,封裝機(jī)制實(shí)現(xiàn)了數(shù)據(jù)抽象和信息隱蔽,通過(guò)生成實(shí)例后通過(guò)對(duì)象組合組裝成系統(tǒng);繼承機(jī)制提供了代碼的復(fù)用。但是這兩種復(fù)用機(jī)制都存在缺點(diǎn):繼承機(jī)制導(dǎo)致子類(lèi)和父類(lèi)之間的緊耦合關(guān)系,同時(shí)對(duì)象很難共享,更談不上分布式計(jì)算環(huán)境下復(fù)用。其根本原因在于認(rèn)知體系上的不完整,對(duì)象的理解不同,難以形成統(tǒng)一的標(biāo)準(zhǔn)和開(kāi)發(fā)標(biāo)準(zhǔn),由此基于面向?qū)ο蟮臉?gòu)件軟件應(yīng)運(yùn)而生。3.面向組件的編程。面向組件的編程是指以構(gòu)件的創(chuàng)立、構(gòu)件的管理以及復(fù)用已有的構(gòu)件組裝形成應(yīng)用為根本活動(dòng)的編程范型。構(gòu)件是模塊化、可部署、可替換的軟件系統(tǒng)組成局部,它封裝了內(nèi)部的具體實(shí)現(xiàn)并對(duì)外提供一組接口。比方Spring框架中,就采用了面向組件的思路,將系統(tǒng)看作一個(gè)個(gè)的組件,通過(guò)定義組件之間的協(xié)作關(guān)系〔通過(guò)效勞〕來(lái)完成系統(tǒng)的構(gòu)建。這樣做的好處是能夠隔離變化,合理的劃分系統(tǒng)。而框架的意義就在于定義一個(gè)組織組件的方式?;跇?gòu)件編程范型的特點(diǎn)是:基于構(gòu)件范型涉及三類(lèi)根本活動(dòng):構(gòu)件生產(chǎn)、構(gòu)件的管理和應(yīng)用組裝〔基于構(gòu)件的應(yīng)用開(kāi)發(fā)〕。構(gòu)件生產(chǎn)者采用領(lǐng)域工程方法通過(guò)對(duì)領(lǐng)域的分析和設(shè)計(jì)總結(jié)形成可復(fù)用的領(lǐng)域構(gòu)件。構(gòu)件管理者根據(jù)一定的分類(lèi)指標(biāo)和特征管理構(gòu)件,以方便構(gòu)件的發(fā)布和發(fā)現(xiàn)。構(gòu)件復(fù)用者負(fù)責(zé)進(jìn)行基于構(gòu)件的軟件開(kāi)發(fā)、包括構(gòu)件的查詢、構(gòu)件理解、構(gòu)件組裝以及系統(tǒng)演化等。分布式組件技術(shù)屏蔽了網(wǎng)絡(luò)硬件平臺(tái)的差異性和操作系統(tǒng)與網(wǎng)絡(luò)協(xié)議的異構(gòu)性,實(shí)現(xiàn)企業(yè)網(wǎng)絡(luò)內(nèi)復(fù)用,不同系統(tǒng)之間復(fù)用。但是,分布式組件也是嚴(yán)重依賴(lài)其計(jì)算環(huán)境,各種分布式組件技術(shù)在構(gòu)件實(shí)現(xiàn)和運(yùn)行支撐技術(shù)缺乏統(tǒng)一標(biāo)準(zhǔn),在組件描述、發(fā)布、發(fā)現(xiàn)、調(diào)用、互操作協(xié)議及數(shù)據(jù)傳輸?shù)确矫娉尸F(xiàn)出異構(gòu)性,從而導(dǎo)致不同技術(shù)設(shè)計(jì)和實(shí)現(xiàn)的構(gòu)件之間無(wú)法直接組裝式復(fù)用如J2EE和DCOM無(wú)法互相調(diào)用。J2EE(EJB)、CORBA和DCOM是比較典型的三種分布式組件。基于構(gòu)件編程范型的優(yōu)點(diǎn)是解決分布式網(wǎng)絡(luò)計(jì)算環(huán)境之間的組件復(fù)用,通過(guò)遠(yuǎn)程對(duì)象代理,來(lái)實(shí)現(xiàn)企業(yè)網(wǎng)絡(luò)內(nèi)復(fù)用,不同系統(tǒng)之間復(fù)用。4.面向效勞的編程。前已經(jīng)敘及,不同組件技術(shù)沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),不同廠家之間的組件很難實(shí)現(xiàn)互操作,最終導(dǎo)致了跨企業(yè)/部門(mén)的業(yè)務(wù)集成和重組難以靈活快速的進(jìn)行。為徹底解決互操作問(wèn)題,通過(guò)標(biāo)準(zhǔn)化的封裝技術(shù)如Web效勞,SCA/SDO等,來(lái)實(shí)現(xiàn)更高層次的復(fù)用和互操作。效勞是通過(guò)標(biāo)準(zhǔn)封裝,效勞組件之間的組裝、編排和重組來(lái)實(shí)現(xiàn)效勞的復(fù)用。而且這種復(fù)用,可以在不同企業(yè)之間,全球復(fù)用,到達(dá)復(fù)用的最高級(jí)別,并且是動(dòng)態(tài)可配置的復(fù)用。面向效勞的編程是指以效勞的創(chuàng)立、效勞的管理以及復(fù)用已有的效勞組裝形成應(yīng)用為根本活動(dòng)的編程范型。效勞是自治、開(kāi)放、自描述、與實(shí)現(xiàn)無(wú)關(guān)的網(wǎng)絡(luò)構(gòu)件。面向效勞的編程范型采用標(biāo)準(zhǔn)化的傳輸協(xié)議SOAP、描述協(xié)議WSDL,使軟件構(gòu)件的復(fù)用擴(kuò)大到整個(gè)互聯(lián)網(wǎng),可使不同分布式平臺(tái)技術(shù)〔不同廠商〕實(shí)現(xiàn)的Web效勞之間可以相互調(diào)用。如J2EE所提供的Web效勞可以被.NET來(lái)調(diào)用。反過(guò)來(lái),.NET也可以調(diào)用J2EE所提供的Web效勞。Web效勞的SOAP傳輸協(xié)議盡管是一種標(biāo)準(zhǔn)的傳輸協(xié)議,但是它畢竟還是一種特殊的傳輸協(xié)議,一種特定的技術(shù)。Web效勞并不支持其他的傳輸協(xié)議,如RMI等。所以說(shuō)效勞還是和特定的SOAP技術(shù)綁定在一起的。面向效勞編程范型的根本活動(dòng)和基于組件編程范型根本上是一致的,不同是編程的根本組件變成了效勞。從技術(shù)實(shí)現(xiàn)和運(yùn)行模式角度,Web應(yīng)用效勞器分為腳本模式、面向?qū)ο竽J胶蛯?duì)象模式。腳本模式應(yīng)用效勞器通過(guò)腳本以超文本方式描述動(dòng)態(tài)頁(yè)面的內(nèi)容和處理邏輯,當(dāng)接受到客戶請(qǐng)求時(shí),應(yīng)用效勞器首先搜索相應(yīng)的源文件,然后在效勞器端解釋該源文件中的腳本,最后將腳本解釋器產(chǎn)生的結(jié)果匯編后返回給Web應(yīng)用效勞器〔是否是客戶端?〕腳本模式Web應(yīng)用效勞器一般都通過(guò)擴(kuò)展接口〔如CGI和ISAIP〕或效勞器端腳本語(yǔ)言〔如果JSP、ASP和PHP〕動(dòng)態(tài)地生成響應(yīng)頁(yè)面,但是這種模式的應(yīng)用效勞器可擴(kuò)展性、高可用性差,可重用性低。此外,該種模式缺乏集成歷史遺留系統(tǒng)以及事物處理的支持能力。面向?qū)ο竽J浇橛谀_本模式和對(duì)象模式之間,其主要特點(diǎn)是使用面向?qū)ο缶帉?xiě)腳本。例如,在JSP和Servlets中使用Java語(yǔ)言進(jìn)行編碼。與純腳本模式相比,該模式可重用性較好,但是沒(méi)有相應(yīng)的標(biāo)準(zhǔn),不提供統(tǒng)一的接口標(biāo)準(zhǔn),其使用范圍和移植性受到了限制。對(duì)象模式應(yīng)用效勞器支持分布對(duì)象模型,能將應(yīng)用劃分為多層,易于維護(hù),在開(kāi)發(fā)和部署過(guò)程中支持組件重用,模塊化程度高,業(yè)務(wù)邏輯的變化只需修改相關(guān)組件即可。與面向?qū)ο竽J较啾龋瑢?duì)象模式應(yīng)用效勞器遵循相應(yīng)的標(biāo)準(zhǔn)和標(biāo)準(zhǔn),其中較突出的兩大類(lèi):J2EE(Java2platformenterpriseedition)和微軟的.Net。J2EE由SUN公司在3年前提出,目前至少有40多種實(shí)現(xiàn)J2EE標(biāo)準(zhǔn)的效勞器。J2EE為事務(wù)性Web應(yīng)用的開(kāi)發(fā)、部署、運(yùn)行和管理提供一系列的標(biāo)準(zhǔn)和標(biāo)準(zhǔn),主要包括JavaServlets,JSP,EJB,JTA,JTS,JMS,JAXP,JMX,RMI-IIOP,JNDI,JCA,JavaMail和JAF標(biāo)準(zhǔn)。這些J2EE標(biāo)準(zhǔn)為應(yīng)用效勞器的實(shí)現(xiàn)提供了一個(gè)完整的底層框架和一套標(biāo)準(zhǔn)的標(biāo)準(zhǔn),在不同的J2EE應(yīng)用效勞器之上的應(yīng)用操作也可以互操作,移植的風(fēng)險(xiǎn)和代價(jià)小。而微軟那么在其操作系統(tǒng)之上附加一系列具備中間件功能的軟件包來(lái)提供給用效勞器的相應(yīng)功能。微軟.Net構(gòu)建在WindowsDNA技術(shù)〔如MicrosoftTransactionServer,COM+,MSMQ,SQLServer數(shù)據(jù)庫(kù)等〕根底上,在.Net中提供了一系列企業(yè)級(jí)應(yīng)用效勞,為部署、管理和建立基于XML和Web的應(yīng)用構(gòu)筑了.Net效勞器結(jié)構(gòu),包括ApplicationCenter,BizTalkServer,ExchangeServer等,它們結(jié)合了Windows平臺(tái)上的一系列開(kāi)發(fā)工具和技術(shù)〔如VisualStudio,CommerceServer,ExchangeServer等〕,提供了強(qiáng)有力的應(yīng)用效勞器解決方案。雖然目前J2EE和.Net勢(shì)均力敵,但是J2EE作為一種標(biāo)準(zhǔn),具有Net無(wú)法比較的跨平臺(tái)、企業(yè)應(yīng)用集成能力以及可擴(kuò)展性和開(kāi)放性,得到許多廠商的支持,已經(jīng)逐步被廣闊研發(fā)人員和企業(yè)所接受,有良好的前景,逐步成為Web應(yīng)用效勞器研究和開(kāi)發(fā)的一個(gè)方向?!?.企業(yè)應(yīng)用集成〔喻堅(jiān)、韓燕波書(shū)〕3.1企業(yè)內(nèi)應(yīng)用集成技術(shù)3.2企業(yè)間應(yīng)用集成技術(shù)3.3面向效勞的應(yīng)用集成技術(shù)§4.效勞計(jì)算學(xué)科涵蓋內(nèi)容2.1效勞資源層主要為數(shù)據(jù)資源和軟件資源的效勞化過(guò)程提供根底標(biāo)準(zhǔn)、技術(shù)和方法支持。該層主要解決兩大問(wèn)題:①效勞本質(zhì)的認(rèn)識(shí)問(wèn)題,即效勞模型包含哪些方面,應(yīng)用何種語(yǔ)言進(jìn)行效勞描述,效勞具有哪些根本特征;②效勞的實(shí)現(xiàn)問(wèn)題,即如何開(kāi)發(fā)、封裝、測(cè)試、部署、運(yùn)行和發(fā)布效勞等。2.2效勞會(huì)聚層效勞資源層實(shí)現(xiàn)了各類(lèi)異質(zhì)異構(gòu)數(shù)據(jù)和軟件資源的效勞標(biāo)準(zhǔn)化,而效勞會(huì)聚層是在效勞資源層根底上進(jìn)一步實(shí)現(xiàn)細(xì)粒度效勞到大粒度效勞的標(biāo)準(zhǔn)化,即為不同效勞之間的協(xié)同以及由多個(gè)效勞構(gòu)成的效勞流程的管理提供一系列標(biāo)準(zhǔn)、技術(shù)和方法。它涵蓋了效勞集成與協(xié)作、效勞編排與效勞編舞、效勞流程管理等。2.3效勞應(yīng)用層經(jīng)過(guò)效勞資源層和效勞會(huì)聚層,各類(lèi)異質(zhì)異構(gòu)數(shù)據(jù)和軟件資源或資源集合被整合成不同粒度的標(biāo)準(zhǔn)化效勞,這為方便、快捷、透明地應(yīng)用效勞提供了可能。效勞應(yīng)用層主要為效勞在使用過(guò)程中提供根本的技術(shù)和方法支持,包括效勞調(diào)用、效勞發(fā)現(xiàn)、效勞匹配、效勞組合、效勞驗(yàn)證、效勞適配、效勞監(jiān)控等技術(shù),這些技術(shù)是當(dāng)前效勞計(jì)算研究與開(kāi)發(fā)中最活潑的局部。2.4效勞系統(tǒng)層是在效勞應(yīng)用層技術(shù)根底上,為指導(dǎo)效勞計(jì)算環(huán)境下設(shè)計(jì)、開(kāi)發(fā)、運(yùn)行和管理面向效勞的軟件系統(tǒng)而提供的一組標(biāo)準(zhǔn)、技術(shù)和方法,包含了面向效勞的體系架構(gòu)、企業(yè)效勞總線以及效勞系統(tǒng)工程等?!?.效勞計(jì)算開(kāi)展現(xiàn)狀以及應(yīng)用效勞計(jì)算是企業(yè)界和學(xué)術(shù)界共同努力的結(jié)果。企業(yè)界致力于制定效勞計(jì)算相關(guān)技術(shù)標(biāo)準(zhǔn)、開(kāi)發(fā)各種支撐工具軟件和系統(tǒng)平臺(tái);學(xué)術(shù)界致力于效勞計(jì)算學(xué)科建設(shè)、理論創(chuàng)新和方法研究。3.1企業(yè)界企業(yè)界是推動(dòng)效勞計(jì)算產(chǎn)生和開(kāi)展的源動(dòng)力。企業(yè)界對(duì)“隨需應(yīng)變”的軟件系統(tǒng)的強(qiáng)烈需求催生了Web效勞技術(shù)、面向效勞的體系架構(gòu)等效勞計(jì)算技術(shù)體系最為重要的支撐技術(shù)。W3C致力于創(chuàng)立Web相關(guān)技術(shù)標(biāo)準(zhǔn)并催生Web技術(shù)開(kāi)展。該組織針對(duì)效勞計(jì)算根底技術(shù),特別是Web效勞技術(shù)成立了多個(gè)工作組,涵蓋了Web效勞架構(gòu)、Web效勞策略、Web效勞編舞、Web效勞語(yǔ)義標(biāo)準(zhǔn)等工作內(nèi)容。OASIS致力于推進(jìn)電子商務(wù)標(biāo)準(zhǔn)的開(kāi)展、整合、推廣和應(yīng)用,制定了當(dāng)前大局部效勞計(jì)算技術(shù)標(biāo)準(zhǔn)。它為效勞計(jì)算技術(shù)專(zhuān)門(mén)成立了多個(gè)技術(shù)委員會(huì),涵蓋了效勞平安、可靠、效勞質(zhì)量、事務(wù)、信任以及效勞流程等方面,制定了一系列重要標(biāo)準(zhǔn)。第二章面向效勞體系架構(gòu)SOA(Software-OrientedArchitecture),即面向效勞架構(gòu)。軟件架構(gòu)〔SoftwareArchitecture,或軟件體系結(jié)構(gòu)〕,描述了軟件系統(tǒng)的藍(lán)圖,即,構(gòu)成一個(gè)程序或系統(tǒng)的構(gòu)件的結(jié)構(gòu),構(gòu)件間的互連,以及管理構(gòu)件的設(shè)計(jì)和演化的原那么和指導(dǎo)。從技術(shù)上看,SOA代表了一種開(kāi)放的、可擴(kuò)展的、可聯(lián)邦的、可組合的設(shè)計(jì)范型,是軟件構(gòu)件技術(shù)在分布計(jì)算環(huán)境的自然延伸。SOA的根底設(shè)施是已有中間件平臺(tái)的演化和開(kāi)展,保存了傳統(tǒng)架構(gòu)的成功特征?!仓饕妹嫦蛐诩軜?gòu)第三章內(nèi)容〕§1.什么是SOASOA的理念最初由全球最具權(quán)威的IT研究與參謀咨詢公司Gartner于1996年提出,但是由于當(dāng)時(shí)的技術(shù)水平和市場(chǎng)環(huán)境尚不具備真正實(shí)施SOA的條件,因此SOA并未引起人們的廣泛關(guān)注。進(jìn)入21世紀(jì)之后,Internet風(fēng)起云涌,越來(lái)越多的企業(yè)將業(yè)務(wù)轉(zhuǎn)移到互聯(lián)網(wǎng)領(lǐng)域,帶動(dòng)了電子商務(wù)的蓬勃開(kāi)展。為了能夠?qū)⒐緲I(yè)務(wù)打包成獨(dú)立的、具有強(qiáng)大伸縮性的可跨越Internet訪問(wèn)的效勞,人們提出了Web效勞的概念,這是SOA實(shí)踐的真正發(fā)端。到現(xiàn)在為止,還沒(méi)有一個(gè)權(quán)威的SOA標(biāo)準(zhǔn)定義,因?yàn)閺牟煌嵌?,不同廠商和學(xué)術(shù)團(tuán)隊(duì)會(huì)有不同的答案。爭(zhēng)論定義本身,不是目的?!馩ASIS〔一個(gè)SOA標(biāo)準(zhǔn)組織〕給出的SOA定義“SOA是一個(gè)范式,用于組織和利用可能處于不同所有權(quán)范圍控制下的分布式系統(tǒng)?!薄窬S基百科給出的SOA定義“面向效勞的體系結(jié)構(gòu)〔Service-orientedarchitecture〕是構(gòu)造分布式系統(tǒng)的應(yīng)用程序的方法。它將應(yīng)用程序功能作為效勞發(fā)送給最終用戶或者其他效勞。它采用開(kāi)放標(biāo)準(zhǔn)、與軟件資源進(jìn)行交互并采用表示的標(biāo)準(zhǔn)方式?!薄_@些定義本身,一般人員要準(zhǔn)確理解是非常困難的,既便是專(zhuān)業(yè)人士,未必能夠深刻理解其內(nèi)涵。如何更加形象理解SOA?怎么通俗化解析SOA的核心含義?事實(shí)上,SOA的思想我國(guó)很早就有了,印刷術(shù)的開(kāi)展過(guò)程其思想就完整表達(dá)了SOA的核心含義。印刷的內(nèi)容-文字,在秦始皇統(tǒng)一六國(guó)之前,各國(guó)的文字是不統(tǒng)一的,據(jù)說(shuō)許多常用的文字有十幾種寫(xiě)法和讀音,阻礙了各國(guó)之間的文化交流,就象SOA之前,各種軟件平臺(tái)、各種開(kāi)發(fā)工具和各種接口的組件之間,沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),對(duì)軟件系統(tǒng)之間的整合造成巨大的困難。因此,偉大的始皇帝統(tǒng)一了六國(guó)文字,“書(shū)同文、車(chē)同軌”就是通過(guò)標(biāo)準(zhǔn)解決“復(fù)用”和“互操作”等問(wèn)題。這也為大規(guī)模的印刷和文明開(kāi)展提供了一個(gè)良好的根底,這種“統(tǒng)一封裝”的文字,對(duì)文化交流起到了一個(gè)“互操作”的標(biāo)準(zhǔn)作用。在沒(méi)有印刷術(shù)之前,書(shū)籍要依賴(lài)于手工抄寫(xiě),這樣效率當(dāng)然是非常低下,而且質(zhì)量也不能獲得一致性的保證,也就是書(shū)籍還無(wú)法“復(fù)用”。中國(guó)人首先創(chuàng)造了刻版印刷術(shù),就是將書(shū)籍刻成一塊一塊的凸字版,然后就可以大規(guī)模進(jìn)行印刷了,當(dāng)印刷出來(lái)的書(shū)籍脫銷(xiāo)時(shí),下次還可以繼續(xù)使用,大大提高了效率,這就是“復(fù)用”,軟件通過(guò)組件的封裝,也可以到達(dá)重復(fù)和在不同場(chǎng)合屢次使用的“復(fù)用”效果??贪嬗∷⑿g(shù)有個(gè)很大的問(wèn)題就是文字之間是緊耦合的,同樣一個(gè)字,在另一部書(shū)之中是不能“復(fù)用”的,必須重新雕刻,也就是說(shuō)刻版印刷是沒(méi)有“編排”特性的。就如軟件技術(shù)中微軟VB開(kāi)發(fā)的Com+組件就只能在Windows環(huán)境之中使用,它不能與Java開(kāi)發(fā)的EJB組件進(jìn)行復(fù)用和編排,因?yàn)樗麄兣c開(kāi)發(fā)環(huán)境和運(yùn)行環(huán)境是緊耦合的,要在UNIX環(huán)境下使用,必須重新開(kāi)發(fā)〔相當(dāng)于重新“刻版”〕?;钭钟∷⒕褪峭ㄟ^(guò)文字與版面之間的松耦合,通過(guò)“排版”來(lái)實(shí)現(xiàn)一部書(shū)的印刷版面的,這種松耦合就大大提高了文字的字模之間的復(fù)用和編排效率。我們標(biāo)準(zhǔn)封裝的“效勞”就類(lèi)似一個(gè)一個(gè)的字模,通過(guò)效勞編排〔“排版”〕來(lái)實(shí)現(xiàn)業(yè)務(wù)流程。統(tǒng)一文字和活字印刷促進(jìn)了人類(lèi)文明進(jìn)步,而SOA促進(jìn)全球IT架構(gòu)和應(yīng)用的革命。要準(zhǔn)確全面理解SOA,首先必須理解SOA的核心要素:SOA的目標(biāo)就是通過(guò)重用現(xiàn)有的軟件應(yīng)用、以組裝的方式實(shí)現(xiàn)靈活可變的IT系統(tǒng)。因此,重用、標(biāo)準(zhǔn)化封裝和松耦合可編排是SOA技術(shù)本質(zhì)特征。其中,標(biāo)準(zhǔn)化的封裝實(shí)現(xiàn)各個(gè)軟件應(yīng)用之間的松散耦合最為關(guān)鍵的因素。§2SOA實(shí)現(xiàn)技術(shù)的本質(zhì)特征2.1.1松耦合的依賴(lài)關(guān)系過(guò)去分布式技術(shù)沒(méi)能解決軟件應(yīng)用對(duì)語(yǔ)言、平臺(tái)和廠商的依賴(lài)性,不同技術(shù)開(kāi)發(fā)的應(yīng)用之間不能交互。SOA當(dāng)前主流實(shí)現(xiàn)技術(shù)即Web效勞解決了不同應(yīng)用之間的互聯(lián)互通。效勞是通過(guò)效勞描述消除了應(yīng)用對(duì)語(yǔ)言、平臺(tái)和廠商的依賴(lài),如圖2-1所示,效勞消費(fèi)者完全依賴(lài)效勞描述。效勞描述是效勞消費(fèi)者和效勞之間的“合同”,效勞描述包括效勞消費(fèi)者為實(shí)現(xiàn)和效勞交互需要的所有信息,如接口定義、效勞使用策略、效勞級(jí)別約定等。效勞描述按照開(kāi)放標(biāo)準(zhǔn)以文本方式聲明,具有實(shí)現(xiàn)無(wú)關(guān)性。因此效勞描述屏蔽了效勞的實(shí)現(xiàn)細(xì)節(jié),剝離了傳統(tǒng)構(gòu)件所具有的與語(yǔ)言、平臺(tái)和廠商的相關(guān)性。效勞效勞描述效勞效勞描述效勞消費(fèi)者-消除組件語(yǔ)言的依賴(lài),CORBA、DCOM分別采用IDL、ODL接口描述語(yǔ)言描述構(gòu)件。每種實(shí)現(xiàn)技術(shù)只能實(shí)現(xiàn)同類(lèi)產(chǎn)品之間的交互,不能實(shí)現(xiàn)不同類(lèi)產(chǎn)品的交互。除了消除了上述關(guān)鍵性的依賴(lài)因素外,SOA還借助其他策略消除了更多的依賴(lài)因素,具體包括時(shí)間、訪問(wèn)地址和訪問(wèn)協(xié)議等。-消除時(shí)間依賴(lài)對(duì)基于遠(yuǎn)程過(guò)程調(diào)用的分布式系統(tǒng),客戶端需要同步等待請(qǐng)求的返回,在SOA中,我們可以集合事情驅(qū)動(dòng)的原理通過(guò)單向消息實(shí)現(xiàn)客戶端和效勞的異步交互,從而消除時(shí)間依賴(lài)。-消除訪問(wèn)地址依賴(lài)SOA通過(guò)間接尋址策略消除訪問(wèn)地址依賴(lài),間接尋址有兩種方式:一種是將訪問(wèn)地址放到效勞注冊(cè)中心,消費(fèi)者通過(guò)查詢注冊(cè)中心發(fā)現(xiàn)訪問(wèn)地址實(shí)現(xiàn)間接尋址;另一種是通過(guò)單獨(dú)的配置文件規(guī)定效勞訪問(wèn)地址,這樣當(dāng)效勞地址改變的時(shí)候,只需要改變配置文件即可。-消除訪問(wèn)協(xié)議的依賴(lài),如JAVA使用RMI,CORBA使用IIOP等。效勞描述包括消息傳輸協(xié)議如SOAP和網(wǎng)絡(luò)傳輸協(xié)議如的定義,而SOA通過(guò)標(biāo)準(zhǔn)的、支持Internet、與操作系統(tǒng)無(wú)關(guān)的SOAP協(xié)議實(shí)現(xiàn)了連接互操作。2.1.2效勞資源的間接尋址間接尋址是SOA松耦合的重要表達(dá)之一,通過(guò)間接尋址可以消除效勞的訪問(wèn)地址依賴(lài)。圖是被廣泛引用的效勞交互模型,效勞注冊(cè)中心是SOA間接尋址的表達(dá)。效勞效勞注冊(cè)中心效勞提供者效勞請(qǐng)求者發(fā)現(xiàn)發(fā)布交互效勞交互模型包含三類(lèi)角色:效勞提供者、效勞消費(fèi)者和效勞注冊(cè)中心。效勞交互必須發(fā)生的三種行為:發(fā)布、發(fā)現(xiàn)和綁定或調(diào)用。交互作用的對(duì)象是效勞和效勞描述。效勞提供者是一個(gè)接受并執(zhí)行效勞請(qǐng)求的通過(guò)網(wǎng)絡(luò)可訪問(wèn)的實(shí)體,效勞提供者將接口約定發(fā)布到效勞注冊(cè)中心,以便效勞請(qǐng)求者發(fā)現(xiàn)并訪問(wèn)。效勞請(qǐng)求者是一個(gè)應(yīng)用、一個(gè)軟件模塊或發(fā)出效勞請(qǐng)求的另一個(gè)效勞。效勞請(qǐng)求者可以通過(guò)效勞注冊(cè)中心間接獲得效勞描述,或者從效勞提供者處直接獲得描述,然后遵從效勞描述的接口約定實(shí)現(xiàn)和效勞提供者所提供效勞的交互。效勞注冊(cè)中心是用于發(fā)現(xiàn)和定位效勞的中介,包括一組供效勞請(qǐng)求者查詢的效勞描述。效勞注冊(cè)中心的作用是剝離了效勞提供者和效勞請(qǐng)求者之間的直接地址依賴(lài),使效勞的地址在發(fā)生變更的時(shí)候不會(huì)影響效勞請(qǐng)求者。另外,效勞注冊(cè)中心可以使效勞消費(fèi)者實(shí)現(xiàn)一種更加靈活的效勞定位:在運(yùn)行的時(shí)候通過(guò)約束條件在多個(gè)效勞中選擇條件最匹配的效勞。一些面向效勞的應(yīng)用在構(gòu)造時(shí)候僅僅想利用SOA的語(yǔ)言/平臺(tái)無(wú)關(guān)的松散耦合特點(diǎn),而不需要SOA的間接尋址能力。我們將這種體系結(jié)構(gòu)稱(chēng)為SBA,即基于效勞的體系架構(gòu)?!?SOA的作用正如前邊討論過(guò)的,企業(yè)業(yè)務(wù)正在處理兩個(gè)根本問(wèn)題:快速變化的能力和降低本錢(qián)的需要。為了保持競(jìng)爭(zhēng)優(yōu)勢(shì),企業(yè)必須快速適應(yīng)內(nèi)部因素如兼并和重組和外部因素如競(jìng)爭(zhēng)壓力和顧客需求。業(yè)務(wù)需要經(jīng)濟(jì)的、靈活的IT根底設(shè)施其業(yè)務(wù)需要。SOA具有如下優(yōu)點(diǎn),有助于組織在今天的動(dòng)態(tài)業(yè)務(wù)環(huán)境下獲得優(yōu)勢(shì)。〔1〕利用已有資源使企業(yè)通過(guò)將現(xiàn)有的資源封裝為效勞來(lái)保護(hù)IT的投資,這樣企業(yè)可以持續(xù)地利用這些資源,而無(wú)需重新開(kāi)發(fā)。從而表達(dá)“構(gòu)造”而不是重新開(kāi)發(fā)的先進(jìn)設(shè)計(jì)理念。〔2〕更容易集成和控制復(fù)雜性SOA集成的觀點(diǎn)是效勞標(biāo)準(zhǔn),而不是實(shí)現(xiàn)。提供了實(shí)現(xiàn)透明,當(dāng)根底設(shè)施和實(shí)現(xiàn)發(fā)生變化的時(shí)候,可以將影響降到最低。通過(guò)為別離系統(tǒng)中的資源提供效勞標(biāo)準(zhǔn),集成變得可管理?!?〕更加敏捷、快速地適應(yīng)市場(chǎng)變化SOA利用現(xiàn)有資源構(gòu)造新的效勞的機(jī)制,可以靈活地反響業(yè)務(wù)需求。利用現(xiàn)有的資源構(gòu)造效勞可以減少軟件開(kāi)發(fā)周期,這樣可以盡快地開(kāi)發(fā)出新的業(yè)務(wù),使企業(yè)更快地適應(yīng)市場(chǎng)變化。〔4〕降低本錢(qián),增減重用由于核心業(yè)務(wù)效勞是松散耦合,這樣可以根據(jù)業(yè)務(wù)需求更加方便地使用和組合。這意味著盡量防止資源的重復(fù)開(kāi)發(fā)、最大程度地利用現(xiàn)有資源、從而降低開(kāi)發(fā)本錢(qián)?!?〕提前開(kāi)發(fā),以備之需業(yè)務(wù)功能可以預(yù)先開(kāi)發(fā),以備未來(lái)之需。由于業(yè)務(wù)流程是由一系列業(yè)務(wù)效勞組成的,這樣可以更加容易地創(chuàng)立、調(diào)整和管理業(yè)務(wù)流程,可以更快地?fù)屨际袌?chǎng)先機(jī)。SOA提供的這種靈活和敏捷是企業(yè)生存和開(kāi)展的關(guān)鍵。構(gòu)成效勞5構(gòu)成效勞5效勞1效勞4效勞3效勞2效勞1效勞4效勞3效勞2效勞層效勞層應(yīng)用層應(yīng)用層應(yīng)用3(Legacy)應(yīng)用2應(yīng)用3(Legacy)應(yīng)用2〔.NET〕應(yīng)用1〔J2EE〕§4SOA參考模型SOA的核心主體是效勞。所謂“效勞〔Service〕”,從業(yè)務(wù)角度而言,效勞是一個(gè)可重復(fù)的經(jīng)過(guò)標(biāo)準(zhǔn)封裝的任務(wù),例如:檢查帳號(hào)余額;開(kāi)新帳戶等等…。SOA的目標(biāo)是通過(guò)效勞的流程化來(lái)實(shí)現(xiàn)業(yè)務(wù)的靈活性,所謂流程〔Process〕是由一系列相互關(guān)聯(lián)的任務(wù)所組成,實(shí)現(xiàn)一個(gè)具體的業(yè)務(wù)功能。一個(gè)流程可以由一系列效勞來(lái)實(shí)現(xiàn)。效勞就像一堆“元器件”,這些元器件通過(guò)封裝形成標(biāo)準(zhǔn)效勞,他們有相同的接口和語(yǔ)義表達(dá)規(guī)那么。但效勞要組裝成一個(gè)流程和應(yīng)用,還需要有效的“管理”,包括如何注冊(cè)效勞、如何發(fā)現(xiàn)效勞、如何包裝效勞的平安性和可靠性,這些就是SOA治理。SOA治理乃是將SOA這一堆元器件,進(jìn)行有效組裝,形成一個(gè)“產(chǎn)品”的關(guān)鍵,否那么它永遠(yuǎn)是一堆器件,而無(wú)法形成一個(gè)有機(jī)整體。SOA治理的方法和體系,就是區(qū)別于一般組件開(kāi)發(fā)的技術(shù)的重要區(qū)別和特征。一個(gè)正確的框架,是指導(dǎo)我們開(kāi)發(fā)和實(shí)施SOA架構(gòu)的根底。由IBM提案,國(guó)際開(kāi)放群組(TheOpenGroup)提出了一個(gè)SOA架構(gòu)的參考模型,這個(gè)架構(gòu)框架目前是產(chǎn)業(yè)界最權(quán)威和嚴(yán)謹(jǐn)?shù)腟OA架構(gòu)標(biāo)準(zhǔn)。TheOpenGroup是一個(gè)非營(yíng)利標(biāo)準(zhǔn)化組織,是一個(gè)廠商中立和技術(shù)中立的機(jī)構(gòu),致力于提出各種技術(shù)框架和理論結(jié)構(gòu),致力于促進(jìn)全球市場(chǎng)的業(yè)務(wù)效率。TheOpenGroup已有超過(guò)20年的標(biāo)準(zhǔn)制定與推廣歷史。在1996年,由X/Open與OpenSoftwareFoundation合并組成。TheOpenGroup最有名是作為UNIX商標(biāo)的認(rèn)證機(jī)構(gòu)。在過(guò)去,協(xié)會(huì)最知名的是其出版的SingleUNIXSpecification,它擴(kuò)充了POSIX標(biāo)準(zhǔn)而且是UNIX的官方定義,其成員包括IT用戶、供給商以及政府機(jī)構(gòu)。TheOpenGroup在中國(guó)的創(chuàng)始會(huì)員為金蝶集團(tuán),金蝶集團(tuán)負(fù)責(zé)成立了中國(guó)分會(huì)。TOG在1993年提出的TheOpenGroupArchitectureFramework(TOGAF)架構(gòu)框架,是一套行之有效的企業(yè)架構(gòu)。歷經(jīng)15年9個(gè)版本開(kāi)展,支持開(kāi)放、標(biāo)準(zhǔn)的SOA參考架構(gòu),已被80%的福布斯(Forbes)全球排名前50的公司使用。這個(gè)SOA參考模型為:根據(jù)這個(gè)模型,完整的SOA架構(gòu)由五大局部組成,分別是:根底設(shè)施效勞、企業(yè)效勞總線、關(guān)鍵效勞組件、開(kāi)發(fā)工具、管理工具等。SOA根底實(shí)施是為整個(gè)SOA組件和框架提供一個(gè)可靠的運(yùn)行環(huán)境,以及效勞組件容器,它的核心組件是應(yīng)用效勞器等根底軟件支撐設(shè)施,提供運(yùn)行期完整、可靠的軟件支撐。企業(yè)效勞總線〔ESB〕是指由中間件根底設(shè)施產(chǎn)品技術(shù)實(shí)現(xiàn)的、通過(guò)事件驅(qū)動(dòng)和基于XML消息引擎,為SOA提供的軟件架構(gòu)的構(gòu)造物。企業(yè)效勞總線ESB提供可靠消息傳輸、效勞接入、協(xié)議轉(zhuǎn)換、數(shù)據(jù)格式轉(zhuǎn)換、基于內(nèi)容的路由等功能,屏蔽了效勞的物理位置,協(xié)議和數(shù)據(jù)格式。在SOA根底實(shí)現(xiàn)的方案上,應(yīng)用的業(yè)務(wù)功能能夠被發(fā)布、封裝和提升〔Promote〕成為業(yè)務(wù)效勞〔BusinessService〕;業(yè)務(wù)效勞的序列可以編排成為BPM的流程,而流程也可以被發(fā)布和提升為復(fù)合效勞〔CompositedService〕,業(yè)務(wù)效勞還可以被外部的SOA系統(tǒng)再次編排和組合。ESB是實(shí)現(xiàn)SOA治理的重要支撐平臺(tái),是SOA解決方案的核心,從某種意義上說(shuō),如果沒(méi)有ESB,就不能算作嚴(yán)格意義上的SOA。關(guān)鍵效勞實(shí)現(xiàn),是SOA在各種業(yè)務(wù)效勞組件的分類(lèi)。一般來(lái)說(shuō),一個(gè)企業(yè)級(jí)的SOA架構(gòu)通常包括:交互效勞、流程效勞、信息效勞、伙伴效勞、企業(yè)應(yīng)用效勞和接入效勞。這些效勞可能是一些效勞組件,也可能是企業(yè)應(yīng)用系統(tǒng)〔如ERP〕所暴露的效勞接口等等。這些效勞都可以接入ESB,進(jìn)行集中統(tǒng)一管理。開(kāi)發(fā)工具和管理工具:提供完善的、可視化的效勞開(kāi)發(fā)和流程編排工具,涵蓋效勞的設(shè)計(jì)、開(kāi)發(fā)、配置、部署、監(jiān)控、重構(gòu)等完整的SOA工程開(kāi)發(fā)生命周期。按照這個(gè)模型,許多SOA解決方案是只提供局部實(shí)現(xiàn)。這個(gè)行業(yè)中,許多國(guó)內(nèi)的企業(yè)為了搭上SOA的便車(chē),經(jīng)常以偏概全,混繞概念。應(yīng)該說(shuō)真正按照SOA的思想和模型來(lái)構(gòu)建整個(gè)企業(yè)的IT架構(gòu)的案例是非常之少的。許多國(guó)外廠商的宣傳案例,根本上是停留在部署應(yīng)用效勞器,開(kāi)發(fā)了局部WebService組件,可以實(shí)現(xiàn)局部數(shù)據(jù)集成,這個(gè)層次而已,而這些WebService是部署在ESB平臺(tái)之上的,就已經(jīng)很不錯(cuò)了。實(shí)現(xiàn)了效勞流程重組,實(shí)現(xiàn)SOA治理的案例就更是很少見(jiàn)到了。國(guó)內(nèi)有許多軟件企業(yè)開(kāi)發(fā)的系統(tǒng),宣傳是SOA架構(gòu)的。根本上有幾種情況,其一,有些開(kāi)發(fā)組件和開(kāi)發(fā)平臺(tái)廠商,他們也自稱(chēng)中間件企業(yè),根本上是提供一個(gè)工作流平臺(tái),許多還不支持BPEL的業(yè)務(wù)流程管理,只是傳統(tǒng)的XPDL/WfMC工作流平臺(tái)〔Workflow不同于支持效勞流程的BusinessProcess〕,最常見(jiàn)的案例是OA辦公審批,或者效勞組件開(kāi)發(fā)工具,而所謂的ESB產(chǎn)品大局部都是EAI的升級(jí),可以與Webservice進(jìn)行接口而已,就宣稱(chēng)這是ESB產(chǎn)品了,根本的效勞注冊(cè)、效勞編排和平安管理都不具備。這些解決方案只是提供了許多WebService開(kāi)發(fā)的組件,而不提供SOA治理的核心架構(gòu),相當(dāng)于造了許多元器件,但還不能提供整機(jī)產(chǎn)品。其二,許多宣稱(chēng)SOA架構(gòu)的應(yīng)用軟件,根本上可以說(shuō)是“支持”SOA,而不能稱(chēng)為“基于SOA”架構(gòu)。因?yàn)橹С諷OA一般是指可以將其某些功能,封裝為效勞〔WebService〕,可以在SOA架構(gòu)之中進(jìn)行管理,這比較容易到達(dá)。而“基于SOA”是指應(yīng)用系統(tǒng)的業(yè)務(wù)功能都是封裝為效勞,通過(guò)ESB進(jìn)行集中管理,業(yè)務(wù)實(shí)現(xiàn)是通過(guò)BPEL業(yè)務(wù)流程管理進(jìn)行編排,用戶交互是通過(guò)交互效勞〔如門(mén)戶〕進(jìn)行管理,整個(gè)解決方案可以到達(dá)標(biāo)準(zhǔn)效勞封裝、效勞復(fù)用、松耦合、效勞編排與重組,并且根本符合TOG-SOA的架構(gòu)模型。

按照這個(gè)標(biāo)準(zhǔn),IT用戶就可以了解到真正的SOA架構(gòu)的框架模型,就可以識(shí)別是否是企業(yè)所需要的架構(gòu)。講到這里,我們已經(jīng)很清楚了,對(duì)于SOA的理解,有些學(xué)者或者咨詢公司強(qiáng)調(diào)SOA不是一種技術(shù),也不是軟件,而是一種思想,一種架構(gòu)風(fēng)格。我認(rèn)為這也是不完全準(zhǔn)確的,這種觀點(diǎn)認(rèn)為SOA僅僅是思想和方法,將使得SOA成為一種不可知論,飄在空中,很難落地?!?基于SOA的應(yīng)用系統(tǒng)基于SOA的應(yīng)用系統(tǒng)構(gòu)建方法與傳統(tǒng)軟件架構(gòu)方法有所不同。首先基于SOA的應(yīng)用系統(tǒng)建模和管理的組件層次是效勞:基于效勞的應(yīng)用系統(tǒng)的本質(zhì)特征是松耦合,以根本業(yè)務(wù)功能〔效勞封裝〕為系統(tǒng)的根本實(shí)現(xiàn)單元,然后通過(guò)效勞編排〔流程管理〕來(lái)“組裝”業(yè)務(wù)應(yīng)用系統(tǒng)。相對(duì)于以往的應(yīng)用系統(tǒng),是面向技術(shù)組件,由系統(tǒng)程序?qū)崿F(xiàn)業(yè)務(wù)流程,在復(fù)用、耦合方面都存在靈活性問(wèn)題。

效勞建模是第一步,也就是效勞識(shí)別和顆粒度確定。效勞識(shí)別是方法論的第一步,效勞識(shí)別的主要任務(wù),是確定在一定范圍內(nèi)〔通常是企業(yè)范圍,或假設(shè)干業(yè)務(wù)場(chǎng)景范圍內(nèi)〕可能成為效勞的候選者列表,并確定效勞的顆粒度,以及標(biāo)識(shí)效勞的接口。效勞建模也就確定了應(yīng)用系統(tǒng)架構(gòu)的耦合程度。

效勞封裝階段的主要任務(wù)是對(duì)效勞進(jìn)行標(biāo)準(zhǔn)性的描述,其中包括輸入/輸出消息等功能性屬性,以及效勞在業(yè)務(wù)層面的諸多屬性。并決定效勞以何種形式向外提供效勞。效勞可能是新開(kāi)發(fā)的業(yè)務(wù)功能和業(yè)務(wù)對(duì)象的封裝,也可能是遺留系統(tǒng)的效勞封裝,將遺留系統(tǒng)的軟件資產(chǎn)以效勞的形式進(jìn)行封裝,在新的架構(gòu)上利用已有的資產(chǎn)。

效勞治理就是將已經(jīng)封裝好的效勞進(jìn)行集中統(tǒng)一有效的管理。通過(guò)ESB根底設(shè)施,提供效勞注冊(cè)、存儲(chǔ)、平安控制和版本管理等。效勞注冊(cè)階段的主要任務(wù)是將效勞注冊(cè)到效勞庫(kù)。此時(shí)需要決定效勞的命名、平安、性能、時(shí)間特性。

效勞編排就是根據(jù)業(yè)務(wù)流程的需求,對(duì)效勞進(jìn)行組合和組裝。效勞組裝是以實(shí)現(xiàn)業(yè)務(wù)流程為目的,通過(guò)對(duì)業(yè)務(wù)效勞的組合和組裝,實(shí)現(xiàn)更粗粒度的業(yè)務(wù)效勞,實(shí)現(xiàn)最終的業(yè)務(wù)需求。

應(yīng)用交付階段主要任務(wù)是完成業(yè)務(wù)系統(tǒng)效勞化組裝和效勞部署,實(shí)現(xiàn)業(yè)務(wù)按需交付?;赟OA的應(yīng)用系統(tǒng)是SOA架構(gòu)的重要組成局部,也是SOA落地的地基。〔摘自金蝶中間件總經(jīng)理奉繼承博士原文:://blog.vsharing/fengjicheng/A1059842.html〕第三章SOA主流實(shí)現(xiàn)技術(shù)〔Web效勞〕簡(jiǎn)單地說(shuō),Web

效勞是部署在Web上的軟件構(gòu)件。Web效勞互操作性拓展了Web的能力,使其從原來(lái)的單純面向人類(lèi)的信息和功能提供平臺(tái)開(kāi)展成為分布式計(jì)算平臺(tái)。如圖1.1所示,人通過(guò)瀏覽器軟件與Web應(yīng)用交互,此時(shí)瀏覽器與Web應(yīng)用是通過(guò)HTML語(yǔ)言互相傳遞消息;Web

效勞提供了一種可以在Web上共享的功能,應(yīng)用通過(guò)標(biāo)準(zhǔn)Web和Internet協(xié)議可以直接使用Web效勞提供的功能,此時(shí)兩者之間是通過(guò)XML/SOAP語(yǔ)言互相對(duì)話的。其中,XML是一種與平臺(tái)/編程語(yǔ)言無(wú)關(guān)、具有可擴(kuò)展類(lèi)型系統(tǒng)的數(shù)據(jù)表示語(yǔ)言,適合在各種平臺(tái)/編程語(yǔ)言的應(yīng)用之間交換信息;SOAP那么提供了一種應(yīng)用之間互相傳遞基于XML數(shù)據(jù)的消息通信協(xié)議。2.1Web效勞的定義效勞是面向效勞架構(gòu)中核心概念,不理解效勞的概念,那么無(wú)法理解面向效勞的架構(gòu)。目前不同組織對(duì)效勞尚無(wú)統(tǒng)一的定義。?國(guó)際標(biāo)準(zhǔn)化組織W3C:Web效勞是一個(gè)通過(guò)URL識(shí)別的軟件應(yīng)用程序,其界面及綁定能用XML文檔來(lái)定義、描述和發(fā)現(xiàn),使用基于Internet協(xié)議上的消息傳遞方式與其他應(yīng)用程序進(jìn)行直接交互。?Microsoft:Web效勞是為其它應(yīng)用提供數(shù)據(jù)和效勞的應(yīng)用邏輯單元,應(yīng)用程序通過(guò)標(biāo)準(zhǔn)的Web協(xié)議和數(shù)據(jù)格式獲得Web效勞,如、XML和SOAP等,每個(gè)Web效勞的實(shí)現(xiàn)是完全獨(dú)立的。Web效勞具有基于組件的開(kāi)發(fā)和Web開(kāi)發(fā)兩者的優(yōu)點(diǎn),是Microsoft的.Net程序設(shè)計(jì)模式的核心。?IBM認(rèn)為,Web效勞是一種自包含、自解釋、模塊化的應(yīng)用程序,能夠被發(fā)布、定位、并且從Web上的任何位置進(jìn)行調(diào)用。Web效勞可以執(zhí)行從簡(jiǎn)單的請(qǐng)求到錯(cuò)綜復(fù)雜的商業(yè)處理過(guò)程的任何功能。理論上來(lái)講,一旦對(duì)Web效勞進(jìn)行了部署,其它Web效勞應(yīng)用程序就可以發(fā)現(xiàn)并調(diào)用已部署的效勞。?市場(chǎng)研究公司Forrester以一種更加開(kāi)放的方法將Web效勞定義為人、系統(tǒng)和應(yīng)用之間的自動(dòng)連接,這種連接能夠?qū)崿F(xiàn)將業(yè)務(wù)功能元素轉(zhuǎn)變?yōu)檐浖冢⑶覄?chuàng)造新的業(yè)務(wù)價(jià)值。Web效勞是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)標(biāo)準(zhǔn),這些標(biāo)準(zhǔn)使得Web效勞能與其他兼容的組件進(jìn)行互操作。?Gartner將Web效勞定義為:松散耦合的軟件組件,這些組件動(dòng)態(tài)地通過(guò)標(biāo)準(zhǔn)的網(wǎng)絡(luò)技術(shù)與另一個(gè)組件進(jìn)行交互。Web效勞可以從多個(gè)角度來(lái)描述〔理解〕。從技術(shù)方面講,一個(gè)Web效勞是可以被URI識(shí)別的應(yīng)用軟件,其接口和綁定由XML描述和發(fā)現(xiàn),并可與其他基于XML消息的應(yīng)用程序交互;從功能角度講,Web效勞是一種新型的Web應(yīng)用程序,具有自包含、自描述以及模塊化的特點(diǎn),可以通過(guò)Web發(fā)布、查找和調(diào)用實(shí)現(xiàn)網(wǎng)絡(luò)調(diào)用。從應(yīng)用的層面來(lái)說(shuō),Web效勞是用于集成應(yīng)用的,將原有的面向?qū)ο?、面向組件的軟件系統(tǒng)改造為基于消息面向效勞的松散耦合系統(tǒng)或者構(gòu)建新的松散耦合系統(tǒng)的一種協(xié)作設(shè)施。從組成框架及實(shí)現(xiàn)目標(biāo)的角度講,Web效勞作為一種網(wǎng)絡(luò)操作,能夠利用標(biāo)準(zhǔn)的Web協(xié)議及接口進(jìn)行應(yīng)用間的交互。從網(wǎng)格計(jì)算(gridcomputing)的角度看,Web效勞能用于Web上的資源發(fā)現(xiàn)、數(shù)據(jù)管理及網(wǎng)格計(jì)算平臺(tái)上異構(gòu)系統(tǒng)的協(xié)同設(shè)計(jì),提出了網(wǎng)格效勞的新概念?!?.2Web效勞根底標(biāo)準(zhǔn)1999年,W3C和相關(guān)的企業(yè)開(kāi)始討論設(shè)計(jì)基于XML的通信協(xié)議,2000年,W3C發(fā)布SOAP〔Simple

Object

Access

Protocol〕協(xié)議的1.1版。人們把利用SOAP協(xié)議傳遞XML信息的分布式應(yīng)用模型稱(chēng)為Web

效勞。2001年,W3C發(fā)布了WSDL〔Web

Services

DescriptionLanguage〕協(xié)議的1.1版。SOAP協(xié)議和WSDL協(xié)議共同構(gòu)成了Web

Service的根底如下圖。隨后,J2EE和.NET這兩大企業(yè)級(jí)開(kāi)發(fā)平臺(tái)先后實(shí)現(xiàn)了Web

Service,并將其視為平臺(tái)的一項(xiàng)核心功能。

〔點(diǎn)擊查看大圖〕圖9-2圖2.Web效勞根底協(xié)議棧Web效勞平臺(tái)需要一套協(xié)議來(lái)實(shí)現(xiàn)分布式應(yīng)用程序的創(chuàng)立。任何平臺(tái)都有它的數(shù)據(jù)表示方法和類(lèi)型系統(tǒng)。要實(shí)現(xiàn)互操作性,Web效勞平臺(tái)必須提供一套標(biāo)準(zhǔn)的類(lèi)型系統(tǒng),用于溝通不同平臺(tái)、編程語(yǔ)言和組件模型中的不同類(lèi)型系統(tǒng)。在傳統(tǒng)的分布式系統(tǒng)中,基于界面(interface)的平臺(tái)提供了一些方法來(lái)描述界面、方法和參數(shù)〔譯注:如COM和COBAR中的IDL語(yǔ)言〕。同樣的,Web效勞平臺(tái)也必須提供一種標(biāo)準(zhǔn)來(lái)描述Web效勞,讓客戶可以得到足夠的信息來(lái)調(diào)用這個(gè)Web效勞。最后,我們還必須有一種方法來(lái)對(duì)這個(gè)Web效勞進(jìn)行遠(yuǎn)程調(diào)用。這種方法實(shí)際是一種遠(yuǎn)程過(guò)程調(diào)用協(xié)議(RPC)。為了到達(dá)互操作性,這種RPC協(xié)議還必須與平臺(tái)和編程語(yǔ)言無(wú)關(guān)。下面幾個(gè)小節(jié)就簡(jiǎn)要介紹了組成Webservice平臺(tái)的這三個(gè)技術(shù)。傳輸協(xié)議傳輸層是用來(lái)將效勞請(qǐng)求從效勞請(qǐng)求者傳輸給效勞提供者,或者將效勞響應(yīng)從效勞提供者傳輸給效勞響應(yīng)者的機(jī)制。目前有多種Web效勞傳輸標(biāo)準(zhǔn)如、SMTP和FTP,其中最流行的是標(biāo)準(zhǔn)是。Web效勞XML和XSD可擴(kuò)展的標(biāo)記語(yǔ)言(XML)是Web效勞平臺(tái)中表示數(shù)據(jù)的根本格式。除了易于建立和易于分析外,XML主要的優(yōu)點(diǎn)在于它既是平臺(tái)無(wú)關(guān)的,又是廠商無(wú)關(guān)的。XML解決了數(shù)據(jù)表示的問(wèn)題,但它沒(méi)有定義一套標(biāo)準(zhǔn)的數(shù)據(jù)類(lèi)型,更沒(méi)有說(shuō)怎么去擴(kuò)展這套數(shù)據(jù)類(lèi)型。例如,整形數(shù)到底代表什么?16位,32位,還是64位?這些細(xì)節(jié)對(duì)實(shí)現(xiàn)互操作性都是很重要的。W3C制定的XMLSchema(XSD)就是專(zhuān)門(mén)解決這個(gè)問(wèn)題的一套標(biāo)準(zhǔn)。它定義了一套標(biāo)準(zhǔn)的數(shù)據(jù)類(lèi)型,并給出了一種語(yǔ)言來(lái)擴(kuò)展這套數(shù)據(jù)類(lèi)型。Web效勞平臺(tái)就是用XSD來(lái)作為其數(shù)據(jù)類(lèi)型系統(tǒng)的。當(dāng)采用某種語(yǔ)言(如C#)來(lái)構(gòu)造一個(gè)Web效勞時(shí),為了符合Web效勞標(biāo)準(zhǔn),所使用的所有數(shù)據(jù)類(lèi)型都必須被轉(zhuǎn)換為XSD類(lèi)型。Web效勞SOAPWeb效勞建好以后,就需要去調(diào)用它。簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(SOAP)提供了標(biāo)準(zhǔn)的RPC方法來(lái)調(diào)用Web效勞。實(shí)際上,SOAP在這里有點(diǎn)用詞不當(dāng):它意味著下面的Web效勞是以對(duì)象的方式表示的,但事實(shí)并不一定如此,Web效勞寫(xiě)成被一系列的C函數(shù),并仍然使用SOAP進(jìn)行調(diào)用。SOAP標(biāo)準(zhǔn)定義了SOAP消息的格式,以及怎樣通過(guò)協(xié)議來(lái)使用SOAP。SOAP也是基于XML和XSD的,XML是SOAP的數(shù)據(jù)編碼方式。如果將傳輸層看成是兩個(gè)端點(diǎn)之間的通路,那么效勞通信協(xié)議那么是通路上行駛的機(jī)動(dòng)車(chē)。效勞通信協(xié)議描述和定義用來(lái)提供交互的效勞之間的傳輸機(jī)制的技術(shù)和標(biāo)準(zhǔn)。Web效勞WSDL你會(huì)怎樣向別人介紹你的Web效勞有什么功能,以及每個(gè)函數(shù)調(diào)用時(shí)的參數(shù)呢?你可能會(huì)自己寫(xiě)一套文檔,你甚至可能會(huì)口頭上告訴需要使用你的Web效勞的人。這些非正式的方法至少都有一個(gè)嚴(yán)重的問(wèn)題:當(dāng)程序員坐到電腦前,想要使用你的Web效勞的時(shí)候,他們的工具(如VisualStudio)無(wú)法給他們提供任何幫助,因?yàn)檫@些工具根本就不了解你的Web效勞。解決方法是:用機(jī)器能閱讀的方式提供一個(gè)正式的描述文檔。Web效勞描述語(yǔ)言(WSDL)就是這樣一個(gè)基于XML的語(yǔ)言,用于描述Web效勞及其函數(shù)、參數(shù)和返回值。因?yàn)槭腔赬ML的,所以WSDL既是機(jī)器可閱讀的,又是人可閱讀的,這將是一個(gè)很大的好處。一些最新的開(kāi)發(fā)工具既能根據(jù)你的Web效勞生成WSDL文檔,又能導(dǎo)入WSDL文檔,生成調(diào)用相應(yīng)Web效勞的代碼。WEB效勞的描述與參考資料Web效勞是一種新的重要的應(yīng)用程序。Web效勞是一段可以用XML發(fā)現(xiàn)、描述和訪問(wèn)的代碼。在這一領(lǐng)域有許多活動(dòng),但有三種主要的用于Web效勞的XML標(biāo)準(zhǔn):SOAP:最初是簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議〔SimpleObjectAccessProtocol〕,SOAP定義一個(gè)XML文檔格式,該格式描述如何調(diào)用一段遠(yuǎn)程代碼的方法。我的應(yīng)用程序創(chuàng)立一個(gè)描述我希望調(diào)用的方法的XML文檔,并傳遞給它所有必需的參數(shù),然后應(yīng)用程序通過(guò)網(wǎng)絡(luò)將該XML文檔發(fā)送給那段代碼。代碼接收XML文檔、解釋它、調(diào)用我請(qǐng)求的方法,然后發(fā)回一個(gè)描述結(jié)果的XML文檔。SOAP標(biāo)準(zhǔn)版本1.1位于/TR/SOAP/。請(qǐng)?jiān)L問(wèn)/TR/以了解W3C中SOAP相關(guān)的所有活動(dòng)。WSDL:Web效勞描述語(yǔ)言〔WebServicesDescriptionLanguage〕是一個(gè)描述Web效勞的XML詞匯表。編寫(xiě)一段接收WSDL文檔然后調(diào)用其以前從未用過(guò)的Web效勞的代碼,這是可能的。WSDL文件中的信息定義Web效勞的名稱(chēng)、它的方法的名稱(chēng)、這些方法的參數(shù)和其它詳細(xì)信息。您可以在/TR/wsdl〔結(jié)尾沒(méi)有斜杠符號(hào)〕找到最新的WSDL標(biāo)準(zhǔn)。UDDI:統(tǒng)一描述、發(fā)現(xiàn)和集成〔UniversalDescription,Discovery,andIntegration〕協(xié)議向Web效勞注冊(cè)中心定義SOAP接口。如果您有一段代碼希望作為Web效勞部署,UDDI標(biāo)準(zhǔn)定義如何將您的效勞描述添加至注冊(cè)中心。如果您在尋找一段提供某種功能的代碼,UDDI標(biāo)準(zhǔn)定義如何查詢注冊(cè)中心以找到您想要的信息。有關(guān)UDDI的所有資料來(lái)源都可以在找到。Web效勞的優(yōu)點(diǎn):適應(yīng)性:可以使用任何編程語(yǔ)言、計(jì)算平臺(tái)和軟件體系結(jié)構(gòu)開(kāi)發(fā)Web效勞。應(yīng)用性:Web效勞允許作為組件開(kāi)發(fā)的軟件被其他軟件部件或被可以被輸入到Web瀏覽器的URI重用?;ゲ僮餍裕旱浆F(xiàn)在為止Web效勞最大的好處是它們支持不同計(jì)算平臺(tái)之間的通信。平臺(tái)之間的通信不再要求它們必須具有相同的硬件和軟件組件。Web效勞支持使用Java、C++、.NET、JavaScript、Perl和其他編程語(yǔ)言開(kāi)發(fā)的多種平臺(tái)之間的交互操作性。因?yàn)閃eb效勞建于Web標(biāo)準(zhǔn)(比方XML)之上,所以業(yè)務(wù)組件之間的通信基于行業(yè)標(biāo)準(zhǔn)而非專(zhuān)門(mén)的協(xié)議。為啥要?jiǎng)?chuàng)立WEB效勞1.Webservice平臺(tái)是一套標(biāo)準(zhǔn),它定義了應(yīng)用程序如何在Web上實(shí)現(xiàn)互操作性。你可以用任何你喜歡的語(yǔ)言,在任何你喜歡的平臺(tái)上寫(xiě)Webservice,只要我們可以通過(guò)Webservice標(biāo)準(zhǔn)對(duì)這些效勞進(jìn)行查詢和訪問(wèn)2..任何運(yùn)行Web瀏覽器的機(jī)器都在使用協(xié)議。同時(shí),當(dāng)前許多防火墻也配置為只允許連接-SOA標(biāo)準(zhǔn)體系是實(shí)現(xiàn)SOA應(yīng)用系統(tǒng)所涉及的國(guó)際標(biāo)準(zhǔn)、業(yè)界主流技術(shù)標(biāo)準(zhǔn)、行業(yè)標(biāo)準(zhǔn)的有機(jī)整體,涵蓋業(yè)務(wù)分析、建模、設(shè)計(jì)、開(kāi)發(fā)、組裝、部署、測(cè)試、管理〔治理〕等各個(gè)環(huán)節(jié)。SOA標(biāo)準(zhǔn)體系基于中國(guó)的行業(yè)應(yīng)用需求及標(biāo)準(zhǔn)化現(xiàn)狀,以現(xiàn)有國(guó)際標(biāo)準(zhǔn)組織〔W3C、OASIS、WS-I、OMG、IETF等〕所發(fā)布的相關(guān)技術(shù)標(biāo)準(zhǔn)為核心,從根底、架構(gòu)、應(yīng)用三個(gè)層次提供了支撐SOA系統(tǒng)實(shí)現(xiàn)的參考標(biāo)準(zhǔn)集,為基于SOA的測(cè)試、評(píng)估及質(zhì)量保證提供依據(jù)。SOA標(biāo)準(zhǔn)體系圖如下:

下面依據(jù)SOA標(biāo)準(zhǔn)體系圖,介紹SOA標(biāo)準(zhǔn)體系的組成局部以及各局部之間的關(guān)系。

1、根底層:

(1)XML及相關(guān)標(biāo)準(zhǔn)

XML及其相關(guān)標(biāo)準(zhǔn)是SOA的基石。其規(guī)定了效勞之間以及效勞內(nèi)部數(shù)據(jù)交換的格式和結(jié)構(gòu)、保障消息數(shù)據(jù)的完整性和有效性、提供不同數(shù)據(jù)表達(dá)之間互相通信的格式,同時(shí)提供在XML文檔和信息內(nèi)嵌的加密數(shù)據(jù)和數(shù)字簽名格式、為所有Web效勞平安技術(shù)建立的提供根底。

(2)網(wǎng)絡(luò)傳輸標(biāo)準(zhǔn)

數(shù)據(jù)傳輸是SOA系統(tǒng)最根本的需求之一。SOA系統(tǒng)是分布式系統(tǒng),需要傳輸大量數(shù)據(jù),數(shù)據(jù)傳輸就是其生命線。網(wǎng)絡(luò)傳輸標(biāo)準(zhǔn)解決了如何連接,如何驗(yàn)證,如何發(fā)送、接收數(shù)據(jù)以及如何報(bào)告錯(cuò)誤等問(wèn)題。

2、架構(gòu)層:

(1)消息傳遞標(biāo)準(zhǔn)

基于SOA構(gòu)建的系統(tǒng),系統(tǒng)內(nèi)部各組成局部間需要不斷的相互交換消息,以到達(dá)協(xié)調(diào)完成業(yè)務(wù)任務(wù)的目標(biāo)。消息傳遞標(biāo)準(zhǔn)提供了在分布式環(huán)境中交換信息的框架,定義了消息格式、消息交換模式,保證SOA系統(tǒng)能可靠、及時(shí)的傳遞消息。

(2)效勞描述和發(fā)現(xiàn)標(biāo)準(zhǔn)

對(duì)松散耦合的SOA系統(tǒng)來(lái)講,效勞標(biāo)準(zhǔn)化的描述、發(fā)布和發(fā)現(xiàn)是至關(guān)重要的。描述和發(fā)現(xiàn)標(biāo)準(zhǔn)和標(biāo)準(zhǔn)定義一組效勞,用于支持Web效勞提供者、Web效勞消費(fèi)者以及可以用于訪問(wèn)這些效勞的技術(shù)接口的描述和發(fā)現(xiàn)。

(3)可靠性標(biāo)準(zhǔn)

可靠性是指穩(wěn)定、魯棒等效勞質(zhì)量因素,可靠消息傳遞允許在出現(xiàn)軟件組件、系統(tǒng)或網(wǎng)絡(luò)故障時(shí)可靠的在分布式應(yīng)用程序間交付消息??煽啃允鞘褂肳eb效勞的必要條件。

(4)事務(wù)性標(biāo)準(zhǔn)

SOA系統(tǒng)是分布式系統(tǒng),在分布式計(jì)算領(lǐng)域,事務(wù)是構(gòu)造可靠分布式應(yīng)用程序的關(guān)鍵。Web效勞事務(wù)性標(biāo)準(zhǔn)利用傳統(tǒng)事務(wù)機(jī)制提供的協(xié)調(diào)行為來(lái)控制應(yīng)用程序的操作和輸出。

(5)平安性標(biāo)準(zhǔn)

平安性是SOA系統(tǒng)的重要方面,是大多數(shù)用戶優(yōu)先考慮的問(wèn)題。使用Web效勞技術(shù)構(gòu)建SOA系統(tǒng),需要保護(hù)Web效勞,確保只被那些準(zhǔn)許的邏輯訪問(wèn)。為了保持Web效勞的開(kāi)放性并支持多種類(lèi)型的客戶端,就必須解決Web效勞的平安性問(wèn)題。Web效勞平安性標(biāo)準(zhǔn)為Web效勞框架提供平安通信的方法。

(6)互操作標(biāo)準(zhǔn)

SOA和Web效勞技術(shù)的標(biāo)準(zhǔn)眾多,不同的標(biāo)準(zhǔn)可能來(lái)自不同的標(biāo)準(zhǔn)化組織,存在著不能完全互聯(lián)互通的問(wèn)題,如何用這些標(biāo)準(zhǔn)來(lái)開(kāi)發(fā)可互操作的Web效勞,是一個(gè)亟待解決的問(wèn)題。因此,SOA需要互操作標(biāo)準(zhǔn)來(lái)確保SOA系統(tǒng)的互操作性。

(7)表示層標(biāo)準(zhǔn)

標(biāo)準(zhǔn)Web效勞或面向數(shù)據(jù)的Web效勞包括業(yè)務(wù)邏輯,但缺少表示邏輯。相同的業(yè)務(wù)流程和業(yè)務(wù)數(shù)據(jù)在不同平臺(tái)不同終端上往往要求以不同的表現(xiàn)形式展現(xiàn)給用戶。表示層標(biāo)準(zhǔn)將下層的內(nèi)容以多樣化的形態(tài)提供給上層的終端用戶。

(8)業(yè)務(wù)流程標(biāo)準(zhǔn)

構(gòu)建基于SOA的系統(tǒng)以業(yè)務(wù)為中心,業(yè)務(wù)邏輯的實(shí)現(xiàn)及優(yōu)化通過(guò)效勞組合、效勞編排來(lái)完成。業(yè)務(wù)效勞通??缍鄠€(gè)組織和機(jī)構(gòu),需要將效勞進(jìn)行有效的組織才能滿足業(yè)務(wù)邏輯的需求。業(yè)務(wù)流程方面的標(biāo)準(zhǔn)由此而催生。

(9)集成開(kāi)發(fā)標(biāo)準(zhǔn)

SOA產(chǎn)品及系統(tǒng)的具體實(shí)現(xiàn)需要開(kāi)發(fā)標(biāo)準(zhǔn)作為指導(dǎo),包括根底效勞的實(shí)現(xiàn)、效勞組裝的實(shí)現(xiàn)等。同時(shí)SOA工程往往需要整合各種已有資源,作為一項(xiàng)系統(tǒng)性的工作,集成過(guò)程需要全局的標(biāo)準(zhǔn)化的效勞組件以及協(xié)議接口作為支撐。

(10)效勞管理標(biāo)準(zhǔn)

管理效勞用于發(fā)現(xiàn)它們存在的問(wèn)題、了解效勞的狀況、性能,并對(duì)效勞進(jìn)行控制和配置。用效勞構(gòu)建SOA系統(tǒng)時(shí),業(yè)務(wù)操作全部都是由效勞來(lái)完成,效勞管理標(biāo)準(zhǔn)提供對(duì)效勞合理有效管理的方法,滿足業(yè)務(wù)操作需要。

(11)質(zhì)量保證標(biāo)準(zhǔn)

效勞質(zhì)量及水平是判定一個(gè)SOA系統(tǒng)是否成功的重要因素。SOA系統(tǒng)的質(zhì)量重點(diǎn)是貫穿于效勞生命周期的質(zhì)量維護(hù),包括可用性、穩(wěn)定性、可維護(hù)性等多方面因素。SOA系統(tǒng)需要質(zhì)量保證標(biāo)準(zhǔn)來(lái)確保系統(tǒng)的效勞質(zhì)量。

3、應(yīng)用層—應(yīng)用標(biāo)準(zhǔn)

SOA工程最終效勞于具體的行業(yè)或領(lǐng)域用戶,如電子政務(wù)、電子商務(wù)、企業(yè)信息化、社區(qū)信息化等等。不同用戶有各自不同的特點(diǎn),SOA工程的規(guī)劃及設(shè)計(jì)必須首先遵從行業(yè)標(biāo)準(zhǔn)、企業(yè)的業(yè)務(wù)戰(zhàn)略及規(guī)那么,實(shí)施中效勞設(shè)計(jì)及實(shí)現(xiàn)需要相關(guān)的應(yīng)用標(biāo)準(zhǔn)來(lái)指導(dǎo),SOA的治理也需要和企業(yè)IT策略一致。

4、組成局部關(guān)系分析

XML及相關(guān)標(biāo)準(zhǔn)是支撐SOA技術(shù)及標(biāo)準(zhǔn)開(kāi)展的重要根底,在SOA熱潮之前已在傳統(tǒng)的萬(wàn)維網(wǎng)及Web技術(shù)中得到了廣泛應(yīng)用。XML作為目前數(shù)據(jù)交換的唯一公共語(yǔ)言,是架構(gòu)層所有SOA標(biāo)準(zhǔn)的根底,提供了不同平臺(tái)及應(yīng)用軟件通過(guò)網(wǎng)絡(luò)可進(jìn)行交互的數(shù)據(jù)內(nèi)容和結(jié)構(gòu)描述格式。相關(guān)的XMLSchema、XSLT、XMLSignature、XMLEncryption為SOA架構(gòu)層中的關(guān)鍵消息傳遞、Web效勞平安等標(biāo)準(zhǔn)提供了直接構(gòu)建和引用根底。根底層中以為代表的網(wǎng)絡(luò)傳輸標(biāo)準(zhǔn),廣泛應(yīng)用于傳統(tǒng)Web應(yīng)用,是SOA消息傳遞標(biāo)準(zhǔn)的根底。架構(gòu)層的SOA技術(shù)標(biāo)準(zhǔn)以WS-*核心。消息傳遞標(biāo)準(zhǔn)構(gòu)筑在傳輸標(biāo)準(zhǔn)之上,它以傳輸標(biāo)準(zhǔn)作為載體進(jìn)行工作,消息傳遞標(biāo)準(zhǔn)之上是效勞描述和發(fā)現(xiàn)相關(guān)標(biāo)準(zhǔn),標(biāo)準(zhǔn)體系的這三個(gè)局部搭建起了SOA的根本框架;可靠、平安、事務(wù)三個(gè)局部標(biāo)準(zhǔn)需要與效勞描述、發(fā)現(xiàn)相關(guān)標(biāo)準(zhǔn)結(jié)合起來(lái)工作,它們一定程度上是對(duì)根本的效勞描寫(xiě)、發(fā)現(xiàn)標(biāo)準(zhǔn)的補(bǔ)充,用以滿足SOA實(shí)際應(yīng)用的要求。

標(biāo)準(zhǔn)出自不同的標(biāo)準(zhǔn)組織,同一標(biāo)準(zhǔn)不同的廠商實(shí)現(xiàn)也可能不是完全一樣,互操作標(biāo)準(zhǔn)將SOA標(biāo)準(zhǔn)中的二義性進(jìn)行重新定義,在語(yǔ)義上確保交互的一致性,以實(shí)現(xiàn)不同實(shí)現(xiàn)平臺(tái)的互操作?;ゲ僮餍詷?biāo)準(zhǔn)可以看作SOA標(biāo)準(zhǔn)體系的根底組成局部,利用它們即可以支撐構(gòu)建出較完善的SOA系統(tǒng)。架構(gòu)層業(yè)務(wù)流程標(biāo)準(zhǔn)建立起業(yè)務(wù)與效勞的橋梁,開(kāi)發(fā)標(biāo)準(zhǔn)指導(dǎo)SOA系統(tǒng)的實(shí)施,它需要SOA標(biāo)準(zhǔn)體系中其它各類(lèi)標(biāo)準(zhǔn)的支持。集成標(biāo)準(zhǔn)標(biāo)準(zhǔn)化基于不同技術(shù)構(gòu)筑的系統(tǒng)的協(xié)作,管理標(biāo)準(zhǔn)方便SOA系統(tǒng)資源和效勞的管理,這幾個(gè)標(biāo)準(zhǔn)都以構(gòu)筑在標(biāo)準(zhǔn)體系根底組成局部之上的效勞為對(duì)象,因此它們需要根底組成局部標(biāo)準(zhǔn)對(duì)它們的支持。架構(gòu)層質(zhì)量保證標(biāo)準(zhǔn)是SOA構(gòu)建后重要評(píng)估手段,需要從不同等級(jí)〔單個(gè)效勞、局部集成、整個(gè)系統(tǒng)〕來(lái)確保效勞質(zhì)量,其內(nèi)容涉及到架構(gòu)層其他各類(lèi)標(biāo)準(zhǔn)SOA系統(tǒng)。應(yīng)用層標(biāo)準(zhǔn)是針對(duì)各行業(yè)制定的指南性標(biāo)準(zhǔn),基于應(yīng)用行業(yè)及企業(yè)的具體要求及規(guī)那么、對(duì)應(yīng)各類(lèi)SOA相關(guān)標(biāo)準(zhǔn)的具體應(yīng)用。三Web效勞介紹Web效勞包含3種類(lèi)型的角色:效勞請(qǐng)求者、效勞提供程序和效勞發(fā)現(xiàn)代理。請(qǐng)求者(requestor)--客戶端--是需要數(shù)據(jù)或已執(zhí)行效勞的商業(yè)軟件,所以它發(fā)出執(zhí)行某個(gè)Web效勞的請(qǐng)求。效勞提供程序(serviceprovider)響應(yīng)Web效勞請(qǐng)求。請(qǐng)求者使用提供者提供的效勞。發(fā)現(xiàn)代理(discoveryagency)用作所有已發(fā)布的Web效勞的存儲(chǔ)庫(kù)。這種代理可能支持向其發(fā)送描述,或者可能輪詢公共提供者以獲得描述。計(jì)算平臺(tái)可以承當(dāng)這些角色中的一個(gè)或多個(gè),例如同時(shí)作為請(qǐng)求者和提供程序,或者同時(shí)作為請(qǐng)求者、提供程序和效勞發(fā)現(xiàn)代理。一個(gè)或多個(gè)Web效勞可以被結(jié)合起來(lái)以執(zhí)行一個(gè)完整的業(yè)務(wù)事務(wù)。圖9-1說(shuō)明了分別承當(dāng)一個(gè)角色的計(jì)算平臺(tái)之間的交互。

〔點(diǎn)擊查看大圖〕圖9-1在執(zhí)行這些角色的平臺(tái)間可以發(fā)生3種類(lèi)型的操作:獲取、發(fā)布和綁定。效勞提供程序?qū)崿F(xiàn)軟件組件,把描述直接發(fā)布給請(qǐng)求者或效勞發(fā)現(xiàn)代理。效勞請(qǐng)求者嘗試從本地或效勞發(fā)現(xiàn)代理定位/找到/獲取效勞描述(這種獲取操作可以在軟件開(kāi)發(fā)期間或請(qǐng)求者軟件的執(zhí)行期間發(fā)生)。平臺(tái)間的通信以XML(eXtensibleMarkupLanguage,可擴(kuò)展標(biāo)記語(yǔ)言)形式的消息進(jìn)行。這些消息的方向可以是單向、雙向、播送或大量的消息。可以同步或異步發(fā)送消息。9.3

Web效勞體系結(jié)構(gòu)Web效勞運(yùn)行在一個(gè)通信根底設(shè)施之上,這個(gè)通信根底設(shè)施由由幾層廣泛使用的公共可用協(xié)議組成。Web效勞協(xié)議棧不存在標(biāo)準(zhǔn)定義,所以對(duì)這些協(xié)議的體系結(jié)構(gòu)說(shuō)明根據(jù)供給商或標(biāo)準(zhǔn)組織的不同而不同。盡管如此,圖9-2給出了一個(gè)根底的協(xié)議棧圖。UDDI、WSDL和SOAP都是得到批準(zhǔn)的協(xié)議。

〔點(diǎn)擊查看大圖〕圖9-29.3.1

網(wǎng)絡(luò)層在商業(yè)組織內(nèi)可能存在許多運(yùn)行不同協(xié)議(如IBMMQSeries或CORBA)的私有內(nèi)部網(wǎng)。與此相反,Web效勞使用行業(yè)內(nèi)普遍接受的Web網(wǎng)絡(luò)協(xié)議進(jìn)行通信。因此,Web效勞可以用作各種專(zhuān)用內(nèi)部網(wǎng)之間進(jìn)行通信的媒介。雖然IT部門(mén)取締和阻止了許多其他的網(wǎng)絡(luò)協(xié)議(比方telnet、ftp等),并把它們看做潛在的平安漏洞,但是卻被用來(lái)支持Web瀏覽器的連續(xù)操作。這保證了以為根底的應(yīng)用程序協(xié)議的較長(zhǎng)生命期。在Web效勞中,Web效勞的消息通過(guò)這個(gè)網(wǎng)絡(luò)層傳遞。9.3.2

XMLXML是一種格式,通過(guò)它文本可以以獨(dú)立于平臺(tái)的方式代表數(shù)據(jù)。處理XML的工具有很多。XML數(shù)據(jù)的格式和內(nèi)容在XML模式中描述。XML模式使用XML語(yǔ)法描述XML文檔中的元素、屬性和實(shí)體之間的關(guān)系。XML模式的用途是定義一類(lèi)必須符合特定的結(jié)構(gòu)規(guī)那么和數(shù)據(jù)約束的集合的XML文檔。這種XML數(shù)據(jù)要想有用,必須把XML傳輸給業(yè)務(wù)應(yīng)用程序使用的編程語(yǔ)言所支持的應(yīng)用程序數(shù)據(jù)結(jié)構(gòu)。用于轉(zhuǎn)換XML和數(shù)據(jù)結(jié)構(gòu)的機(jī)制的技術(shù)術(shù)語(yǔ)稱(chēng)為數(shù)據(jù)綁定。對(duì)于根底數(shù)據(jù)類(lèi)型(比方Java根本數(shù)據(jù)類(lèi)型)已經(jīng)存在執(zhí)行這種轉(zhuǎn)換的軟件。然而,對(duì)于較為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)而言,可能需要開(kāi)發(fā)自定義的代碼。9.3.3

SOAPSOAP現(xiàn)在是XML消息的行業(yè)標(biāo)準(zhǔn),這是一個(gè)圍繞通過(guò)網(wǎng)絡(luò)層傳遞的XML應(yīng)用程序有效負(fù)載的瘦層(thinlayer)。SOAP獨(dú)立于網(wǎng)絡(luò)層的類(lèi)型,它可以與許多協(xié)議一起使用,比方、JMS或FTP。交換SOAP最常用的方法是通過(guò)。通過(guò)它的消息頭可以對(duì)它進(jìn)行擴(kuò)展,而業(yè)務(wù)應(yīng)用程序可以對(duì)它的消息頭進(jìn)行填充或處理。SOAP消息提供了如下內(nèi)容。通過(guò)Web對(duì)數(shù)據(jù)和效勞的訪問(wèn)通過(guò)Web在客戶端和效勞之間傳輸數(shù)據(jù)對(duì)象的能力正是通過(guò)這兩種能力業(yè)務(wù)才能與其他的業(yè)務(wù)或客戶通信。SOAP消息可能包含3種不同類(lèi)型的元素,而且它必須是結(jié)構(gòu)良好的XML文檔。這3種不同類(lèi)型的元素分別如下。信封(必要):這是SOAP消息的容器,所以它可以包含消息主體和任何消息頭。它包含一個(gè)用于唯一身份標(biāo)識(shí)的名稱(chēng)空間聲明。消息頭(可選):這個(gè)可選元素用作容器,包含可用于擴(kuò)展SOAP消息以支持身份驗(yàn)證或路由能力的額外信息。事實(shí)上,整個(gè)的WS-*功能集都使用消息頭來(lái)實(shí)現(xiàn)擴(kuò)展。消息主體(必要):消息主體包含XML格式的有效負(fù)載,還可能包含SOAPRPC請(qǐng)求或以文檔為中心的消息。在較早的RPC風(fēng)格的Web效勞(稱(chēng)為rpc/end)中,效勞請(qǐng)求者使用必要的參數(shù)發(fā)送調(diào)用方法的名稱(chēng),任何計(jì)算結(jié)果都將被返回。雖然這種風(fēng)格有助于更簡(jiǎn)單地開(kāi)發(fā)軟件,但是它會(huì)帶來(lái)互操作性上的問(wèn)題,尤其在發(fā)送和接收復(fù)雜數(shù)據(jù)結(jié)構(gòu)時(shí)更是這樣。使用這種風(fēng)格時(shí),其內(nèi)容的特殊性質(zhì)使通信系統(tǒng)具有緊密地耦合性。這種風(fēng)格代表了通信的一種同步形式。由于互操作性的問(wèn)題,現(xiàn)在Web效勞互操作性組織的根本配置文件(WebServicesInteroperabilityOrganization'sbasicprofile,WS-IBP)不推薦這種風(fēng)格。與之相反,得到推薦的是XML以文檔為中心的風(fēng)格--doc/lit風(fēng)格。這是一種面向文檔的風(fēng)格,在其中效勞請(qǐng)求者發(fā)送完整的XML文檔。效勞提供者可以也可以不返回消息。這種風(fēng)格使用W3CXML模式定義來(lái)指定XML數(shù)據(jù)格式。9.3.4

WSDLWSDL就是對(duì)Web效勞軟件的描述。具體來(lái)說(shuō),它描述所有公共可用的方法、交換方法、消息類(lèi)型以及用在網(wǎng)絡(luò)層的傳輸協(xié)議和Web效勞的地址??蛻舳藨?yīng)用程序可以為使用的特定傳輸協(xié)議找到Web效勞,以及調(diào)用任何公共方法。根本上,WSDL可以看作是效勞提供者和效勞請(qǐng)求者之間的契約。WSDL是XML格式的,所以它也具有平臺(tái)無(wú)關(guān)性。WSDL和Java類(lèi)似,因?yàn)樗С殖橄蠛途唧w概念、以及接口。類(lèi)似于Java,WSDL也支持抽象的接口。在WSDL下是一個(gè)效勞,這個(gè)效勞被描述為一個(gè)接受消息的終端的集合。再往下是一些根底的WSDL術(shù)語(yǔ),圖9-3顯示了這些概念之間的關(guān)系。消息:消息由類(lèi)型化的數(shù)據(jù)局部組成操作:效勞請(qǐng)求者和效勞提供者之間的一組消息portType:操作集合端口:portType的實(shí)現(xiàn)serviceType:portType的集合效勞:端口集合,這是serviceType的實(shí)現(xiàn)1.WSDL文檔WSDL1.2文檔由4個(gè)信息的根本元素組成,它們被稱(chēng)為Infoset,描述Web效勞。Infoset就是WSDL文檔中使用的XML元素和屬性。另外,WSDL支持一個(gè)組件模型,這個(gè)組件模型鏡像Infoset并提供另一個(gè)抽象層。下面的列表定義了WSDL2中XMLInfoset的元素。

〔點(diǎn)擊查看大圖〕圖9-3描述:這是第一個(gè)元素,它用作其他WSDL元素的容器。接口:這個(gè)元素定義了效勞具有的抽象行為。接口有名稱(chēng),可以擴(kuò)展其他的接口。接口可以包含操作以及錯(cuò)誤。綁定:這個(gè)元素定義了訪問(wèn)效勞的方式。綁定有名稱(chēng),是一個(gè)具體元素,它指定了消息的內(nèi)容以及每個(gè)接口的傳輸協(xié)議。接口中存在的所有操作和錯(cuò)誤都在這個(gè)元素中定義。效勞:這個(gè)元素定義了訪問(wèn)效勞的地方,它包含效勞的名稱(chēng)和一個(gè)或多個(gè)終端。終端:這是引出消息的目的地。2.WSDL綁定WSDL1.2是可以擴(kuò)展的。通過(guò)使用一個(gè)稱(chēng)為擴(kuò)展(extension)--或者具體來(lái)說(shuō)是綁定擴(kuò)展(bindingextension)--的機(jī)制,可以添加新的消息格式以及傳輸協(xié)議。擴(kuò)展在WSDL的頂部為每個(gè)綁定擴(kuò)展提供一個(gè)名稱(chēng)空間聲明前綴。之后在WSDL中綁定擴(kuò)展的前綴就可以用于元素和屬性了。WSDL1.2包含支持SOAP1.2和SOAP1.1的綁定擴(kuò)展。這些擴(kuò)展允許定制SOAP消息,比方使用的版本、綁定、協(xié)議和SOAP消息頭。擴(kuò)展有一個(gè)默認(rèn)值的集合,可以用在接口或操作級(jí)上。當(dāng)使用作為傳輸協(xié)議時(shí),綁定應(yīng)該指出是否使用GET或POST。WSDL2.0也支持綁定擴(kuò)展,以便在使用時(shí)不使用SOAP。9.3.5

UDDIUDDI是一個(gè)標(biāo)準(zhǔn),它定義了與Web效勞相關(guān)的信息的發(fā)布、發(fā)現(xiàn)和管理。UDDI以2000年的1.0版本開(kāi)始,現(xiàn)在UDDI的標(biāo)準(zhǔn)已經(jīng)是3.0版本,它向后兼容以前的版本。該標(biāo)準(zhǔn)中存在3種類(lèi)型的組件。第一種類(lèi)型(節(jié)點(diǎn))是UDDI效勞器,它確切地屬于一個(gè)UDDI注冊(cè)庫(kù)。節(jié)點(diǎn)在UDDI數(shù)據(jù)上執(zhí)行操作。對(duì)于API,標(biāo)準(zhǔn)區(qū)分了兩種不同類(lèi)型的節(jié)點(diǎn):UDDI效勞器和UDDI客戶端。組件的第二種類(lèi)型,注冊(cè)庫(kù),包含一個(gè)或多個(gè)節(jié)點(diǎn)。節(jié)點(diǎn)有3種類(lèi)型:公有、附屬和私有。公有注冊(cè)庫(kù)中的數(shù)據(jù)可以在其他注冊(cè)庫(kù)中共享。私有注冊(cè)庫(kù)中的數(shù)據(jù)不可以共享,并且也不允許對(duì)注冊(cè)庫(kù)和管理功能的訪問(wèn)。第三種組件,附屬注冊(cè)庫(kù),由通過(guò)使用策略在彼此間共享信息的注冊(cè)庫(kù)組成。UDDI3.0中的注冊(cè)庫(kù)可以被配置為分層次結(jié)構(gòu)的、基于對(duì)等實(shí)體的、或受委托的配置。受管理的客戶端對(duì)這些注冊(cè)庫(kù)有有限的訪問(wèn)權(quán)。標(biāo)準(zhǔn)有一個(gè)信息模型,它包括以下內(nèi)容。業(yè)務(wù)實(shí)體:關(guān)于效勞發(fā)布者的信息。業(yè)務(wù)實(shí)體包含業(yè)務(wù)效勞。業(yè)務(wù)效勞:關(guān)于特定技術(shù)效勞組的信息。業(yè)務(wù)效勞包含綁定模板。綁定模板:關(guān)于如何與效勞交互的信息。綁定模板可以引用tModels。UDDI用作描述Web效勞的數(shù)據(jù)和元數(shù)據(jù)的存儲(chǔ)庫(kù)。9.4Web效勞交互9.4

Web效勞交互Web效勞的應(yīng)用場(chǎng)合如下。(1)效勞請(qǐng)求者創(chuàng)立一個(gè)包含必要的效勞有效負(fù)載的SOAP消息。通常效勞請(qǐng)求者在運(yùn)行時(shí)使用SOAP客戶端,這有助于把輸入和輸出對(duì)象轉(zhuǎn)換為XML消息。(2)在網(wǎng)絡(luò)層的另一端,SOAP效勞器運(yùn)行庫(kù)接收到效勞請(qǐng)求,并把該XML消息轉(zhuǎn)換為提供程序平臺(tái)(Java、C#等)使用的編程語(yǔ)言所支持的數(shù)據(jù)結(jié)構(gòu)。然后效勞提供程序說(shuō)明響應(yīng)并把它交給SOAP效勞器運(yùn)行庫(kù)以通過(guò)網(wǎng)絡(luò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論