面向服務(wù)體系結(jié)構(gòu)_第1頁
面向服務(wù)體系結(jié)構(gòu)_第2頁
面向服務(wù)體系結(jié)構(gòu)_第3頁
面向服務(wù)體系結(jié)構(gòu)_第4頁
面向服務(wù)體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、面向服務(wù)的體系結(jié)構(gòu)今天,Web 服務(wù)特指用 Web 服務(wù)描述語言(Web Services Description Language,WSDL)描述的、通過 HTTP 發(fā)送的、處理 XML 編碼的 SOAP 消息的分布式服務(wù)正得到廣泛的部署。Web 服務(wù)可用在各種各樣的應(yīng)用程序集成環(huán)境中:從簡單的(特別是防火墻后面的)數(shù)據(jù)共享到大規(guī)模的 Internet 零售和貨幣交易。 Web 提供了軟件組件之間的互操作性,這些軟件組件可以在不同的企業(yè)之間進行通信,并且可以駐留在不同的基礎(chǔ)架構(gòu)中。這解決了顧客、軟件開發(fā)人員和合作伙伴所面臨一個最重要的問題。HTTP 和 SOAP 提供了通信和消息的互操作性。

2、WSDL 提供了消息的描述,以支持開發(fā)工具之間的互操作性;它憑借交換接口定義的能力來完成通信互操作性。 一組基本的 Web 服務(wù)規(guī)范使顧客和軟件廠商能夠解決一些重要的問題。在這些規(guī)范成功的基礎(chǔ)上,許多開發(fā)人員和公司準(zhǔn)備解決 Web 服務(wù)方面更難的問題。Web 服務(wù)的巨大成功使開發(fā)人員想要從 Web 服務(wù)獲得更多的能力。由于重要的工具和通信互操作已經(jīng)成功了,所以開發(fā)人員現(xiàn)在期望增強互操作的功能。 除了基本的消息互操作性和接口交換之外,開發(fā)人員越來越需要更高級別的應(yīng)用程序服務(wù)互操作。許多商業(yè)應(yīng)用程序運行在這樣一種環(huán)境中(“中間件”或“操作系統(tǒng)”),這種環(huán)境為一些功能(比如安全性和事務(wù)處理)提供支持

3、。 IBM、Microsoft 和業(yè)界其他一些公司常常需要使 Web 更安全、更可靠且更好地支持事務(wù)處理。另外,我們在提供這些能力的同時,還需要保持現(xiàn)在 Web 服務(wù)中必不可少的簡單性和互操作性。面向服務(wù)體系結(jié)構(gòu)(SOA)定義 SOA是指為了解決在Internet環(huán)境下業(yè)務(wù)集成的需要,通過連接能完成特定任務(wù)的獨立功能實體實現(xiàn)的一種軟件系統(tǒng)架構(gòu)。從這個定義中我希望表達的前提有下面兩點: 1) 軟件系統(tǒng)架構(gòu):SOA不是一種語言,也不是一種具體的技術(shù)而是一種軟件系統(tǒng)架構(gòu),它嘗試給出在特定環(huán)境下推薦采用的一種架構(gòu),從這個角度上來說,它更像一種模式(Pattern)。因此它與很多已有的軟件技術(shù)比如面向?qū)?/p>

4、象技術(shù),是互補的而非互斥的。它們分別面向不同的應(yīng)用場景,用來滿足不同的特定需求。 2) SOA的使用范圍:需求決定同時也限制功能。SOA并不是包治百病的萬靈丹,它最主要的應(yīng)用場合在于解決在Internet環(huán)境下的不同商業(yè)應(yīng)用之間的業(yè)務(wù)集成問題。在下面我們會詳細討論Internet的各種特點如何決定SOA的特點,這里我們只需要先簡單回顧一下Internet環(huán)境區(qū)別于Intranet環(huán)境的幾個特點: a) 大量異構(gòu)系統(tǒng)并存,計算機硬件工作方式不同,操作系統(tǒng)不同、編程語言也不同; b) 大量、頻繁的數(shù)據(jù)傳輸仍然速度緩慢并且不穩(wěn)定; c) 版本升級無法完成,我們根本就無法知道互聯(lián)網(wǎng)上有哪些機器直接或者

