中間件領域建模案例研究_第1頁
中間件領域建模案例研究_第2頁
中間件領域建模案例研究_第3頁
中間件領域建模案例研究_第4頁
中間件領域建模案例研究_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、中間件領域建模案例研究要點瀏覽:特征模型有組織地描述了一個特定領域的軟件所具有的特征,是一種便于軟件復用的需求規(guī)約工具。本節(jié)將利用特征模型刻畫軟件中間件的主要特征,為中間件的功能劃分奠定基礎。不同的建模人員、從不同的角度得出的特征模型不盡相同,本文給出的特征模型反映了中間件用戶(即基于中間件分布應用的開發(fā)和管理人員)在使用中間件時關心的、也是可見的功能或質量,并不排斥其它形式的特征模型。此外,該特征模型側重于主流中間件的主要特征,不是中間件特征的全集。同時,該特征模型選擇性地細化了一部分特征,而不是將所有特征都進行細化。具體而言,您可以了解到:n 中間件封裝的共性機制解決了系統(tǒng)的哪些需求。n

2、不同中間件功能在需求層次的關系。 1 中間件特征模型概覽圖 Error! No text of specified style in document.1 軟件中間件特征模型概覽如圖 Error! No text of specified style in document.1所示,現(xiàn)有的主流分布計算中間件具備協(xié)同(Coordination)、構件化(Componentization)、可靠性(Reliability)、安全性(Security)、持久性(Persistency)、透明性(Transparency)、伸縮性(Scalability)、生命周期(LifeCycle)等主要特征。其

3、中,協(xié)同是中間件提供的主要功能,其它特征則描述了中間件非功能屬性。以CORBA為例,協(xié)同特征往往由GIOP/IIOP互操作協(xié)議、命名服務、接口定義語言和編譯器提供,非功能特征往往由各種服務提供,如安全服務、事務服務、容錯服務、持久服務、生命周期服務。隨著中間件對基于構件的軟件開發(fā)的支持,構件化成為中間件的主要特征之一。中間件對構件化特征的支持主要表現(xiàn)為三個方面:首先是提供部署特征,因為構件與對象的主要區(qū)別之一在于構件是一個可獨立部署的單元Szyperski 97Bachman 00;其次,增強了生命周期管理特征,尤其是上層應用單元的裝載、實例化、卸載等工作由中間件而不是上層應用完成;其三,增強

4、了透明性特征,使得應用程序代碼無需考慮如何使用中間件提供的安全、事務、持久、容錯等特征。例如,CORBA和RMI應用程序往往需要將整個實現(xiàn)打包在一起發(fā)布,應用實現(xiàn)中往往包含與生命周期管理和安全、事務、持久等特征相關的代碼,而CCM和EJB應用可拆分成多個包單獨發(fā)布,程序中也沒有那些與中間件相關的代碼。在實現(xiàn)上,中間件對構件化特征的支持往往通過容器實現(xiàn),如CCM容器和EJB容器。容器為上層應用的構件提供了部署和運行空間,自動管理構件的生命周期,并協(xié)助上層應用合理使用互操作、安全、事務、持久等中間件提供的各種特征。2 協(xié)同特征中間件的最主要特征就是協(xié)調散布在多個主機上的構件以完成特定目標。目前的主

5、流中間件致力于兩個構件之間基于接口的協(xié)同,而新型中間件,如Web Services,則開始關注多個構件之間、基于流程的協(xié)同。如圖 Error! No text of specified style in document.1所示,中間件的協(xié)同特征主要包括互操作(Interoperability)、同步(Synchronization)與并發(fā)(Concurrency)三個子特征。其中,互操作使能分布環(huán)境下構件之間的交互,同步負責協(xié)調交互構件的時序關系,而并發(fā)則側重于構件交互過程中的資源管理。互操作是中間件的基本特征,為了使能分布構件之間的交互,中間件必須提供合約(Contract)、協(xié)議(Pro

6、tocol)和綁定(Binding)三種互操作子特征,如圖 22所示。圖 Error! No text of specified style in document.2軟件中間件特征模型互操作及其子特征合約是指構件對外提供服務的承諾以及這些服務正常使用的條件。其中,接口規(guī)約(Interface Specification)是服務功能的文法描述,定義了服務的名稱、方法名、輸入輸出參數(shù)等,如CORBA IDL;非功能約束(Non-functional Constraint)則描述了服務接口的質量屬性,如安全、事務等,如CORBA IDL中的Context;協(xié)奏(Orchestration)則規(guī)定了

7、接口在使用過程中一些隱含的次序關系。構件內部協(xié)奏(Intra-Component Orchestration)是指一個構件的接口方法之間存在一定的調用次序,違背這些次序可能導致調用失敗,例如,要調用某構件的方法B,必須首先調用該構件的方法A,這是EJB構件調用的典型場景,即,調用正常的業(yè)務方法之前必需先調用Home接口中的實例創(chuàng)建方法SUN 01a。構件間協(xié)奏(Inter-Component Orchestration)是指使用系統(tǒng)某個特定功能時,需要多個構件按照一定的次序共同完成,如必須依次調用構件M的方法A、構件N的方法B、構件P的方法C才能實現(xiàn)系統(tǒng)的某個功能。值得一提的是,傳統(tǒng)中間件,如

