




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三章 軟件體系結(jié)構(gòu)風格本章內(nèi)容o3.1 軟件體系結(jié)構(gòu)風格概述o3.2 常用的軟件體系結(jié)構(gòu)風格o3.3 管道/過濾器體系結(jié)構(gòu)風格o3.4 面向?qū)ο篌w系結(jié)構(gòu)風格o3.5 事件驅(qū)動體系結(jié)構(gòu)風格o3.6 分層體系結(jié)構(gòu)風格o3.7 C2體系結(jié)構(gòu)風格o3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格本章內(nèi)容o3.9 解釋器體系結(jié)構(gòu)風格o3.10 反饋控制環(huán)體系結(jié)構(gòu)風格o3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o3.12 瀏覽器/服務(wù)器體系結(jié)構(gòu)風格o3.13 公共對象請求代理體系結(jié)構(gòu)風格o3.14 正交體系結(jié)構(gòu)風格o3.15 基于層次消息總線的體系結(jié)構(gòu)風格o3.16 MVC體系結(jié)構(gòu)風格o3.17 異構(gòu)體系結(jié)構(gòu)集成3.1 軟件體系
2、結(jié)構(gòu)風格概述o軟件體系結(jié)構(gòu)表示系統(tǒng)的框架結(jié)構(gòu),用于從較高的層次上來描述各部分之間的關(guān)系和接口,主要包括:構(gòu)件、構(gòu)件性質(zhì)和構(gòu)件之間的關(guān)系o軟件框架設(shè)計的核心問題是:能否復(fù)用已經(jīng)成型的體系結(jié)構(gòu)方案o不同系統(tǒng)的設(shè)計方案存在著許多共性問題,把這些共性部分抽取出來,就形成了具有代表性的和可廣泛接受的體系結(jié)構(gòu)風格3.1 軟件體系結(jié)構(gòu)風格概述o軟件體系結(jié)構(gòu)風格也稱為軟件體系結(jié)構(gòu)慣用模式,是指不同系統(tǒng)所擁有的共同組織結(jié)構(gòu)和語義特征o軟件體系結(jié)構(gòu)是構(gòu)件和連接件之間相互作用的形式化說明,用以指導(dǎo)將多個模塊組織成一個完整的應(yīng)用程序o軟件體系結(jié)構(gòu)風格定義了用于系統(tǒng)描述的術(shù)語表和一組用于指導(dǎo)系統(tǒng)構(gòu)建的規(guī)則3.1 軟件體
3、系結(jié)構(gòu)風格概述o軟件體系結(jié)構(gòu)風格包括構(gòu)件、連接件和一組將它們結(jié)合在一起的約束限制,諸如:拓撲限制和語義限制等o對于高質(zhì)量的軟件產(chǎn)品而言,首先要為其選擇合適的體系結(jié)構(gòu)風格,這樣就能夠更好地重用已有的設(shè)計方案和實現(xiàn)方案o利用軟件體系結(jié)構(gòu)風格中的不變部分,可以使系統(tǒng)大粒度地重用已有的實現(xiàn)代碼3.2 常用的軟件體系結(jié)構(gòu)風格o數(shù)據(jù)流風格:批處理和管道/過濾器o調(diào)用/返回風格:主程序/子程序、層次結(jié)構(gòu)和客戶機/服務(wù)器o面向?qū)ο箫L格o獨立部件風格:進程通訊和事件驅(qū)動o虛擬機風格:解釋器和基于規(guī)則的系統(tǒng)o數(shù)據(jù)共享風格:數(shù)據(jù)庫系統(tǒng)和黑板系統(tǒng)3.3 管道/過濾器體系結(jié)構(gòu)風格o管道/過濾器結(jié)構(gòu)主要包括過濾器和管道兩
4、種元素o構(gòu)件被稱為過濾器,負責對數(shù)據(jù)進行加工處理o每個過濾器都有一組輸入端口和輸出端口,從輸入端口接收數(shù)據(jù),經(jīng)過內(nèi)部加工處理之后,傳送到輸出端口上o數(shù)據(jù)通過相鄰過濾器之間的連接件進行傳輸,連接件可以看作輸入數(shù)據(jù)流和輸出數(shù)據(jù)流之間的通路,這就是所謂的管道3.3 管道/過濾器體系結(jié)構(gòu)風格o管道/過濾器結(jié)構(gòu)將數(shù)據(jù)流處理分為幾個順序的步驟來進行,一個步驟的輸出是下一個步驟的輸入,每個處理步驟由一個過濾器來實現(xiàn)o每個過濾器獨立完成自己的任務(wù),不同過濾器之間不需要進行交互o在管道/過濾器結(jié)構(gòu)中,數(shù)據(jù)輸出的最終結(jié)果與各個過濾器執(zhí)行的順序無關(guān)3.3 管道/過濾器體系結(jié)構(gòu)風格o每個過濾器都是一個獨立的個體元素,
5、各個過濾器的狀態(tài)互不相關(guān),非鄰近過濾器不共享任何信息o運行結(jié)果的正確性與各個過濾器運行的先后順序無關(guān)3.3 管道/過濾器體系結(jié)構(gòu)風格o管道/過濾器風格具有以下優(yōu)點:n簡單性,允許將系統(tǒng)的輸入和輸出看作是各個過濾器行為的簡單組合,獨立的過濾器能夠減小構(gòu)件之間的耦合程度n系統(tǒng)具有可擴展性和可進化性,各個過濾器是相互獨立的,因此可以很容易地將新過濾器添加到現(xiàn)有的系統(tǒng)之中,以擴展系統(tǒng)的業(yè)務(wù)處理能力,原有過濾器可以很方便地被改進的過濾器所替代3.3 管道/過濾器體系結(jié)構(gòu)風格n支持復(fù)用,如果一個過濾器的輸出數(shù)據(jù)格式與另一個過濾器的輸入數(shù)據(jù)格式是一致的,就可以將這兩個過濾器連接在一起n系統(tǒng)并發(fā)性,各個過濾器
6、能夠獨立運行,因此,不同子任務(wù)可以并行執(zhí)行,提高了系統(tǒng)運行效率n便于系統(tǒng)分析,由于系統(tǒng)是獨立構(gòu)件的組合,具有清晰的拓撲結(jié)構(gòu),因而有利于對數(shù)據(jù)吞吐量、死鎖和計算準確性進行分析3.3 管道/過濾器體系結(jié)構(gòu)風格o管道/過濾器風格也存在著一定的問題:n系統(tǒng)處理過程是批處理方式,過濾器具有很強的獨立性,對于每一個過濾器,設(shè)計者必須考慮從輸入到輸出的轉(zhuǎn)換過程,這種方式會造成過濾器對輸入數(shù)據(jù)的批量轉(zhuǎn)換處理n不適合用來設(shè)計交互式應(yīng)用系統(tǒng)n由于沒有通用的數(shù)據(jù)傳輸標準,因此每個過濾器都需要解析輸入數(shù)據(jù)和合成數(shù)據(jù),添加和去除標記需要花費一定的時間,從而導(dǎo)致了系統(tǒng)性能下降,增加了過濾器設(shè)計的復(fù)雜性3.3 管道/過濾器
7、體系結(jié)構(gòu)風格n難以進行錯誤處理,管道/過濾器結(jié)構(gòu)的固有特性,決定了很難制定錯誤處理的一般性策略o傳統(tǒng)的編譯器是管道/過濾器體系結(jié)構(gòu)風格的一個實例3.4 面向?qū)ο篌w系結(jié)構(gòu)風格o在這種體系結(jié)構(gòu)中,數(shù)據(jù)表示和相關(guān)原語操作都被封裝在抽象數(shù)據(jù)類型中o對象是構(gòu)件,也稱為抽象數(shù)據(jù)類型的實例o對象是一種被稱為管理器的構(gòu)件,負責保持資源的完整性o在對象和對象之間,通過函數(shù)調(diào)用和過程調(diào)用來進行交互3.4 面向?qū)ο篌w系結(jié)構(gòu)風格o面向?qū)ο箫L格具有以下優(yōu)點:n一個對象對外界隱藏了自己的詳細信息,改變一個對象的表示,不會影響系統(tǒng)的其它部分n繼承和封裝方法為對象復(fù)用提供了技術(shù)支持3.4 面向?qū)ο篌w系結(jié)構(gòu)風格n對象將數(shù)據(jù)和操
8、作封裝在一起,提高了系統(tǒng)內(nèi)聚性,減小了模塊之間的耦合程度,使系統(tǒng)更容易分解為既相互作用又相互獨立的對象集合o面向?qū)ο篌w系結(jié)構(gòu)風格也存在著一些問題:n如果一個對象要調(diào)用另一個對象,則必須知道它的標識和名稱n會產(chǎn)生連鎖反應(yīng),如果一個對象的標識發(fā)生改變,那么必須修改所有顯式調(diào)用它的其它對象,并消除由此引發(fā)的副作用3.5 事件驅(qū)動體系結(jié)構(gòu)風格o事件驅(qū)動就是在當前系統(tǒng)的基礎(chǔ)之上,根據(jù)事件聲明和發(fā)展狀況來驅(qū)動整個應(yīng)用程序運行o系統(tǒng)對外部的行為表現(xiàn)可以通過它對事件的處理來實現(xiàn)o構(gòu)件不再直接調(diào)用過程,而是聲明事件o系統(tǒng)其它構(gòu)件的過程可以在這些事件中進行注冊,當觸發(fā)一個事件時,系統(tǒng)會自動調(diào)用在這個事件中注冊的所
9、有過程3.5 事件驅(qū)動體系結(jié)構(gòu)風格o事件驅(qū)動系統(tǒng)的構(gòu)件提供了一個過程集合和一組事件o過程可以使用顯示方法進行調(diào)用,同時,也可以由構(gòu)件在系統(tǒng)事件中注冊o在消息機制的控制下,系統(tǒng)作為一個整體與外界環(huán)境進行交互o事件驅(qū)動體系結(jié)構(gòu)風格具有以下優(yōu)點:3.5 事件驅(qū)動體系結(jié)構(gòu)風格n事件聲明者不需要知道哪些構(gòu)件會響應(yīng)事件,因此,不能確定構(gòu)件處理的先后順序,甚至不能確定事件會引發(fā)哪些過程調(diào)用n提高了軟件復(fù)用能力,只要在系統(tǒng)事件中注冊構(gòu)件的過程,就可以將該構(gòu)件集成到系統(tǒng)中n便于系統(tǒng)升級,只要構(gòu)件名和事件中所注冊的過程名保持不變,原有構(gòu)件就可以被新構(gòu)件所替代o事件驅(qū)動體系結(jié)構(gòu)風格也存在著一些問題:3.5 事件驅(qū)動
10、體系結(jié)構(gòu)風格n構(gòu)件放棄了對計算的控制權(quán),完全由系統(tǒng)來決定,當構(gòu)件觸發(fā)一個事件時,它不知道其余構(gòu)件是如何對其進行處理的n存在數(shù)據(jù)傳輸問題,數(shù)據(jù)可以通過事件來進行傳輸,但是,在大多數(shù)情況下,系統(tǒng)本身需要維護一定的存儲空間,這將對系統(tǒng)的邏輯功能和資源管理有一定影響3.6 分層體系結(jié)構(gòu)風格o在分層風格中,系統(tǒng)將劃分為一個層次結(jié)構(gòu)o每一層都具有高度的內(nèi)聚性,包含抽象程度一致的各種構(gòu)件,支持信息隱藏o分層有助于將復(fù)雜系統(tǒng)劃分為獨立的模塊,從而簡化程序的設(shè)計和實現(xiàn)o通過分解,可以將系統(tǒng)功能劃分為一些具有明確定義的層,較高層是面向特定應(yīng)用問題的,較低層更具有一般性3.6 分層體系結(jié)構(gòu)風格o每層都為上層提供服務(wù)
11、,同時又利用了下層的邏輯功能o每層只對相鄰層可見,層次之間的連接件是協(xié)議和過程調(diào)用,用以實現(xiàn)各層之間的交互o上層通過下層提供的接口來使用下層的功能,而下層卻不能使用上層的功能o良好的層次結(jié)構(gòu)將有助于對邏輯功能實施靈活的增加、刪除和修改3.6 分層體系結(jié)構(gòu)風格o利用接口,可以將下層實現(xiàn)細節(jié)隱藏起來,從而有助于抽象設(shè)計,形成松散耦合的結(jié)構(gòu)模型3.6 分層體系結(jié)構(gòu)風格o分層體系結(jié)構(gòu)風格具有以下優(yōu)點:n設(shè)計者可以將系統(tǒng)分解為一個增量的步驟序列,從而完成復(fù)雜的業(yè)務(wù)邏輯n每一層至多和相鄰的上下兩層進行交互,每一層的功能變化最多只影響相鄰兩層,便于實現(xiàn)系統(tǒng)功能的擴展n只要給相鄰層提供相同的接口,就可以使用不
12、同的方法來實現(xiàn)每一層,支持軟件資源的復(fù)用o分層體系結(jié)構(gòu)風格也存在著一些問題:3.6 分層體系結(jié)構(gòu)風格n并非所有系統(tǒng)都能夠按照層次來進行劃分,即使一個系統(tǒng)的邏輯結(jié)構(gòu)是層次化的,但是出于對系統(tǒng)性能的考慮,需要把不同抽象程度的功能合并到一層,破壞了邏輯獨立性n很難找到一種合適和正確的層次劃分方法,其應(yīng)用范圍受到限制n在傳輸數(shù)據(jù)時,需要經(jīng)過多個層次,導(dǎo)致了系統(tǒng)性能下降n多層結(jié)構(gòu)難以調(diào)試,往往需要通過一系列的跨層次調(diào)用來實現(xiàn)3.6 分層體系結(jié)構(gòu)風格o分層體系結(jié)構(gòu)應(yīng)用實例:n開放系統(tǒng)互聯(lián)國際標準組織(Open Systems Interconnection-International Standards
13、Organization,OSI-ISO)所指定的分層通信協(xié)議、計算機網(wǎng)絡(luò)協(xié)議TCP/IP、操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)n引文管理系統(tǒng)是采用分層體系結(jié)構(gòu)來進行設(shè)計的o主要包括3種類型的構(gòu)件:用戶界面構(gòu)件、引文格式化構(gòu)件以及引文存儲和檢索構(gòu)件3.7 C2體系結(jié)構(gòu)風格oC2結(jié)構(gòu)是一個層次網(wǎng)絡(luò),包括構(gòu)件和連接件兩種軟件元素o構(gòu)件和連接件都是包含頂部和底部的軟件元素o構(gòu)件與構(gòu)件之間只能通過連接件進行連接,連接件之間則可以直接進行連接o構(gòu)件的頂部、底部分別與連接件的底部、頂部相連,連接件的頂部、底部也分別與連接件的底部、頂部相連3.7 C2體系結(jié)構(gòu)風格o構(gòu)件之間的所有通訊必須使用消息傳遞機制來實現(xiàn),構(gòu)件之間所傳
14、遞的消息可以分為兩種:n一種是向上層構(gòu)件發(fā)出服務(wù)請求的請求消息,一種是向下層構(gòu)件發(fā)送指示狀態(tài)變化的通知消息o連接件負責消息的過濾、路由、廣播、通信和相關(guān)處理o構(gòu)件只能使用其上層構(gòu)件所提供的服務(wù),而不能感知下層構(gòu)件的存在3.7 C2體系結(jié)構(gòu)風格o上下層的含義與一般情況相反,最下層構(gòu)件是用戶界面和IO設(shè)備,上層構(gòu)件則是比較低級的邏輯操作3.7 C2體系結(jié)構(gòu)風格oC2體系結(jié)構(gòu)風格具有以下優(yōu)點:n可以使用任何編程語言來開發(fā)構(gòu)件,構(gòu)件重用和替換比較容易實現(xiàn)n具有一定的擴展能力,可以有多種不同粒度的構(gòu)件,構(gòu)件之間相對獨立,且依賴性較小,構(gòu)件可以在分布式和異構(gòu)壞境中運行,利用構(gòu)件來實現(xiàn)應(yīng)用需求,對任意復(fù)雜的
15、邏輯功能進行封裝n構(gòu)件不需要共享地址空間,避免了共享全局變量所造成的復(fù)雜關(guān)系,構(gòu)件可以有自己的控制線程,即構(gòu)件可以是多線程的3.7 C2體系結(jié)構(gòu)風格n具有良好的適應(yīng)性,可以實現(xiàn)多個用戶和多個系統(tǒng)之間的交互,能夠同時激活多個對話并使用不同的形式來進行表示n可以使用多個工具集和多種媒體類型,能夠動態(tài)地更新系統(tǒng)的框架結(jié)構(gòu)o在構(gòu)件和連接件之間,存在著以下關(guān)系:n構(gòu)件頂部與連接件底部相連,構(gòu)件底部與連接件頂部相連,構(gòu)件與構(gòu)件之間不允許直接相連n與某一個連接件相關(guān)聯(lián)的構(gòu)件和連接件的數(shù)目沒有限制3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格o數(shù)據(jù)共享風格也稱為倉庫風格,有兩種不同類型的軟件元素:n一種是中央數(shù)據(jù)單元,也稱為資
16、源庫,用于表示系統(tǒng)的當前狀態(tài),另一種是相互依賴的構(gòu)件組o中央數(shù)據(jù)單元和構(gòu)件之間可以進行信息交換,這是數(shù)據(jù)共享體系結(jié)構(gòu)的技術(shù)實現(xiàn)基礎(chǔ)o根據(jù)所使用的控制策略不同,數(shù)據(jù)共享體系結(jié)構(gòu)可以分為兩種類型:n一種是傳統(tǒng)的數(shù)據(jù)庫,另一種是黑板3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格o如果由輸入流中的事件來驅(qū)動系統(tǒng)進行信息處理,把執(zhí)行結(jié)果存儲到中央數(shù)據(jù)單元中,則這個系統(tǒng)就是數(shù)據(jù)庫應(yīng)用系統(tǒng)o如果由中央數(shù)據(jù)單元的當前狀態(tài)來驅(qū)動系統(tǒng)運行,則這個系統(tǒng)就是黑板應(yīng)用系統(tǒng)o黑板是數(shù)據(jù)共享體系結(jié)構(gòu)的一個特例,用以解決狀態(tài)沖突并處理可能存在的不確定性知識源3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格o黑板經(jīng)常被用于信號處理,例如:語音和模式識別,同時,在自
17、然語言處理領(lǐng)域中也有廣泛的應(yīng)用,諸如:機器翻譯和句法分析3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格o黑板系統(tǒng)主要包括3部分:n知識源是主要的信息來源,知識源在邏輯上和物理上都是獨立的,知識源只與產(chǎn)生它們的應(yīng)用有關(guān),通過中央數(shù)據(jù)單元,多個知識源相互配合,完成相關(guān)業(yè)務(wù)邏輯,這一過程對外部環(huán)境是透明的n中央數(shù)據(jù)單元,黑板系統(tǒng)的運行完全依賴于中央數(shù)據(jù)單元的狀態(tài)變化,中央數(shù)據(jù)單元是整個系統(tǒng)的核心部分,反映了業(yè)務(wù)邏輯的求解狀態(tài),在多個知識源之間,中央數(shù)據(jù)單元起到了通信機制的作用3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格n控制單元是由中央數(shù)據(jù)單元的狀態(tài)來驅(qū)動的,知識源的執(zhí)行導(dǎo)致了中央數(shù)據(jù)單元的狀態(tài)發(fā)生變化,控制單元根據(jù)預(yù)先定義的策略,
18、啟動相應(yīng)的知識源,以完成系統(tǒng)的控制任務(wù)o黑板體系結(jié)構(gòu)有以下優(yōu)點:n便于多客戶共享大量數(shù)據(jù),而不必關(guān)心數(shù)據(jù)是何時產(chǎn)生的、由誰提供的以及通過何種途徑來提供n便于將構(gòu)件作為知識源添加到系統(tǒng)中來3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格o黑板體系結(jié)構(gòu)風格也存在著一些問題:n對共享數(shù)據(jù)結(jié)構(gòu),不同知識源要達成一致,因為要考慮各個知識源的調(diào)用問題,這會使得共享數(shù)據(jù)結(jié)構(gòu)的修改變得非常困難n需要同步機制和加鎖機制來保證數(shù)據(jù)的完整性和一致性,增大了系統(tǒng)設(shè)計的復(fù)雜度3.9 解釋器體系結(jié)構(gòu)風格o解釋器作為一種體系結(jié)構(gòu),主要用于構(gòu)建虛擬機,以彌合程序語義和計算機硬件之間的間隙o解釋器是利用軟件來創(chuàng)建的一種虛擬機,因此,解釋器風格又被
19、稱為虛擬機風格o程序的邏輯功能很復(fù)雜,用戶需要采用復(fù)雜的方式來進行操作,一個較好的解決方案是提供面向領(lǐng)域的虛擬機語言3.9 解釋器體系結(jié)構(gòu)風格o解釋器體系結(jié)構(gòu)具有以下優(yōu)點:n能夠提高應(yīng)用程序的移植能力和編程語言的跨平臺移植能力n實際測試工作可能非常復(fù)雜,測試代價極其昂貴,具有一定的風險性,可以利用解釋器對未實現(xiàn)的硬件進行仿真o解釋器體系結(jié)構(gòu)風格也存在著一些問題:n由于使用了特定語言和自定義操作規(guī)則,因此增加了系統(tǒng)運行的開銷n解釋器系統(tǒng)難以設(shè)計和測試3.9 解釋器體系結(jié)構(gòu)風格o解釋器體系結(jié)構(gòu)有許多現(xiàn)實應(yīng)用,可以將其作為整個軟件系統(tǒng)的一個組成部分,以下是一些具體的應(yīng)用實例:nJava和Smallt
20、alk的編譯器n基于規(guī)則的系統(tǒng),諸如:專家系統(tǒng)領(lǐng)域中的Prolog語言n腳本語言,例如:Awk和Perl3.10 反饋控制環(huán)體系結(jié)構(gòu)風格o反饋控制環(huán)是一種特定的數(shù)據(jù)流結(jié)構(gòu),傳統(tǒng)數(shù)據(jù)流結(jié)構(gòu)是線性的,控制連續(xù)循環(huán)過程的體系結(jié)構(gòu)應(yīng)該是環(huán)形的o在反饋控制環(huán)系統(tǒng)中,主要包括以下3個部分:n過程,指操縱過程變量的相關(guān)機制n數(shù)據(jù)元素,指連續(xù)更新的過程變量,包括:輸入變量、控制變量、操縱變量和相關(guān)參考值3.10 反饋控制環(huán)體系結(jié)構(gòu)風格n控制器,通過控制規(guī)則來修正變量,收集過程的實際狀態(tài)和目標狀態(tài),調(diào)節(jié)變量以驅(qū)動實際狀態(tài)朝目標狀態(tài)前進o反饋控制環(huán)結(jié)構(gòu)能夠處理復(fù)雜的自適應(yīng)問題,機器學(xué)習就是一個典型的實例3.10
21、反饋控制環(huán)體系結(jié)構(gòu)風格o將訓(xùn)練樣本輸入到學(xué)習構(gòu)件中,作為被查詢的基本數(shù)據(jù)和知識源o然后輸入真實數(shù)據(jù),經(jīng)過學(xué)習構(gòu)件的分析和計算,輸出學(xué)習結(jié)果o檢測構(gòu)件要檢查學(xué)習結(jié)果與預(yù)期結(jié)果之間的差異,并反饋給學(xué)習構(gòu)件3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o在集中計算時代,主要采用大型機/小型機模型,在這種模型中,通過與宿主機相連的非智能終端來實現(xiàn)宿主機程序的邏輯功能o個人計算機和工作站的采用,改變了這種協(xié)作計算模式,導(dǎo)致了分散計算模型的出現(xiàn)o分散計算模型的主要優(yōu)點是:用戶可以選擇適合自己的工作站、操作系統(tǒng)和應(yīng)用程序,在這一時期,集中計算模式逐漸被以PC機為主的網(wǎng)絡(luò)計算模式所取代3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風
22、格o客戶機/服務(wù)器(Client/Server,C/S)是20世紀90年代開始成熟的一項技術(shù),主要針對資源不對等問題而提出的一種共享策略o客戶機/服務(wù)器是兩個相互獨立的邏輯系統(tǒng),為了完成特定任務(wù),它們形成了一種協(xié)作關(guān)系o在C/S體系結(jié)構(gòu)中,主要包括三個部分:服務(wù)器、客戶機和網(wǎng)絡(luò)3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o客戶機向服務(wù)器發(fā)送操作請求,期待服務(wù)器的響應(yīng)o二者之間具有一定的連接機制,遵循公共的通信協(xié)議,都需要處理請求表達、返回結(jié)果表示、連接關(guān)系和狀態(tài)表達等一系列問題3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o數(shù)據(jù)和業(yè)務(wù)處理分布在一定范圍內(nèi)的多個構(gòu)件上,包括客戶機程序中的構(gòu)件和服務(wù)器程序中的構(gòu)件,
23、構(gòu)件與構(gòu)件之間是通過網(wǎng)絡(luò)進行連接的o定義了工作站與服務(wù)器的連接方法,從而使數(shù)據(jù)存儲和邏輯計算可以分布到物理上的多個處理器上o服務(wù)器負責存儲和管理數(shù)據(jù)信息,客戶機負責數(shù)據(jù)顯示、用戶交互以及對業(yè)務(wù)邏輯的處理3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格oC/S系統(tǒng)可以分為前臺客戶機程序和后臺服務(wù)器程序兩部分o服務(wù)器程序負責管理客戶機程序的數(shù)據(jù),而客戶機程序負責完成與用戶之間的交互,發(fā)送請求消息,接收和分析從服務(wù)器返回的數(shù)據(jù)o客戶機程序是表示層,包括用戶界面和業(yè)務(wù)處理程序o服務(wù)器程序是數(shù)據(jù)層,包括中心數(shù)據(jù)庫、數(shù)據(jù)查詢程序、數(shù)據(jù)存儲程序和數(shù)據(jù)更新程序3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格3.11 客戶機/服務(wù)器體
24、系結(jié)構(gòu)風格o服務(wù)器程序負責管理系統(tǒng)資源,包括:管理數(shù)據(jù)庫的安全性、控制數(shù)據(jù)庫訪問的并發(fā)性、定義全局數(shù)據(jù)完整性規(guī)則以及備份恢復(fù)數(shù)據(jù)庫o服務(wù)器永遠處于激活狀態(tài),監(jiān)聽用戶請求,為客戶提供服務(wù)操作o客戶機程序的主要任務(wù)包括:提供用戶與數(shù)據(jù)庫交互的界面、向服務(wù)器提交用戶請求、接收來自服務(wù)器的信息以及對客戶機數(shù)據(jù)執(zhí)行業(yè)務(wù)邏輯操作3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o網(wǎng)絡(luò)通信軟件的主要功能是完成服務(wù)器程序和客戶機程序之間的數(shù)據(jù)傳輸o在代理風格中,服務(wù)器將其服務(wù)和數(shù)據(jù)發(fā)布到代理服務(wù)器上,客戶機通過代理服務(wù)器來訪問服務(wù),提高了系統(tǒng)的安全性3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格oC/S體系結(jié)構(gòu)具有以下優(yōu)點:n客戶機
25、構(gòu)件和服務(wù)器構(gòu)件分別運行在不同的計算機上,有利于分布式數(shù)據(jù)的組織和處理n構(gòu)件之間的位置是相互透明的,客戶機程序和服務(wù)器程序都不必考慮對方的實際存儲位置n客戶機側(cè)重數(shù)據(jù)的顯示和分析,服務(wù)器則注重數(shù)據(jù)的管理,因此,客戶機程序和服務(wù)器程序可以運行在不同的操作系統(tǒng)上,便于實現(xiàn)異構(gòu)環(huán)境和多種不同開發(fā)技術(shù)的融合3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格n構(gòu)件之間是彼此獨立和充分隔離的,這使得軟件環(huán)境和硬件環(huán)境的配置具有極大的靈活性,易于系統(tǒng)功能的擴展n將大規(guī)模的業(yè)務(wù)邏輯分布到多個通過網(wǎng)絡(luò)連接的低成本的計算機上,降低了系統(tǒng)的整體開銷oC/S體系結(jié)構(gòu)也逐漸暴露出一些問題:n開發(fā)成本較高,客戶機的軟件配置和硬件配置的
26、要求比較高,隨著軟件版本的升級,對硬件性能的要求也越來越高,從而增加了系統(tǒng)成本,使客戶機變得臃腫3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格n在開發(fā)C/S結(jié)構(gòu)系統(tǒng)時,大部分工作都集中在客戶機程序的設(shè)計上,增加了設(shè)計的復(fù)雜度,客戶機負荷太重,難以應(yīng)對客戶端的大量業(yè)務(wù)處理,降低了系統(tǒng)性能n信息內(nèi)容和形式單一,傳統(tǒng)應(yīng)用一般都是事務(wù)處理型,界面基本上遵循數(shù)據(jù)庫的字段解釋,在開發(fā)之初就已經(jīng)確定,用戶無法及時獲取辦公信息和文檔信息,只能獲得單純的字符和數(shù)字,非??菰锖退腊?.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格n如果對C/S體系結(jié)構(gòu)的系統(tǒng)進行升級,開發(fā)人員需要到現(xiàn)場來更新客戶機程序,同時需要對運行環(huán)境進行重新配置,增
27、加了維護費用n兩層C/S結(jié)構(gòu)采用了單一的服務(wù)器,同時以局域網(wǎng)為中心,因此難以擴展到Intranet和Internetn數(shù)據(jù)安全性不高,客戶機程序可以直接訪問數(shù)據(jù)庫服務(wù)器,因此,客戶機上的其它惡意性程序也有可能訪問到數(shù)據(jù)庫,無法保證中心數(shù)據(jù)庫的安全3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o為了克服兩層C/S結(jié)構(gòu)的缺點,可以將客戶機和服務(wù)器中的部分業(yè)務(wù)邏輯抽取出來,形成功能層,放在應(yīng)用服務(wù)器上,這就是所謂的三層C/S體系結(jié)構(gòu)o三層C/S結(jié)構(gòu)包括:客戶機、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器三個部分3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o在三層C/S結(jié)構(gòu)中,針對一類應(yīng)用問題建立了中
28、間層,即功能層,配置在應(yīng)用服務(wù)器上o應(yīng)用服務(wù)器負責處理客戶機與數(shù)據(jù)庫服務(wù)器之間的交互,而不是直接讓客戶機與中心數(shù)據(jù)庫相連,因此減少了同數(shù)據(jù)庫服務(wù)器相連的客戶機的數(shù)目,提高了系統(tǒng)安全性o由于將數(shù)據(jù)存取構(gòu)件放在應(yīng)用服務(wù)器上,客戶機只存放系統(tǒng)的表示層,因此,客戶機程序不必關(guān)心數(shù)據(jù)的操作細節(jié),便于實現(xiàn)軟件的安裝與維護3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o在三層C/S體系結(jié)構(gòu)中,通過增加應(yīng)用服務(wù)器,在不增加數(shù)據(jù)庫服務(wù)器負擔的情況下,使客戶機變“瘦”,這種風格又被稱為“瘦客戶機”C/S結(jié)構(gòu)o在三層C/S結(jié)構(gòu)中,減小了數(shù)據(jù)庫服務(wù)器的工作量,應(yīng)用服務(wù)器可以建立數(shù)據(jù)備份,因此,提高了系統(tǒng)的可靠性o在三層C/S結(jié)
29、構(gòu)的軟件系統(tǒng)中,可以將業(yè)務(wù)邏輯劃分為表示層、功能層和數(shù)據(jù)層3個部分3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o表示層,是系統(tǒng)和用戶之間的接口,實現(xiàn)用戶與系統(tǒng)之間的對話功能,用于檢查從鍵盤和鼠標等設(shè)備輸入的數(shù)據(jù),顯示輸出結(jié)果o功能層,負責處理所有的業(yè)務(wù)邏輯o數(shù)據(jù)層就是數(shù)據(jù)庫管理系統(tǒng),負責讀寫數(shù)據(jù),數(shù)據(jù)庫管理系統(tǒng)必須能夠迅速地執(zhí)行大量數(shù)據(jù)的更新和檢索操作o在開發(fā)三層C/S結(jié)構(gòu)的應(yīng)用系統(tǒng)時,需要對這三層的功能進行明確地劃分,使之在邏輯上相互獨立3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o設(shè)計過程中的難點是:如何從兩層C/S結(jié)構(gòu)的表示層和數(shù)據(jù)層中分離各自的應(yīng)用程序,同時使層次之
30、間的接口簡單明了o在實現(xiàn)三層C/S體系結(jié)構(gòu)時,通??梢圆捎弥虚g件技術(shù)o中間件是一個用API定義的軟件層,是一種具有強大通信能力和良好擴展能力的分布式軟件管理框架3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o在客戶機和服務(wù)器以及服務(wù)器和服務(wù)器之間,使用中間件來傳送數(shù)據(jù),完成客戶機群和服務(wù)器群之間的通信任務(wù)o在配置三層C/S結(jié)構(gòu)的系統(tǒng)時,通常有多種不同的選擇方案n將表示層放在客戶機上,功能層和數(shù)據(jù)層都放在同一個服務(wù)器上,與兩層C/S結(jié)構(gòu)相比,雖然提高了程序的可維護性,但兩層C/S結(jié)構(gòu)的缺陷并未得到完全解決3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格n由于三層分別放在不同的計算結(jié)點上,因此提高了系統(tǒng)的靈活性,能夠適
31、應(yīng)客戶機數(shù)目和處理負荷的變動,但是,在這種情況下,服務(wù)器之間要進行數(shù)據(jù)傳送,增加了系統(tǒng)開銷3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格n如果將表示層和功能層都放在客戶機上,其配置方案如下所示,在這種情況下,客戶機的工作負擔很重,類似于兩層C/S結(jié)構(gòu)3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格n如果將表示層和功能層都放在客戶機上,其配置方案如下所示,在這種情況下,客戶機的工作負擔很重,類似于兩層C/S結(jié)構(gòu)3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o與兩層C/S結(jié)構(gòu)相比,三層C/S體系結(jié)構(gòu)具有以下優(yōu)點:n如果合理地劃分三層結(jié)構(gòu)的功能,可以使系統(tǒng)的邏輯結(jié)構(gòu)更加清晰,提高了軟件的可維護性和可擴充性n在實現(xiàn)三層C/S結(jié)構(gòu)時,
32、可以更有效地選擇運行平臺和硬件環(huán)境,從而使每一層都具有清晰的邏輯結(jié)構(gòu)、良好的負荷處理能力和較好的開放性,清晰和合理地劃分三層C/S結(jié)構(gòu),使各層之間保持相互獨立,可以降低每一層應(yīng)用的修改難度3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格n在三層C/S結(jié)構(gòu)中,可以分別選擇合適的編程語言來并行地開發(fā)每一層的邏輯功能,以提高開發(fā)效率,同時,每一層的維護也更加容易n系統(tǒng)具有較高的安全性,可以充分利用功能層來將數(shù)據(jù)層和表示層分隔開來,使未授權(quán)用戶難以繞過功能層,無法利用數(shù)據(jù)庫工具和黑客手段來非法訪問數(shù)據(jù)層,從而保證了中心數(shù)據(jù)庫的安全性,整個系統(tǒng)也更加便于控制,管理層次也更加合理3.11 客戶機/服務(wù)器體系結(jié)構(gòu)風格o
33、在實現(xiàn)三層C/S結(jié)構(gòu)時,需要注意以下幾個問題:n如果各層之間的通信效率不高,即使每一層的硬件配置都很高,系統(tǒng)的整體性能也不會太高n必須慎重考慮三層之間的通信方法、通信頻率和傳輸數(shù)據(jù)量,這和提高各層的獨立性一樣也是實現(xiàn)三層C/S結(jié)構(gòu)的關(guān)鍵性問題3.12 瀏覽器/服務(wù)器體系結(jié)構(gòu)風格o瀏覽器/服務(wù)器(Browser/Server,B/S),是三層C/S體系結(jié)構(gòu)的一種實現(xiàn)方式,主要包括:瀏覽器、Web服務(wù)器和數(shù)據(jù)庫服務(wù)器oB/S結(jié)構(gòu)主要利用了不斷成熟的WWW技術(shù),結(jié)合瀏覽器的多腳本語言,采用通用瀏覽器來實現(xiàn)原來需要復(fù)雜的專用軟件才能實現(xiàn)的強大功能,節(jié)約了開發(fā)成本o與三層C/S結(jié)構(gòu)的解決方案相比,B/S
34、體系結(jié)構(gòu)在客戶機上采用了WWW瀏覽器,將Web服務(wù)器作為應(yīng)用服務(wù)器3.12 瀏覽器/服務(wù)器體系結(jié)構(gòu)風格oB/S體系結(jié)構(gòu)的核心是Web服務(wù)器,可以將應(yīng)用程序以網(wǎng)頁的形式存放在Web服務(wù)器上3.12 瀏覽器/服務(wù)器體系結(jié)構(gòu)風格o當用戶運行某個應(yīng)用程序時,只需要在客戶端的瀏覽器中鍵入相應(yīng)的URL,向Web服務(wù)器提出HTTP請求o當Web服務(wù)器接收HTTP請求之后,會調(diào)用相關(guān)的應(yīng)用程序,同時向數(shù)據(jù)庫服務(wù)器發(fā)送數(shù)據(jù)操作請求o數(shù)據(jù)庫服務(wù)器對數(shù)據(jù)操作請求進行響應(yīng),將結(jié)果返回給Web服務(wù)器的應(yīng)用程序3.12 瀏覽器/服務(wù)器體系結(jié)構(gòu)風格oWeb服務(wù)器應(yīng)用程序執(zhí)行業(yè)務(wù)處理邏輯,利用HTML來封裝操作結(jié)果,通過瀏覽
35、器呈現(xiàn)給用戶o在B/S結(jié)構(gòu)中,數(shù)據(jù)請求、網(wǎng)頁生成、數(shù)據(jù)庫訪問和應(yīng)用程序執(zhí)行全部由Web服務(wù)器來完成o在B/S結(jié)構(gòu)中,系統(tǒng)的安裝、修改和維護都在Web服務(wù)器和數(shù)據(jù)庫服務(wù)器上進行3.12 瀏覽器/服務(wù)器體系結(jié)構(gòu)風格o在使用系統(tǒng)時,用戶僅使用一個瀏覽器就可以運行全部的應(yīng)用程序,真正實現(xiàn)了“零客戶端”的運作模式o在系統(tǒng)運行期間,可以對瀏覽器進行自動升級,B/S結(jié)構(gòu)為異構(gòu)機、異構(gòu)網(wǎng)和異構(gòu)應(yīng)用服務(wù)的集成提供了有效的框架基礎(chǔ)oB/S體系結(jié)構(gòu)具有以下優(yōu)點:n客戶端只需要安裝瀏覽器,操作簡單,能夠發(fā)布動態(tài)信息和靜態(tài)信息3.12 瀏覽器/服務(wù)器體系結(jié)構(gòu)風格n運用HTTP標準協(xié)議和統(tǒng)一客戶端軟件,能夠?qū)崿F(xiàn)跨平臺通信
36、n開發(fā)成本比較低,只需要維護Web服務(wù)器程序和中心數(shù)據(jù)庫,客戶端升級可以通過升級瀏覽器來實現(xiàn),使所有用戶同步更新oB/S體系結(jié)構(gòu)風格也存在著一些問題:n個性化程度比較低,所有客戶端程序的功能都是一樣的3.12 瀏覽器/服務(wù)器體系結(jié)構(gòu)風格n客戶端數(shù)據(jù)處理能力比較差,加重了Web服務(wù)器的工作負擔,影響系統(tǒng)的整體性能n在B/S結(jié)構(gòu)的系統(tǒng)中,數(shù)據(jù)提交一般以頁面為單位,動態(tài)交互性不強,不利于在線事務(wù)處理(Online Transaction Processing,OLTP)nB/S體系結(jié)構(gòu)的可擴展性比較差,系統(tǒng)安全性難以保障nB/S結(jié)構(gòu)的應(yīng)用系統(tǒng)查詢中心數(shù)據(jù)庫,其速度要遠低于C/S體系結(jié)構(gòu)3.13 公共
37、對象請求代理體系結(jié)構(gòu)風格o在異構(gòu)分布式環(huán)境下,可以利用CORBA來實現(xiàn)應(yīng)用程序之間的交互操作oCORBA規(guī)范主要包括:n對象請求代理ORB、對象適配器(Object Adapter,OA)、接口定義語言IDL、接口存儲(Interface Repository,IR)和ORB內(nèi)部的相關(guān)協(xié)議oCORBA體系結(jié)構(gòu)的核心是ORB,ORB作為“軟件總線”用來連接網(wǎng)絡(luò)上的不同應(yīng)用對象3.13 公共對象請求代理體系結(jié)構(gòu)風格oORB的任務(wù)是定位服務(wù)器,通過對象適配器OA將操作請求傳送給相應(yīng)的服務(wù)器oOA位于ORB和對象之間,屏蔽了ORB內(nèi)部的實現(xiàn)細節(jié),為服務(wù)器對象提供了抽象接口n其功能包括:登錄服務(wù)器、注冊
38、對象、創(chuàng)建對象、激活對象、分發(fā)客戶請求和認證客戶請求oCORBA提供了透明訪問對象的相關(guān)方法,能夠屏蔽實現(xiàn)方式、對象狀態(tài)、通信機制和開發(fā)技術(shù)之間的差異3.13 公共對象請求代理體系結(jié)構(gòu)風格3.13 公共對象請求代理體系結(jié)構(gòu)風格o在客戶端,ORB定義了一個動態(tài)調(diào)用接口(Dynamic Invocation Interface,DII),以API的形式出現(xiàn),用來發(fā)送操作請求,提供了動態(tài)調(diào)用方法o在服務(wù)器端,OA利用動態(tài)框架接口(Dynamic Skeleton Interface,DSI)來傳輸操作請求,提供了動態(tài)實現(xiàn)方法o接口定義語言(Interface Definition Language,
39、IDL)用來定義客戶端和服務(wù)器之間的靜態(tài)接口3.13 公共對象請求代理體系結(jié)構(gòu)風格oIDL不是編程語言,它是CORBA規(guī)范的一種中性定義語言,用于描述對象接口o客戶端與ORB之間的靜態(tài)接口,被稱為靜態(tài)調(diào)用接口(Static Invocation Interface,SII)o服務(wù)器與ORB之間的靜態(tài)接口,被稱為靜態(tài)框架接口(Static Skeleton Interface,SSI)3.13 公共對象請求代理體系結(jié)構(gòu)風格oCORBA規(guī)范包含了ORB的內(nèi)部協(xié)議,即Internet ORB內(nèi)部協(xié)議(Internet Inter-ORB Protocol,IIOP),用以描述IDL類型的在線表示方法
40、和協(xié)議數(shù)據(jù)單元oIIOP使用TCP/IP來傳輸ORB之間的操作請求和相關(guān)參數(shù)3.13 公共對象請求代理體系結(jié)構(gòu)風格oIR包含了運行時所需要的IDL規(guī)范,定義了基本類型映射機制oIMR存儲服務(wù)器的詳細信息oCORBA體系結(jié)構(gòu)風格具有以下優(yōu)點:n實現(xiàn)了客戶端程序與服務(wù)器程序的分離,客戶不再直接與服務(wù)器發(fā)生聯(lián)系,而僅需要和ORB進行通信,客戶端和服務(wù)器之間的關(guān)系更加靈活n將分布式計算模式與面向?qū)ο蠹夹g(shù)結(jié)合起來,提高了軟件復(fù)用效率3.13 公共對象請求代理體系結(jié)構(gòu)風格n提供了軟件總線機制,軟件總線是指一組定義完整的接口規(guī)范,應(yīng)用程序、軟件構(gòu)件和相關(guān)工具只要具有與接口規(guī)范相符的接口定義,就能集成到應(yīng)用系
41、統(tǒng)中,這個接口規(guī)范是獨立于編程語言和開發(fā)環(huán)境的nCORBA能夠支持不同的編程語言和操作系統(tǒng),在更大的范圍內(nèi),開發(fā)人員能夠相互利用已有的開發(fā)成果3.14 正交體系結(jié)構(gòu)風格o正交體系結(jié)構(gòu)是一種以垂直線索構(gòu)件族為基礎(chǔ)的層次化結(jié)構(gòu),包括組織層和線索o在每一個組織層中,都包含具有相同抽象級別的構(gòu)件o線索是子系統(tǒng)的實例,是由完成不同層次功能的構(gòu)件通過相互調(diào)用而形成的,每一條線索完成系統(tǒng)的一部分相對獨立的功能o在正交體系結(jié)構(gòu)中,每條線索的實現(xiàn)與其它線索的實現(xiàn)無關(guān)或關(guān)聯(lián)很少,在同一層次中,構(gòu)件之間不存在相互調(diào)用關(guān)系3.14 正交體系結(jié)構(gòu)風格o正交體系結(jié)構(gòu)的基本思想是:n按照功能的正交相關(guān)性,將系統(tǒng)垂直地劃分為
42、若干個子系統(tǒng),每個子系統(tǒng)用一條線索來實現(xiàn)n每條線索由多個具有不同層次功能和抽象級別的構(gòu)件組成o如果線索之間是相互獨立的,即不同線索中的構(gòu)件不存在調(diào)用關(guān)系,那么這種結(jié)構(gòu)就是完全正交體系結(jié)構(gòu)o在同一層次上,各個線索的構(gòu)件具有相同的抽象級別3.14 正交體系結(jié)構(gòu)風格o在正交體系結(jié)構(gòu)中,有一個公共的頂層,用于觸發(fā)各條線索運行,還有一個公共的底層,包含了各條線索需要的數(shù)據(jù)3.14 正交體系結(jié)構(gòu)風格o正交體系結(jié)構(gòu)具有以下特征:n正交體系結(jié)構(gòu)由完成不同功能的n(n1)個線索(子系統(tǒng))組成n線索之間是相互獨立的,系統(tǒng)的某一變動僅涉及一條線索,而不會影響到其它線索n系統(tǒng)具有m(m1)個不同抽象級別的層次n具有一
43、個驅(qū)動線索運行的公共頂層和一個存儲共享數(shù)據(jù)的公共底層o正交體系結(jié)構(gòu)具有以下優(yōu)點:3.14 正交體系結(jié)構(gòu)風格n結(jié)構(gòu)清晰,線索與線索之間是獨立的,不進行相互調(diào)用,構(gòu)件的位置可以清楚地說明它所實現(xiàn)的抽象層次和擔負的功能n便于修改和維護,因為線索之間是相互獨立的,因此,某一條線索的修改不會影響到其它線索,當需求發(fā)生變動時,可以將新需求分解為獨立的子需求,然后使用線索和構(gòu)件來實現(xiàn)每一個子需求n易于重用,在同一應(yīng)用領(lǐng)域中,不同軟件系統(tǒng)往往具有相同的層次和線索,因此,可以共享同一個框架結(jié)構(gòu)3.15 基于層次消息總線的體系結(jié)構(gòu)風格o層次消息總線的理論基礎(chǔ)是消息驅(qū)動的編程方法和計算機硬件總線概念o計算機硬件總線
44、的概念為層次消息總線體系結(jié)構(gòu)的設(shè)計提供了很好的借鑒和啟示o構(gòu)件之間是通過消息總線來進行通信的,可以支持構(gòu)件的分布式存儲和并發(fā)運行o消息總線是系統(tǒng)的連接件,負責消息的分派、傳遞和過濾,并返回處理結(jié)果3.15 基于層次消息總線的體系結(jié)構(gòu)風格o構(gòu)件掛接在消息總線上,向總線登記自己所感興趣的消息類型o在構(gòu)件之間,消息是唯一的通信方式n構(gòu)件發(fā)出請求消息,然后總線把請求消息分派到系統(tǒng)中所有對此感興趣的構(gòu)件n在接收到請求消息后,構(gòu)件將根據(jù)自身狀態(tài)對其進行響應(yīng),并通過總線返回處理結(jié)果o由于構(gòu)件是通過消息總線進行連接的,不要求各個構(gòu)件具有相同的地址空間3.15 基于層次消息總線的體系結(jié)構(gòu)風格o復(fù)雜構(gòu)件分解為粒度
45、更細的子構(gòu)件,通過局部消息總線進行連接,從而形成復(fù)合構(gòu)件o如果子構(gòu)件仍然比較復(fù)雜,則可以進一步分解,如此分解下去,系統(tǒng)將形成樹狀的拓撲結(jié)構(gòu)o葉結(jié)點是系統(tǒng)的原子構(gòu)件,不再包含子構(gòu)件o原子構(gòu)件的設(shè)計可以采用不同的軟件體系結(jié)構(gòu)風格3.15 基于層次消息總線的體系結(jié)構(gòu)風格o整個系統(tǒng)可以作為一個構(gòu)件,通過更高層次的消息總線集成到更大的應(yīng)用系統(tǒng)中o在HMB體系結(jié)構(gòu)中,主要包括構(gòu)件和消息總線兩種軟件元素3.15 基于層次消息總線的體系結(jié)構(gòu)風格nHMB構(gòu)件主要包括接口部分、行為部分和結(jié)構(gòu)部分:o在接口部分,定義了構(gòu)件與外界之間交互的信息和承擔的責任,HMB構(gòu)件的接口是一種基于消息的互連接口3.15 基于層次消
46、息總線的體系結(jié)構(gòu)風格o在行為部分,使用有限狀態(tài)自動機來描述構(gòu)件的功能,構(gòu)件行為要同時受到外來消息和自身狀態(tài)的影響o結(jié)構(gòu)部分描述了復(fù)合構(gòu)件的拓撲結(jié)構(gòu),復(fù)合構(gòu)件由簡單的子構(gòu)件組合而成,子構(gòu)件通過復(fù)合構(gòu)件內(nèi)部的消息總線進行連接3.15 基于層次消息總線的體系結(jié)構(gòu)風格n消息總線:o在HMB體系結(jié)構(gòu)中,消息總線是連接件o構(gòu)件向消息總線登記自己感興趣的消息,形成構(gòu)件消息響應(yīng)登記表o消息總線根據(jù)接收到的消息,查閱構(gòu)件消息響應(yīng)登記表,確定能夠響應(yīng)該消息的構(gòu)件,并將消息傳遞給該構(gòu)件,同時,負責返回處理結(jié)果o從邏輯上看,消息總線是一個整體,但是,從物理上講,它可以跨越多個不同的機器o掛接在消息總線上的構(gòu)件可以分布在多個不同的機器上,并行運行3.15 基于層次消息總線的體系結(jié)構(gòu)風格n消息登記:在基于消息的系統(tǒng)中,構(gòu)件需要向消息總線登記自己所感興趣的消息,不關(guān)心該消息是由哪個構(gòu)件發(fā)出的3.15 基于層次消息總線的體系結(jié)構(gòu)風格n消息分派和傳遞:消息總線負責在構(gòu)件之間傳遞消息,根據(jù)構(gòu)件消息響應(yīng)登記表把消息分派給對其感興趣的構(gòu)件,并返回處理結(jié)果n消息過濾:在不同的構(gòu)件中,同一消息可能使用了不同的名字,不同的消息也可能使用了相同的名字,在構(gòu)件集成時,需要對消息進行過濾nHMB體系結(jié)構(gòu)風格支持運行時系統(tǒng)演化:3.15 基于層次消息總線
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB23-T2903-2021-鱗片石墨企業(yè)化驗室記錄及報告編制規(guī)程-黑龍江省
- DB23-T2843-2021-政務(wù)信息資源體系總體架構(gòu)-黑龍江省
- DB23-T2829-2021-電子政務(wù)外網(wǎng)安全管理規(guī)范第一部分:網(wǎng)絡(luò)安全總體要求-黑龍江省
- 單位物業(yè)合同管理制度
- 醫(yī)院甲方工程管理制度
- 國企人才流程管理制度
- 華為銷售人員管理制度
- 服務(wù)技能比賽方案(3篇)
- 學(xué)校繪畫社團管理制度
- 農(nóng)資市場運營管理制度
- 《車間安全操作規(guī)程》課件
- 2025年中考語文作文自我認知主題作文高分模板(分步詳解+例文示范)
- 2025年山東濟南先行投資集團有限責任公司招聘筆試參考題庫含答案解析
- 第2章文生圖ai課件
- 委托清算協(xié)議書范本
- 車間安全手機管理制度
- 2025中考九年級物理復(fù)習《功和機械能》練習題(含詳解)
- AUC優(yōu)化目標下的高效對抗訓(xùn)練策略研究
- 高中數(shù)學(xué)公式總結(jié)學(xué)業(yè)水平
- (二模)東北三省三校2025年高三第二次聯(lián)合模擬考試 英語試卷(含答案解析)
- 乙烯的密碼課件高二下學(xué)期化學(xué)人教版選擇性必修3
評論
0/150
提交評論