5、間接的使用某個服務(wù)。 基于上面的前提,下面就讓我們一起看一下SOA的基本特征。 SOA三大基本特征 1 獨立的功能實體 在Internet這樣松散的使用環(huán)境中,任何訪問請求都有可能出錯,因此任何企圖通過Internet進行控制的結(jié)構(gòu)都會面臨嚴(yán)重的穩(wěn)定性問題。SOA非常強調(diào)架構(gòu)中提供服務(wù)的功能實體的完全獨立自主的能力。傳統(tǒng)的組件技術(shù),如.NET Remoting,EJB,COM或者CORBA,都需要有一個宿主(Host或者Server)來存放和管理這些功能實體;當(dāng)這些宿主運行結(jié)束時這些組件的壽命也隨之結(jié)束。這樣當(dāng)宿主本身或者其它功能部分出現(xiàn)問題的時候,在該宿主上運行的其它應(yīng)用服務(wù)就會受到影響。

6、SOA架構(gòu)中非常強調(diào)實體自我管理和恢復(fù)能力。常見的用來進行自我恢復(fù)的技術(shù),比如事務(wù)處理(Transaction),消息隊列(Message Queue),冗余部署(Redundant Deployment)和集群系統(tǒng)(Cluster)在SOA中都起到至關(guān)重要的作用。 2 大數(shù)據(jù)量低頻率訪問 對于.NET Remoting,EJB或者XML-RPC這些傳統(tǒng)的分布式計算模型而言,他們的服務(wù)提供都是通過函數(shù)調(diào)用的方式進行的,一個功能的完成往往需要通過客戶端和服務(wù)器來回很多次函數(shù)調(diào)用才能完成。在Intranet的環(huán)境下,這些調(diào)用給系統(tǒng)的響應(yīng)速度和穩(wěn)定性帶來的影響都可以忽略不計,但是在Internet環(huán)

7、境下這些因素往往是決定整個系統(tǒng)是否能正常工作的一個關(guān)鍵決定因素。因此SOA系統(tǒng)推薦采用大數(shù)據(jù)量的方式一次性進行信息交換。 3 基于文本的消息傳遞由于Internet中大量異構(gòu)系統(tǒng)的存在決定了SOA系統(tǒng)必須采用基于文本而非二進制的消息傳遞方式。在COM、CORBA這些傳統(tǒng)的組件模型中,從服務(wù)器端傳往客戶端的是一個二進制編碼的對象,在客戶端通過調(diào)用這個對象的方法來完成某些功能;但是在Internet環(huán)境下,不同語言,不同平臺對數(shù)據(jù)、甚至是一些基本數(shù)據(jù)類型定義不同,給不同的服務(wù)之間傳遞對象帶來的很大困難。由于基于文本的消息本身是不包含任何處理邏輯和數(shù)據(jù)類型的,因此服務(wù)間只傳遞文本,對數(shù)據(jù)的處理依賴于

8、接收端的方式可以幫忙繞過兼容性這個的大泥坑。 此外,對于一個服務(wù)來說,Internet與局域網(wǎng)最大的一個區(qū)別就是在Internet上的版本管理極其困難,傳統(tǒng)軟件采用的升級方式在這種松散的分布式環(huán)境中幾乎無法進行。采用基于文本的消息傳遞方式,數(shù)據(jù)處理端可以只選擇性的處理自己理解的那部分?jǐn)?shù)據(jù),而忽略其它的數(shù)據(jù),從而得到的非常理想的兼容性。 HTTP協(xié)議:一個典型的SOA實現(xiàn) 每一項新技術(shù)都是在一些舊的技術(shù)基礎(chǔ)上發(fā)展出來的。正如XML根本思想來自于在60年代就已經(jīng)出現(xiàn)的早期標(biāo)記性語言一樣,SOA雖然這兩年才出現(xiàn),但是它所表達的觀念應(yīng)該說在網(wǎng)絡(luò)這種分布式系統(tǒng)結(jié)構(gòu)出現(xiàn)不久就已經(jīng)廣泛應(yīng)用了。例如我們最熟悉

9、的HTTP協(xié)議就是一個非常典型的SOA架構(gòu)設(shè)計。HTTP協(xié)議的工作過程簡單敘述如下: 1) 客戶端,通常是通過瀏覽器,向服務(wù)器端以文本的方式發(fā)送一個請求,索取一個Web頁面; 2) 服務(wù)器端接收到這個請求之后,根據(jù)請求的內(nèi)容進行處理并且返回一個符合HTML語法的文本; 3) 客戶端接收到服務(wù)器端的響應(yīng)文本后調(diào)用本地的程序,通常還是瀏覽器,把返回的HTML文本的內(nèi)容展現(xiàn)出來。 下面來看一下HTTP協(xié)議如何滿足了SOA的特點: * 獨立的功能實體:作為服務(wù)器端的Web服務(wù)器是絕對不會因為客戶端的狀況變化而改變的,它總是非常穩(wěn)定地按照自己的內(nèi)在邏輯運行,響應(yīng)外部的請求,管理自己的資源和數(shù)據(jù)。這里一個