8、CORBA、RMI、COM,并不提供協(xié)奏特征,構件內部以及構件之間的協(xié)奏關系由上層應用構件負責。而目前的中間件熱點之一Web Services既考慮顯式定義構件內部協(xié)奏(如Web Services Choreography Language Austin 03),又重點解決構件間協(xié)奏(如Business Process Execution LanguageAndrews 03),這意味著協(xié)奏正式成為中間件的主要特征之一。協(xié)議(Protocol)是指交互雙方必須共同遵循的一組規(guī)則,典型的互操作協(xié)議包括CORBA的GIOP/IIOP、RMI的JRMP以及DCOM的RPC?;ゲ僮鲄f(xié)議主要定義交互過程

9、中使用的消息格式(Message Format)、編解碼算法(Mashalling)以及網絡傳輸協(xié)議(Networking)。綁定是指構件必須首先與中間件建立聯(lián)系,然后通過中間件與參加交互的其它構件建立聯(lián)系,最后才能開始交互??蛻舳藰嫾c中間件的關聯(lián)通過客戶樁綁定(Stub Binding)實現(xiàn),服務端構件與中間件的關聯(lián)通過服務骨架綁定(Skeleton Binding)實現(xiàn)。構件之間的關聯(lián)則是通過命名綁定(Naming Binding)實現(xiàn)的。命名綁定有包括命名的格式(Naming Format)、命名的發(fā)布(Naming Publish)以及命名的查詢(Naming Discovery)三

10、個子特征。盡管中間件的初衷就是盡量使得分布應用的編寫與本地應用類似,開發(fā)人員仍不得不面對分布應用的一些特殊情況。同步就是分布應用的主要特點之一,也是中間件用戶在開發(fā)分布應用過程中不得不關注的中間件主要特征之一。如圖 23所示,同步又可細分為點對點同步、點對點異步和分組:圖 Error! No text of specified style in document.3 軟件中間件特征模型同步及其子特征點對點同步(Peer-to-Peer Sync)協(xié)調分布環(huán)境中的兩個構件,要求這兩個構件必須同時可用。其中,簡單同步(Simple Sync)是指客戶構件發(fā)出請求后就阻塞等待直至服務構件完成處理并返

11、回應答后才繼續(xù)執(zhí)行;延遲同步(Deferred Sync)則是指客戶構件發(fā)出請求后并不阻塞等待服務構件完成處理即可繼續(xù)執(zhí)行,在隨后的某個時刻客戶構件主動查詢是否產生應答;單向同步(Oneway Sync)則是指服務構件不會返回任何結果。單向同步常常被誤認為異步協(xié)調,但其實仍要求服務構件在客戶構件發(fā)出請求時可用。點對點異步(Peer-to-Peer Async)也負責協(xié)調分布環(huán)境中的兩個構件,但并不要求這兩個構件同時可用。其中,回調異步(Callback Async)是指客戶構件發(fā)送請求后繼續(xù)執(zhí)行,隨后由服務構件主動通知客戶構件處理應答;詢問異步(Poll Async)則是指客戶構件在請求發(fā)送后

12、,會立即收到服務構件的一個即時應答,對預期的處理結果進行說明,客戶構件可以根據該即時應答決定是否阻塞等待返回結果,或者決定何時查詢返回結果。分組(Grouping)協(xié)調分布環(huán)境中兩個以上的構件,一般不要求所有構件同時可用。其中,發(fā)布/訂閱模式的分組(Publish/Subscribe)要求參與同步的構件主動注冊或注銷,如典型的事件服務、消息服務或通告服務均提供該特征。而隱式分組(Implicit Grouping)則無需參與方主動注冊或注銷,這些管理工作由額外的機制負責,如典型的集群以及CORBA容錯服務均支持該特征。在分布環(huán)境下,同一個構件可能要同時為多個客戶服務,為此,需要并發(fā)特征以有效利

13、用有限的資源。并發(fā)主要考慮在服務器端對線程(Servant Thread)和網絡連接(Access Point)兩種資源的管理,如圖 24所示。圖 Error! No text of specified style in document.4軟件中間件特征模型并發(fā)及其子特征對于一個服務構件(或者駐留多個構件的服務端點)而言,可為每個請求分配一個線程(PerRequest Threading),或者為每個客戶分配一個線程(PerClient Threading,該客戶的所有請求均由同一個線程串行處理),或者建立一個線程池(Pool Threading)為所有請求分配有限的線程。線程池并發(fā)包含關閉