10、非常好的例子就是Web服務(wù)器對緩存(Cache)的處理,很多Web服務(wù)器為了提高性能都或多或少的對數(shù)據(jù)進行緩存,但是緩存數(shù)據(jù)、刷新數(shù)據(jù)這些于客戶端完全無關(guān)的操作完全由服務(wù)器端獨立完成,完全不受客戶端的影響。 * 大數(shù)據(jù)量低頻率訪問:對于一個HTTP請求來說,客戶端與服務(wù)器之間訪問的邊界非常簡單:就是一個請求,一個響應(yīng),沒有任何其它的信息往返。無論客戶端申請的網(wǎng)頁上除了文字之外還有什么信息,對于客戶端來說,它發(fā)出的請求只是簡單的告訴Web服務(wù)器它所需要的網(wǎng)頁的位置;至于為了生成這個網(wǎng)頁,服務(wù)器端是否需要訪問數(shù)據(jù)庫,執(zhí)行Servlet或者其它的CGI程序?qū)蛻舳硕?,都是完全透明的?* 基于文本

11、的消息傳遞:迄今為止兼容性最好的系統(tǒng)可能就是HTTP協(xié)議支撐的大部分的web應(yīng)用了,我們可以在Windows平臺下用IE查看互聯(lián)網(wǎng)上一個LinuxApache服務(wù)器上的由Perl腳本自動生成的網(wǎng)頁。這里的關(guān)鍵就是所有內(nèi)容都是以格式化的文本方式傳遞的,不管Perl腳本如何執(zhí)行,只要它的輸出是符合HTML規(guī)范的網(wǎng)頁,就可以被客戶端的瀏覽器解釋。而由于不同的操作系統(tǒng)上對于相同的HTML的解釋遵循相同的規(guī)范,因此不同操作系統(tǒng)下仍然能夠看到一致的用戶界面。 我們上面基本描述了SOA作為一種軟件架構(gòu)有哪些特點,下面讓我們一起看看Web Service與SOA的關(guān)系。 SOA與Web Service Web

12、 Service是就現(xiàn)在而言最適合實現(xiàn)SOA的一些技術(shù)的集合,事實上最近SOA的火爆在很大程度上歸功于Web Service標(biāo)準(zhǔn)的成熟和應(yīng)用的普及為廣泛的實現(xiàn)SOA架構(gòu)提供了基礎(chǔ)。下面讓我們看看Web Service中的各種協(xié)議是如何互相工作來滿足SOA所需的特點的: * 獨立的功能實體:通過UDDI的目錄查找,我們可以動態(tài)改變一個服務(wù)的提供方而無需影響客戶端的應(yīng)用程序配置。所有的訪問都通過SOAP訪問進行,只要WSDL接口封裝良好,外界客戶端是根本沒有辦法直接訪問服務(wù)器端的數(shù)據(jù)的。 * 大數(shù)據(jù)量低頻率訪問:通過使用WSDL和基于文本(Literal)的SOAP請求,我們可以實現(xiàn)能一次性接收大

13、量數(shù)據(jù)的接口。這里需要著重指出的是SOAP請求分文本方式和遠程調(diào)用(RPC)兩種方式,正如上文已經(jīng)提到的,采用遠程調(diào)用方式的SOAP請求并不符合這點要求。但是令人遺憾的是現(xiàn)有的大多數(shù)SOAP請求采用的仍然是遠程調(diào)用(RPC)方式,在某些平臺上,例如IBM WebSphere的早期版本,甚至沒有提供文本方式的SOAP支持。 * 基于文本的消息傳遞:Web Service所有的通訊是通過SOAP進行的,而SOAP是基于XML的,不同版本之間可以使用不同的DTD或者XML Schema加以辨別和區(qū)分。因此只需要我們?yōu)椴煌陌姹咎峁┎煌奶幚砭涂梢暂p松實現(xiàn)版本控制的目標(biāo)。 SOA對于軟件架構(gòu)設(shè)計的影響

14、 無論您現(xiàn)在的系統(tǒng)是否牽涉到基于Internet的業(yè)務(wù)集成,采用SOA推薦的架構(gòu)都對提高您系統(tǒng)的擴展性有很大幫助,下面是在系統(tǒng)中引入SOA后需要在軟件架構(gòu)方面做出的改變: * 使用基于文本方式的SOAP調(diào)用,擺脫遠程調(diào)用中出現(xiàn)的函數(shù)參數(shù)類型等與數(shù)據(jù)無關(guān)的信息,保證所有SOAP傳遞的都是有意義的商業(yè)數(shù)據(jù)。依賴于Schema,而不是類定義對這些數(shù)據(jù)進行解釋。 * 傳統(tǒng)的三層Web應(yīng)用將可能變成四層結(jié)構(gòu):傳統(tǒng)意義上的商業(yè)邏輯層將被進一步劃分為存放每個會話(Session)信息的客戶邏輯層和與狀態(tài)無關(guān)Sateless的SOA層。下面簡要地描述了面向服務(wù)的體系結(jié)構(gòu)的發(fā)展。然后探討面向組件的開發(fā)與面向服務(wù)

15、的體系結(jié)構(gòu)之間的關(guān)系,并說明如何將組件作為實現(xiàn)服務(wù)的基礎(chǔ)設(shè)施。第一部分:新方法的商業(yè)驅(qū)動力 雖然IT經(jīng)理一直面臨著削減成本和最大限度地利用現(xiàn)有技術(shù)的難題,但是與此同時,他們還必須不斷地努力,以期更好地服務(wù)客戶,更快地響應(yīng)企業(yè)戰(zhàn)略重點,從而贏得更大的競爭力。在所有這些壓力之下,有兩個基本的主題:異構(gòu)和改變?,F(xiàn)在,大多數(shù)企業(yè)都有各種各樣的系統(tǒng)、應(yīng)用程序以及不同時期和技術(shù)的體系結(jié)構(gòu)。集成來自多個廠商跨不同平臺的產(chǎn)品簡直就像一場噩夢。但是我們也不能單單使用一家廠商的產(chǎn)品,因為改變應(yīng)用程序套件和支持基礎(chǔ)設(shè)施是如此之難。在當(dāng)今IT經(jīng)理面臨的問題之中,改變是第二個主題。全球化和電子商務(wù)加快了改變的步伐。全球

16、化帶來了激烈的競爭,產(chǎn)品周期縮短了,每個公司都想贏得超過競爭對手的優(yōu)勢。在競爭產(chǎn)品和可以從Internet上獲得的大量產(chǎn)品信息的推動下,客戶要求更快速地進行改變。因而,在改進產(chǎn)品和服務(wù)方面展開的競爭進一步加劇了。為了滿足客戶提出的越來越多的新要求,技術(shù)方面的改進也在不斷地加快。企業(yè)必須快速地適應(yīng)這種改變,否則就難以生存,更別提在這個動蕩不安競爭激烈的環(huán)境中取得成功了,而 IT 基礎(chǔ)設(shè)施必須支持企業(yè)提高適應(yīng)能力。因此,企業(yè)組織正在從上世紀(jì)八十年代或更早的時期的相互隔離的垂直業(yè)務(wù)部門,到上世紀(jì)八十年代和九十年代關(guān)注業(yè)務(wù)流程的水平結(jié)構(gòu),向新的生態(tài)系統(tǒng)業(yè)務(wù)范例發(fā)展。重點是擴展供應(yīng)鏈,支持客戶和合作伙伴

17、訪問業(yè)務(wù)服務(wù)。圖 1 展示了企業(yè)的這種發(fā)展。圖1 企業(yè)的發(fā)展如何使IT 環(huán)境更靈活且更快地響應(yīng)不斷改變的業(yè)務(wù)需求呢? 我們?nèi)绾问惯@些異構(gòu)系統(tǒng)和應(yīng)用程序盡可能無縫地進行通信呢?我們?nèi)绾芜_到企業(yè)目標(biāo)而不使企業(yè)走向破產(chǎn)的深淵呢?IT 響應(yīng)者/支持者是隨著企業(yè)的這種發(fā)展而并行發(fā)展的,如圖2 所示。現(xiàn)在,許多 IT 經(jīng)理和專業(yè)人員都同樣相信,我們真的快找到了一種滿意的答案面向服務(wù)的體系結(jié)構(gòu)。圖 2 面向服務(wù)的術(shù)語為了減少異構(gòu)性、互操作性和不斷改變的要求的問題,這樣的體系結(jié)構(gòu)應(yīng)該提供平臺來構(gòu)建具有下列特征的應(yīng)用程序服務(wù):· 松散耦合 · 位置透明 · 協(xié)議獨立 基于這樣的面向