14、策略(Shutdown Policy)和阻塞策略(Block Policy)兩個子特征。線程池關閉意味著不再為請求分配線程,對于已經分配的線程,或者等待它們處理完畢(Shutdown After Processing),或者立即中斷這些線程(Shutdown At Once)。當線程池中所有線程均處于執(zhí)行狀態(tài),沒有多余線程分配給新的請求時,線程池處于阻塞狀態(tài)。此時可將線程池唯一的調度線程分配給請求(Run When Blocked),或者等待某個線程處理完畢后再分配給新的請求(Wait When Blocked),或者直接拒絕新的請求(Discard When Blocked),或者拒絕最老的

15、等待請求(Discard Oldest When Blocked),或者關閉整個線程池(Abort When Blocked)。一個服務構件往往具備一個訪問點,允許客戶在分布環(huán)境下訪問該構件,訪問點可進行四種網絡連接分配策略,分別是為每個請求(PerRequest Connection)、每個客戶(PerClient Connection)、每個客戶端(PerEndpoint Connection)一個客戶駐留在一個客戶端,一個客戶端可同時駐留多個客戶)分配一個連接,或者建立一個連接池(Pool Connection),進行與線程池類似的管理。3 可靠性特征可靠性是任何實用的軟件系統(tǒng)必須考慮的

16、特征,如圖 25所示,中間件提供的可靠性特征包括三個方面:圖 Error! No text of specified style in document.5 軟件中間件特征模型可靠性及其子特征請求可靠性(Reliable Requesting)是指構件之間的互操作和同步兩個特征能夠持續(xù)正確運行的概率,可分為點到點請求的可靠性(Peer-to-Peer Reliable Requesting)和分組請求的可靠性(Grouped Reliable Requesting)。前者往往依賴四種子特征實現(xiàn),包括最佳努力請求(best-effort Requesting,不需要任何可靠性機制)、最多一次請求

17、(At-most-once Requesting)、至少一次請求(At-least-once Requesting)、正好一次請求(Exactly-once Requesting)。而分組請求的可靠性可由K可靠(k-reliability,保證至少k個構件收到消息)、超時(time-outs,保證在指定時間后不傳輸消息)、全序(totally-ordered,保證某個組請求肯定在前一個組請求收到之后才被收到)等子特征實現(xiàn)。事務性特征(Transaction)適用于多個請求的可靠性,其ACID(Atomic, Consistency preserving, Isolated, Durable)原

18、則保證一系列的請求或者全部得到處理、或者任何請求都沒有得到處理,即,每一次事務都是一致的。事務特征又可分為平滑事務(Flat Transaction)和嵌套事務(Nested Transaction)兩個子特征,兩者的主要區(qū)別在于后者允許在一個事務中包含其它事務。復制(Replication)是實現(xiàn)分布系統(tǒng)可靠性的主要機制之一,也是用戶可見的特征。其中,主動復制(Active Replication)是指兩個或多個副本同時運行,每個副本都會接收客戶請求、執(zhí)行操作、修改狀態(tài)、并發(fā)送應答。當有副本失效時,其余副本仍繼續(xù)正常工作。被動復制(Passive Replication)是指兩個或多個副本同

19、時運行,但任意時刻有且僅有一個副本接收客戶請求、執(zhí)行操作、修改狀態(tài)、并發(fā)送應答。4 其它特征伸縮性是指系統(tǒng)適應未來增長負載的能力。集中式系統(tǒng)中的系統(tǒng)負載只能在主機允許的范圍內增長,而分布系統(tǒng)增長的負載可以分散到多個主機上。構造可伸縮分布系統(tǒng)的關鍵是在不修改系統(tǒng)體系或構件的設計與代碼的前提下改變構件在多個主機的分布。負責構件分布和交互的中間件需要提供相應的支持。目前伸縮性較優(yōu)的中間件大多基于分組協(xié)調特征來實現(xiàn)。安全性是開發(fā)分布系統(tǒng),尤其是Internet環(huán)境中的軟件系統(tǒng),需要考慮的主要問題之一,也是中間件技術與產品面臨的主要挑戰(zhàn)之一?,F(xiàn)有中間件在安全方面進展不理想,如CORBA龐大的安全規(guī)范實用程度很低,而Web Services的安全也在探索中。目前中間件大多提供簡單的訪問控制,實際應用的安全往往采用中間件以外的其它機制,如在物理網絡層采用路由器認證或虛擬專網,在主機層采用防火墻或操作系統(tǒng)的安全機制,應用層往往利用數(shù)據庫的安全機制。持久性則是中間件對上層應用屏蔽后臺數(shù)據庫管理系統(tǒng)而產生的特征。對于目前主流的分布對象中間件用戶而言,持久信息不再是數(shù)據庫中的存儲的數(shù)據,而是持久對象具有的持久屬性,如J2EE支持的實體EJB。生命周期是指中間件對上層應用構件生命周期的管理,從中間件用戶角度而言,生命周期特征表現(xiàn)為構件實例的生命周期狀態(tài)。不同的中間件支持的構件生命周期狀

溫馨提示

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

評論

0/150

提交評論