18、服務(wù)的體系結(jié)構(gòu),服務(wù)使用者甚至不必關(guān)心與之通信的特定服務(wù),因為底層基礎(chǔ)設(shè)施或服務(wù)“總線”將代表使用者做出適當(dāng)?shù)倪x擇?;A(chǔ)設(shè)施對請求者隱藏了盡可能多的技術(shù)。特別地,來自不同實現(xiàn)技術(shù)(如 J2EE 或 .NET)的技術(shù)規(guī)范不應(yīng)該影響 SOA 用戶。如果已經(jīng)存在一個服務(wù)實現(xiàn),我們就還應(yīng)該重新考慮用一個“更好”的服務(wù)實現(xiàn)來代替,新的服務(wù)實現(xiàn)必須具有更好的服務(wù)質(zhì)量。第二部分:作為解決方案的面向服務(wù)體系結(jié)構(gòu) 自從“軟件危機”促進軟件工程的開創(chuàng)以來,IT界一直在努力尋求解決上述問題的方案。在過去幾年里,下面簡要概述的核心技術(shù)進展使我們走到了今天。我們將簡要討論這些核心技術(shù),而我們重點關(guān)注的將是這些技術(shù)如何幫

19、助解決 IT 問題。面向?qū)ο蟮姆治龊驮O(shè)計在“Applying UML and Patterns - An Introduction to Object-Oriented Analysis and Design”中,Larman 將面向?qū)ο蟮姆治龊驮O(shè)計的本質(zhì)描述為“從對象(物體、概念或?qū)嶓w)的角度考慮問題域和邏輯解決方案”。在“Object-Oriented SoftwareEngineering: A Use Case Driven Approach”中,Jacobson 等將這些對象定義為“特點在于具有許多操作和狀態(tài)(記憶這些操作的影響)的物體”。在面向?qū)ο蟮姆治鲋?,這樣的對象是用問題域來標(biāo)

20、識和描述的,而在面向?qū)ο蟮脑O(shè)計中,它們轉(zhuǎn)變成邏輯軟件對象,這些對象最終將用面向?qū)ο蟮木幊陶Z言進行實現(xiàn)。通過面向?qū)ο蟮姆治龊驮O(shè)計,可以封裝對象(或?qū)ο蠼M)的某些方面,以簡化復(fù)雜業(yè)務(wù)場景的分析。為了降低復(fù)雜性,也可以抽象對象的某些特征,這樣就可以只捕獲重要或本質(zhì)的方面?;诮M件的設(shè)計并不是一種新技術(shù)。它是從對象范例中自然發(fā)展而來的。在面向?qū)ο蟮姆治龊驮O(shè)計的早期,細粒度的對象被標(biāo)榜為提供“重用”的機制,但是這樣的對象的粒度級別太低了,沒有適當(dāng)?shù)臉?biāo)準(zhǔn)可以用來使重用廣泛應(yīng)用于實踐之中。在應(yīng)用程序開發(fā)和系統(tǒng)集成中,粗粒度組件越來越成為重用的目標(biāo)。這些粗粒度對象通過內(nèi)聚一些更細粒度的對象來提供定義良好的功能

21、。通過這種方式,還可以將打包的解決方案套件封裝成這樣的“組件”。一旦組織在更高層次上實現(xiàn)了基于完全獨立的功能組件的完備體系結(jié)構(gòu),就可以將支持企業(yè)的應(yīng)用程序劃分成一組粒度越來越大的組件??梢詫⒔M件看作是打包、管理和公開服務(wù)的機制。它們可以共同使用一組技術(shù):實現(xiàn)企業(yè)級用況的大粒度企業(yè)組件可以通過更新的面向?qū)ο蟮能浖_發(fā)與遺留系統(tǒng)相結(jié)合來實現(xiàn)面向服務(wù)的設(shè)計在“Component-Based Development for Enterprise Systems”中,Allen 涉及了服務(wù)的概念,“它是將組件描述成提供相關(guān)服務(wù)的物理黑盒封裝的可執(zhí)行代碼單元。它的服務(wù)只能通過一致的已發(fā)布接口(它包括交互標(biāo)

22、準(zhǔn))進行訪問。組件必須能夠連接到其他組件(通過通信接口)以構(gòu)成一個更大的組”。服務(wù)通常實現(xiàn)為粗粒度的可發(fā)現(xiàn)軟件實體,它作為單個實例存在,并且通過松散耦合的基于消息通信模型來與應(yīng)用程序和其他服務(wù)交互。圖3 展示了重要的面向服務(wù)術(shù)語:· 服務(wù):邏輯實體,由一個或多個已發(fā)布接口定義的契約。 · 服務(wù)提供者:實現(xiàn)服務(wù)規(guī)范軟件實體。 · 服務(wù)使用者(或請求者):調(diào)用服務(wù)提供者的軟件實體。傳統(tǒng)上,它稱為“客戶端”。服務(wù)使用者可以是終端用戶應(yīng)用程序或另一個服務(wù)。 · 服務(wù)定位器:一種特殊類型的服務(wù)提供者,它作為一個注冊中心,允許查找服務(wù)提供者接口和服務(wù)位置。 

23、3; 服務(wù)代理:一種特殊類型的服務(wù)提供者,它可以將服務(wù)請求傳送到一個或多個其他的服務(wù)提供者。 圖3 面向服務(wù)的術(shù)語基于接口的設(shè)計在組件和服務(wù)開發(fā)中,都需要進行接口設(shè)計,這樣軟件實體就可以實現(xiàn)和公開其定義的關(guān)鍵部分。因此,在基于組件和面向服務(wù)的系統(tǒng)中,“接口”的概念對于成功的設(shè)計非常關(guān)鍵。下面是一些與接口有關(guān)的重要定義:· 接口:定義一組公共方法簽名,它按照邏輯分組但是沒有提供實現(xiàn)。接口定義服務(wù)的請求者和提供者之間的契約。接口的任何實現(xiàn)都必須提供所有的方法。 · 已發(fā)布接口:一種可唯一識別和可訪問的接口,客戶端可以通過注冊中心來發(fā)現(xiàn)它。 · 公共接口:一種可訪問的接

24、口,可供客戶端使用,但是它沒有發(fā)布,因而需要關(guān)于客戶端部分的靜態(tài)知識。 · 雙接口:通常是成對開發(fā)的接口,這樣,一個接口就依賴于另一個接口;例如,客戶端必須實現(xiàn)一個接口來調(diào)用請求者,因為該客戶端接口提供了某些回調(diào)機制。 圖4 定義了客戶關(guān)系管理 (CRM) 服務(wù)的 UML 定義,它表示為一個 UML 組件,實現(xiàn)接口 AccountManagement、ContactManagement 和 SystemsManagement。在這些接口中只有頭兩個接口是已發(fā)布接口,不過,后者是公共接口。注意,SystemsManagement 接口和 ManagementService 接口構(gòu)成了雙

25、接口。CRMservice 可以實現(xiàn)許多這樣的接口,但是它以多種方式行為的能力取決于客戶端在行為的實現(xiàn)方面是否允許有大的靈活性。甚至有可能給特定類型的客戶端提供不同或附加的服務(wù)。在一些運行時環(huán)境中,這樣的功能也用于在單個組件或服務(wù)上支持相同接口的不同版本。圖4 已實現(xiàn)的服務(wù)分層應(yīng)用程序體系結(jié)構(gòu)如前所述,面向?qū)ο蟮募夹g(shù)和語言是實現(xiàn)組件的極好方式。雖然組件是實現(xiàn)服務(wù)的最好方法,但是您必須理解的一點是,好的基于組件的應(yīng)用程序未必就構(gòu)成好的面向服務(wù)的應(yīng)用程序。一旦理解了服務(wù)在應(yīng)用程序體系結(jié)構(gòu)中所起的作用,組件開發(fā)人員就很有可能會利用現(xiàn)有的組件。進行這種轉(zhuǎn)變的關(guān)鍵是認(rèn)識到面向服務(wù)的方法意味著附加的應(yīng)用程

26、序體系結(jié)構(gòu)層。圖5 演示了如何將技術(shù)層應(yīng)用于程序體系結(jié)構(gòu)以提供粒度更粗的實現(xiàn)(它更靠近應(yīng)用程序的使用者)。為稱呼系統(tǒng)的這一部分而創(chuàng)造的術(shù)語是“應(yīng)用程序邊界”,它反映了服務(wù)是公開系統(tǒng)的外部視圖的極好方法的事實(通過內(nèi)部重用并結(jié)合使用傳統(tǒng)組件設(shè)計)。圖5 應(yīng)用程序?qū)崿F(xiàn)層:服務(wù)、組件、對象第三部分:近距離審視面向服務(wù)的體系結(jié)構(gòu) 面向服務(wù)的體系結(jié)構(gòu)提供了一種方法,通過這種方法,可以構(gòu)建分布式系統(tǒng)來將應(yīng)用程序功能作為服務(wù)提供給終端用戶應(yīng)用程序或其他服務(wù)。其組成元素可以分成功能元素和服務(wù)質(zhì)量元素。圖6 展示了體系結(jié)構(gòu)堆棧以及在一個面向服務(wù)的體系結(jié)構(gòu)可能觀察到的元素。注意:面向服務(wù)的體系結(jié)構(gòu)堆??赡苁且粋€容

27、易引起爭議的問題,因為各方面的支持者已經(jīng)提出了幾種不同的堆棧。我們的堆棧不是作為服務(wù)堆棧提出的。我們之所以在此提出它,是因為我們想要搭建一個有用的框架,在本書的剩余章節(jié)中,我們將通過這個框架來組織對 SOA 的討論。圖6 面向服務(wù)的體系結(jié)構(gòu)的元素體系結(jié)構(gòu)堆棧分成兩半,左邊的一半集中于體系結(jié)構(gòu)的功能性方面,而右邊的一半集中于體系結(jié)構(gòu)的服務(wù)質(zhì)量方面。這些元素詳細描述如下: 功能性方面包括:· 傳輸是一種機制,用于將來自服務(wù)使用者的服務(wù)請求傳送給服務(wù)提供者,并且將來自服務(wù)提供者的響應(yīng)傳送給服務(wù)使用者。 · 服務(wù)通信協(xié)議是一種經(jīng)過協(xié)商的機制,通過這種機制,服務(wù)提供者和服務(wù)使用者可以

28、就將要請求的內(nèi)容和將要返回的內(nèi)容進行溝通。 · 服務(wù)描述是一種經(jīng)過協(xié)商的模式,用于描述服務(wù)是什么、應(yīng)該如何調(diào)用服務(wù)以及成功地調(diào)用服務(wù)需要什么數(shù)據(jù)。 · 服務(wù)描述實際可供使用的服務(wù)。 · 業(yè)務(wù)流程是一個服務(wù)的集合,可以按照特定的順序并使用一組特定的規(guī)則進行調(diào)用,以滿足業(yè)務(wù)要求。注意,可以將業(yè)務(wù)流程本身看作是服務(wù),這樣就產(chǎn)生了業(yè)務(wù)流程可以由不同粒度的服務(wù)組成的觀念。 · 服務(wù)注冊中心是一個服務(wù)和數(shù)據(jù)描述的存儲庫,服務(wù)提供者可以通過服務(wù)注冊中心發(fā)布它們的服務(wù),而服務(wù)使用者可以通過服務(wù)注冊中心發(fā)現(xiàn)或查找可用的服務(wù)。服務(wù)注冊中心可以給需要集中式存儲庫的服務(wù)提供其他

29、的功能。服務(wù)質(zhì)量方面包括:· 策略是一組條件和規(guī)則,在這些條件和規(guī)則之下,服務(wù)提供者可以使服務(wù)可用于使用者。策略既有功能性方面,也有與服務(wù)質(zhì)量有關(guān)的方面;因此,我們在功能和服務(wù)質(zhì)量兩個區(qū)中都有策略功能。 · 安全性是規(guī)則集,可以應(yīng)用于調(diào)用服務(wù)的服務(wù)使用者的身份驗證、授權(quán)和訪問控制。 · 傳輸是屬性集,可以應(yīng)用于一組服務(wù),以提供一致的結(jié)果。例如,如果要使用一組服務(wù)來完成一項業(yè)務(wù)功能,則所有的服務(wù)必須都完成,或者沒有一個完成。 · 管理是屬性集,可以應(yīng)用于管理提供的服務(wù)或使用的服務(wù)。 SOA 協(xié)作圖7 展示了面向服務(wù)的體系結(jié)構(gòu)中的協(xié)作。這些協(xié)作遵循“查找、綁

30、定和調(diào)用”范例,其中,服務(wù)使用者執(zhí)行動態(tài)服務(wù)定位,方法是查詢服務(wù)注冊中心來查找與其標(biāo)準(zhǔn)匹配的服務(wù)。如果服務(wù)存在,注冊中心就給使用者提供接口契約和服務(wù)的端點地址。下圖展示了面向服務(wù)的體系結(jié)構(gòu)中協(xié)作支持“查找、綁定和調(diào)用”范例的實體。圖7 面向服務(wù)的體系結(jié)構(gòu)中的協(xié)作· 服務(wù)使用者:服務(wù)使用者是一個應(yīng)用程序、一個軟件模塊或需要一個服務(wù)的另一個服務(wù)。它發(fā)起對注冊中心中的服務(wù)的查詢,通過傳輸綁定服務(wù),并且執(zhí)行服務(wù)功能。服務(wù)使用者根據(jù)接口契約來執(zhí)行服務(wù)。 · 服務(wù)提供者:服務(wù)提供者是一個可通過網(wǎng)絡(luò)尋址的實體,它接受和執(zhí)行來自使用者的請求。它將自己的服務(wù)和接口契約發(fā)布到服務(wù)注冊中心,以便

31、服務(wù)使用者可以發(fā)現(xiàn)和訪問該服務(wù)。 · 服務(wù)注冊中心:服務(wù)注冊中心是服務(wù)發(fā)現(xiàn)的支持者。它包含一個可用服務(wù)的存儲庫,并允許感興趣的服務(wù)使用者查找服務(wù)提供者接口。 面向服務(wù)的體系結(jié)構(gòu)中的每個實體都扮演著服務(wù)提供者、使用者和注冊中心這三種角色中的某一種(或多種)。面向服務(wù)的體系結(jié)構(gòu)中的操作包括:· 發(fā)布:為了使服務(wù)可訪問,需要發(fā)布服務(wù)描述以使服務(wù)使用者可以發(fā)現(xiàn)和調(diào)用它。 · 發(fā)現(xiàn):服務(wù)請求者定位服務(wù),方法是查詢服務(wù)注冊中心來找到滿足其標(biāo)準(zhǔn)的服務(wù)。 · 綁定和調(diào)用:在檢索完服務(wù)描述之后,服務(wù)使用者繼續(xù)根據(jù)服務(wù)描述中的信息來調(diào)用服務(wù)。 面向服務(wù)的體系結(jié)構(gòu)中的構(gòu)件包括

32、:· 服務(wù):可以通過已發(fā)布接口使用服務(wù),并且允許服務(wù)使用者調(diào)用服務(wù)。 · 服務(wù)描述:服務(wù)描述指定服務(wù)使用者與服務(wù)提供者交互的方式。它指定來自服務(wù)的請求和響應(yīng)的格式。服務(wù)描述可以指定一組前提條件、后置條件和/或服務(wù)質(zhì)量 (QoS) 級別。 除了動態(tài)服務(wù)發(fā)現(xiàn)和服務(wù)接口契約的定義之外,面向服務(wù)的體系結(jié)構(gòu)還具有以下特征:· 服務(wù)是自包含和模塊化的。 · 服務(wù)支持互操作性。 · 服務(wù)是松散耦合的。 · 服務(wù)是位置透明的。 · 服務(wù)是由組件組成的組合模塊。 這些特征也是滿足電子商務(wù)按需操作環(huán)境的要求的主要特征,如“e-business

33、on demand and Service-oriented architecture”所定義的。最后,我們需要說明的是,面向服務(wù)的體系結(jié)構(gòu)并不是一個新的概念。如圖8 所示,面向服務(wù)的體系結(jié)構(gòu)所涉及的技術(shù)至少包括 CORBA、DCOM 和 J2EE。面向服務(wù)的體系結(jié)構(gòu)的早期采用者還曾成功地基于消息傳遞系統(tǒng)(如 IBM WebSphere MQ)創(chuàng)建過他們自己的面向服務(wù)企業(yè)體系結(jié)構(gòu)。最近,SOA 的活動舞臺已經(jīng)擴展到包括 World Wide Web (WWW) 和 Web 服務(wù)。圖8 面向服務(wù)的體系結(jié)構(gòu)的不同實現(xiàn)SOA范圍中的服務(wù)在面向服務(wù)的體系結(jié)構(gòu)中,映射到業(yè)務(wù)功能的服務(wù)是在業(yè)務(wù)流程分析的過

34、程中確定的。服務(wù)可以是細粒度的,也可以是粗粒度的,這取決于業(yè)務(wù)流程。每個服務(wù)都有定義良好的接口,通過該接口就可以發(fā)現(xiàn)、發(fā)布和調(diào)用服務(wù)。 企業(yè)可以選擇將自己的服務(wù)向外發(fā)布到業(yè)務(wù)合作伙伴,也可以選擇在組織內(nèi)部發(fā)布服務(wù)。服務(wù)還可以由其他服務(wù)組合而成。服務(wù)與組件服務(wù)是粗粒度的處理單元,它使用和產(chǎn)生由值傳送的對象集。它與編程語言術(shù)語中的對象不同。相反,它可能更接近于業(yè)務(wù)事務(wù)(如 CICS 或 IMS 事務(wù))的概念而不是遠程 CORBA 對象的概念。服務(wù)是由一些組件組成的,這些組件一起工作,共同提供服務(wù)所請求的業(yè)務(wù)功能。因此,相比之下,組件比服務(wù)的粒度更細。另外,雖然服務(wù)映射到業(yè)務(wù)功能,但是組件通常映射到業(yè)務(wù)實體和操作它們的業(yè)務(wù)規(guī)則。作為一個示例,讓我們看一看 WS-I 供應(yīng)鏈管理(WS-I Supply Chain Management)樣本的定購單(PurchaseOrder)組件模型,如圖9 所示。圖9 定購單組件模型在基

溫馨提示

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

評論

0/150

提交評論