第三章_軟件體系結(jié)構(gòu)風格_第1頁
第三章_軟件體系結(jié)構(gòu)風格_第2頁
第三章_軟件體系結(jié)構(gòu)風格_第3頁
第三章_軟件體系結(jié)構(gòu)風格_第4頁
第三章_軟件體系結(jié)構(gòu)風格_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章 軟件體系結(jié)構(gòu)風格本章內(nèi)容o 3.1 軟件體系結(jié)構(gòu)風格概述o 3.2 常用的軟件體系結(jié)構(gòu)風格o 3.3 管道/過濾器體系結(jié)構(gòu)風格o 3.4 面向?qū)ο篌w系結(jié)構(gòu)風格o 3.5 事件驅(qū)動體系結(jié)構(gòu)風格o 3.6 分層體系結(jié)構(gòu)風格o 3.7 C2體系結(jié)構(gòu)風格o 3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格本章內(nèi)容o 3.9 解釋器體系結(jié)構(gòu)風格o 3.10 反饋控制環(huán)體系結(jié)構(gòu)風格o 3.11 客戶機/服務器體系結(jié)構(gòu)風格o 3.12 瀏覽器/服務器體系結(jié)構(gòu)風格o 3.13 公共對象請求代理體系結(jié)構(gòu)風格o 3.14 正交體系結(jié)構(gòu)風格o 3.15 基于層次消息總線的體系結(jié)構(gòu)風格o 3.16 MVC體系結(jié)構(gòu)風格o 3.17

2、 異構(gòu)體系結(jié)構(gòu)集成3.1 軟件體系結(jié)構(gòu)風格概述o 軟件體系結(jié)構(gòu)表示系統(tǒng)的框架結(jié)構(gòu),用于從較高的層次上來描述各部分之間的關系和接口,主要包括:構(gòu)件、構(gòu)件性質(zhì)和構(gòu)件之間的關系o 軟件框架設計的核心問題是:能否復用已經(jīng)成型的體系結(jié)構(gòu)方案o 不同系統(tǒng)的設計方案存在著許多共性問題,把這些共性部分抽取出來,就形成了具有代表性的和可廣泛接受的體系結(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)件和連接件之間相互作用的形式化說明,用以指導將多個模塊組織成一個完整的應用程序o 軟件體系結(jié)構(gòu)風格定義了用于系統(tǒng)描述的術(shù)

3、語表和一組用于指導系統(tǒng)構(gòu)建的規(guī)則3.1 軟件體系結(jié)構(gòu)風格概述o 軟件體系結(jié)構(gòu)風格包括構(gòu)件、連接件和一組將它們結(jié)合在一起的約束限制,諸如:拓撲限制和語義限制等o 對于高質(zhì)量的軟件產(chǎn)品而言,首先要為其選擇合適的體系結(jié)構(gòu)風格,這樣就能夠更好地重用已有的設計方案和實現(xiàn)方案o 利用軟件體系結(jié)構(gòu)風格中的不變部分,可以使系統(tǒng)大粒度地重用已有的實現(xiàn)代碼3.2 常用的軟件體系結(jié)構(gòu)風格o 數(shù)據(jù)流風格:批處理和管道/過濾器o 調(diào)用/返回風格:主程序/子程序、層次結(jié)構(gòu)和客戶機/服務器o 面向?qū)ο箫L格o 獨立部件風格:進程通訊和事件驅(qū)動o 虛擬機風格:解釋器和基于規(guī)則的系統(tǒng)o 數(shù)據(jù)共享風格:數(shù)據(jù)庫系統(tǒng)和黑板系統(tǒng)3.3

4、管道/過濾器體系結(jié)構(gòu)風格o 管道/過濾器結(jié)構(gòu)主要包括過濾器和管道兩種元素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 每個過濾器獨立完成自己的任務,不同過濾器之間不需要進行交互o 在管道/過濾器結(jié)構(gòu)中,數(shù)據(jù)輸出的最終結(jié)果與各個過濾器執(zhí)行

5、的順序無關3.3 管道/過濾器體系結(jié)構(gòu)風格o 每個過濾器都是一個獨立的個體元素,各個過濾器的狀態(tài)互不相關,非鄰近過濾器不共享任何信息o 運行結(jié)果的正確性與各個過濾器運行的先后順序無關3.3 管道/過濾器體系結(jié)構(gòu)風格o 管道/過濾器風格具有以下優(yōu)點:n 簡單性,允許將系統(tǒng)的輸入和輸出看作是各個過濾器行為的簡單組合,獨立的過濾器能夠減小構(gòu)件之間的耦合程度n 系統(tǒng)具有可擴展性和可進化性,各個過濾器是相互獨立的,因此可以很容易地將新過濾器添加到現(xiàn)有的系統(tǒng)之中,以擴展系統(tǒng)的業(yè)務處理能力,原有過濾器可以很方便地被改進的過濾器所替代3.3 管道/過濾器體系結(jié)構(gòu)風格n 支持復用,如果一個過濾器的輸出數(shù)據(jù)格式與

6、另一個過濾器的輸入數(shù)據(jù)格式是一致的,就可以將這兩個過濾器連接在一起n 系統(tǒng)并發(fā)性,各個過濾器能夠獨立運行,因此,不同子任務可以并行執(zhí)行,提高了系統(tǒng)運行效率n 便于系統(tǒng)分析,由于系統(tǒng)是獨立構(gòu)件的組合,具有清晰的拓撲結(jié)構(gòu),因而有利于對數(shù)據(jù)吞吐量、死鎖和計算準確性進行分析3.3 管道/過濾器體系結(jié)構(gòu)風格o 管道/過濾器風格也存在著一定的問題:n 系統(tǒng)處理過程是批處理方式,過濾器具有很強的獨立性,對于每一個過濾器,設計者必須考慮從輸入到輸出的轉(zhuǎn)換過程,這種方式會造成過濾器對輸入數(shù)據(jù)的批量轉(zhuǎn)換處理n 不適合用來設計交互式應用系統(tǒng)n 由于沒有通用的數(shù)據(jù)傳輸標準,因此每個過濾器都需要解析輸入數(shù)據(jù)和合成數(shù)據(jù),

7、添加和去除標記需要花費一定的時間,從而導致了系統(tǒng)性能下降,增加了過濾器設計的復雜性3.3 管道/過濾器體系結(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ù)表示和相關原語操作都被封裝在抽象數(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 一個對象對外界隱藏了自己的詳細信息,改變一個

8、對象的表示,不會影響系統(tǒng)的其它部分n 繼承和封裝方法為對象復用提供了技術(shù)支持3.4 面向?qū)ο篌w系結(jié)構(gòu)風格n 對象將數(shù)據(jù)和操作封裝在一起,提高了系統(tǒng)內(nèi)聚性,減小了模塊之間的耦合程度,使系統(tǒng)更容易分解為既相互作用又相互獨立的對象集合o 面向?qū)ο篌w系結(jié)構(gòu)風格也存在著一些問題:n 如果一個對象要調(diào)用另一個對象,則必須知道它的標識和名稱n 會產(chǎn)生連鎖反應,如果一個對象的標識發(fā)生改變,那么必須修改所有顯式調(diào)用它的其它對象,并消除由此引發(fā)的副作用3.5 事件驅(qū)動體系結(jié)構(gòu)風格o 事件驅(qū)動就是在當前系統(tǒng)的基礎之上,根據(jù)事件聲明和發(fā)展狀況來驅(qū)動整個應用程序運行o 系統(tǒng)對外部的行為表現(xiàn)可以通過它對事件的處理來實現(xiàn)o

9、 構(gòu)件不再直接調(diào)用過程,而是聲明事件o 系統(tǒng)其它構(gòu)件的過程可以在這些事件中進行注冊,當觸發(fā)一個事件時,系統(tǒng)會自動調(diào)用在這個事件中注冊的所有過程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)件會響應事件,因此,不能確定構(gòu)件處理的先后順序,甚至不能確定事件會引發(fā)哪些過程調(diào)用n 提高了軟件復用能力,只要在系統(tǒng)事件中注冊構(gòu)件的過程,就可以將該構(gòu)件集成到

10、系統(tǒng)中n 便于系統(tǒng)升級,只要構(gòu)件名和事件中所注冊的過程名保持不變,原有構(gòu)件就可以被新構(gòu)件所替代o 事件驅(qū)動體系結(jié)構(gòu)風格也存在著一些問題:3.5 事件驅(qū)動體系結(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 分層有助于將復雜系統(tǒng)劃分為獨立的模塊,從而簡化

11、程序的設計和實現(xiàn)o 通過分解,可以將系統(tǒng)功能劃分為一些具有明確定義的層,較高層是面向特定應用問題的,較低層更具有一般性3.6 分層體系結(jié)構(gòu)風格o 每層都為上層提供服務,同時又利用了下層的邏輯功能o 每層只對相鄰層可見,層次之間的連接件是協(xié)議和過程調(diào)用,用以實現(xiàn)各層之間的交互o 上層通過下層提供的接口來使用下層的功能,而下層卻不能使用上層的功能o 良好的層次結(jié)構(gòu)將有助于對邏輯功能實施靈活的增加、刪除和修改3.6 分層體系結(jié)構(gòu)風格o 利用接口,可以將下層實現(xiàn)細節(jié)隱藏起來,從而有助于抽象設計,形成松散耦合的結(jié)構(gòu)模型3.6 分層體系結(jié)構(gòu)風格o 分層體系結(jié)構(gòu)風格具有以下優(yōu)點:n 設計者可以將系統(tǒng)分解為一

12、個增量的步驟序列,從而完成復雜的業(yè)務邏輯n 每一層至多和相鄰的上下兩層進行交互,每一層的功能變化最多只影響相鄰兩層,便于實現(xiàn)系統(tǒng)功能的擴展n 只要給相鄰層提供相同的接口,就可以使用不同的方法來實現(xiàn)每一層,支持軟件資源的復用o 分層體系結(jié)構(gòu)風格也存在著一些問題:3.6 分層體系結(jié)構(gòu)風格n 并非所有系統(tǒng)都能夠按照層次來進行劃分,即使一個系統(tǒng)的邏輯結(jié)構(gòu)是層次化的,但是出于對系統(tǒng)性能的考慮,需要把不同抽象程度的功能合并到一層,破壞了邏輯獨立性n 很難找到一種合適和正確的層次劃分方法,其應用范圍受到限制n 在傳輸數(shù)據(jù)時,需要經(jīng)過多個層次,導致了系統(tǒng)性能下降n 多層結(jié)構(gòu)難以調(diào)試,往往需要通過一系列的跨層次

13、調(diào)用來實現(xiàn)3.6 分層體系結(jié)構(gòu)風格o 分層體系結(jié)構(gòu)應用實例:n 開放系統(tǒng)互聯(lián)國際標準組織(Open Systems Interconnection-International Standards Organization,OSI-ISO)所指定的分層通信協(xié)議、計算機網(wǎng)絡協(xié)議TCP/IP、操作系統(tǒng)和數(shù)據(jù)庫系統(tǒng)n 引文管理系統(tǒng)是采用分層體系結(jié)構(gòu)來進行設計的o 主要包括3種類型的構(gòu)件:用戶界面構(gòu)件、引文格式化構(gòu)件以及引文存儲和檢索構(gòu)件3.7 C2體系結(jié)構(gòu)風格o C2結(jié)構(gòu)是一個層次網(wǎng)絡,包括構(gòu)件和連接件兩種軟件元素o 構(gòu)件和連接件都是包含頂部和底部的軟件元素o 構(gòu)件與構(gòu)件之間只能通過連接件進行連接,連

14、接件之間則可以直接進行連接o 構(gòu)件的頂部、底部分別與連接件的底部、頂部相連,連接件的頂部、底部也分別與連接件的底部、頂部相連3.7 C2體系結(jié)構(gòu)風格o 構(gòu)件之間的所有通訊必須使用消息傳遞機制來實現(xiàn),構(gòu)件之間所傳遞的消息可以分為兩種:n 一種是向上層構(gòu)件發(fā)出服務請求的請求消息,一種是向下層構(gòu)件發(fā)送指示狀態(tài)變化的通知消息o 連接件負責消息的過濾、路由、廣播、通信和相關處理o 構(gòu)件只能使用其上層構(gòu)件所提供的服務,而不能感知下層構(gòu)件的存在3.7 C2體系結(jié)構(gòu)風格o 上下層的含義與一般情況相反,最下層構(gòu)件是用戶界面和IO設備,上層構(gòu)件則是比較低級的邏輯操作3.7 C2體系結(jié)構(gòu)風格o C2體系結(jié)構(gòu)風格具有

15、以下優(yōu)點:n 可以使用任何編程語言來開發(fā)構(gòu)件,構(gòu)件重用和替換比較容易實現(xiàn)n 具有一定的擴展能力,可以有多種不同粒度的構(gòu)件,構(gòu)件之間相對獨立,且依賴性較小,構(gòu)件可以在分布式和異構(gòu)壞境中運行,利用構(gòu)件來實現(xiàn)應用需求,對任意復雜的邏輯功能進行封裝n 構(gòu)件不需要共享地址空間,避免了共享全局變量所造成的復雜關系,構(gòu)件可以有自己的控制線程,即構(gòu)件可以是多線程的3.7 C2體系結(jié)構(gòu)風格n 具有良好的適應性,可以實現(xiàn)多個用戶和多個系統(tǒng)之間的交互,能夠同時激活多個對話并使用不同的形式來進行表示n 可以使用多個工具集和多種媒體類型,能夠動態(tài)地更新系統(tǒng)的框架結(jié)構(gòu)o 在構(gòu)件和連接件之間,存在著以下關系:n 構(gòu)件頂部與

16、連接件底部相連,構(gòu)件底部與連接件頂部相連,構(gòu)件與構(gòu)件之間不允許直接相連n 與某一個連接件相關聯(lián)的構(gòu)件和連接件的數(shù)目沒有限制3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格o 數(shù)據(jù)共享風格也稱為倉庫風格,有兩種不同類型的軟件元素:n 一種是中央數(shù)據(jù)單元,也稱為資源庫,用于表示系統(tǒng)的當前狀態(tài),另一種是相互依賴的構(gòu)件組o 中央數(shù)據(jù)單元和構(gòu)件之間可以進行信息交換,這是數(shù)據(jù)共享體系結(jié)構(gòu)的技術(shù)實現(xiàn)基礎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ù)庫

17、應用系統(tǒng)o 如果由中央數(shù)據(jù)單元的當前狀態(tài)來驅(qū)動系統(tǒng)運行,則這個系統(tǒng)就是黑板應用系統(tǒng)o 黑板是數(shù)據(jù)共享體系結(jié)構(gòu)的一個特例,用以解決狀態(tài)沖突并處理可能存在的不確定性知識源3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格o 黑板經(jīng)常被用于信號處理,例如:語音和模式識別,同時,在自然語言處理領域中也有廣泛的應用,諸如:機器翻譯和句法分析3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格o 黑板系統(tǒng)主要包括3部分:n 知識源是主要的信息來源,知識源在邏輯上和物理上都是獨立的,知識源只與產(chǎn)生它們的應用有關,通過中央數(shù)據(jù)單元,多個知識源相互配合,完成相關業(yè)務邏輯,這一過程對外部環(huán)境是透明的n 中央數(shù)據(jù)單元,黑板系統(tǒng)的運行完全依賴于中央數(shù)據(jù)單元的狀態(tài)

18、變化,中央數(shù)據(jù)單元是整個系統(tǒng)的核心部分,反映了業(yè)務邏輯的求解狀態(tài),在多個知識源之間,中央數(shù)據(jù)單元起到了通信機制的作用3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風格n 控制單元是由中央數(shù)據(jù)單元的狀態(tài)來驅(qū)動的,知識源的執(zhí)行導致了中央數(shù)據(jù)單元的狀態(tài)發(fā)生變化,控制單元根據(jù)預先定義的策略,啟動相應的知識源,以完成系統(tǒng)的控制任務o 黑板體系結(jié)構(gòu)有以下優(yōu)點:n 便于多客戶共享大量數(shù)據(jù),而不必關心數(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)用問題,這會使

19、得共享數(shù)據(jù)結(jié)構(gòu)的修改變得非常困難n 需要同步機制和加鎖機制來保證數(shù)據(jù)的完整性和一致性,增大了系統(tǒng)設計的復雜度3.9 解釋器體系結(jié)構(gòu)風格o 解釋器作為一種體系結(jié)構(gòu),主要用于構(gòu)建虛擬機,以彌合程序語義和計算機硬件之間的間隙o 解釋器是利用軟件來創(chuàng)建的一種虛擬機,因此,解釋器風格又被稱為虛擬機風格o 程序的邏輯功能很復雜,用戶需要采用復雜的方式來進行操作,一個較好的解決方案是提供面向領域的虛擬機語言3.9 解釋器體系結(jié)構(gòu)風格o 解釋器體系結(jié)構(gòu)具有以下優(yōu)點:n 能夠提高應用程序的移植能力和編程語言的跨平臺移植能力n 實際測試工作可能非常復雜,測試代價極其昂貴,具有一定的風險性,可以利用解釋器對未實現(xiàn)的

20、硬件進行仿真o 解釋器體系結(jié)構(gòu)風格也存在著一些問題:n 由于使用了特定語言和自定義操作規(guī)則,因此增加了系統(tǒng)運行的開銷n 解釋器系統(tǒng)難以設計和測試3.9 解釋器體系結(jié)構(gòu)風格o 解釋器體系結(jié)構(gòu)有許多現(xiàn)實應用,可以將其作為整個軟件系統(tǒng)的一個組成部分,以下是一些具體的應用實例:n Java和Smalltalk的編譯器n 基于規(guī)則的系統(tǒng),諸如:專家系統(tǒ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)應該是環(huán)形的o 在反饋控制環(huán)系統(tǒng)中,主要包括以下3個部分:n 過程,指操縱過

21、程變量的相關機制n 數(shù)據(jù)元素,指連續(xù)更新的過程變量,包括:輸入變量、控制變量、操縱變量和相關參考值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)能夠處理復雜的自適應問題,機器學習就是一個典型的實例3.10 反饋控制環(huán)體系結(jié)構(gòu)風格o 將訓練樣本輸入到學習構(gòu)件中,作為被查詢的基本數(shù)據(jù)和知識源o 然后輸入真實數(shù)據(jù),經(jīng)過學習構(gòu)件的分析和計算,輸出學習結(jié)果o 檢測構(gòu)件要檢查學習結(jié)果與預期結(jié)果之間的差異,并反饋給學習構(gòu)件3.11 客戶機/服務器體系結(jié)構(gòu)風格o 在集中計算時代,主要采用大型機/小型機模型

22、,在這種模型中,通過與宿主機相連的非智能終端來實現(xiàn)宿主機程序的邏輯功能o 個人計算機和工作站的采用,改變了這種協(xié)作計算模式,導致了分散計算模型的出現(xiàn)o 分散計算模型的主要優(yōu)點是:用戶可以選擇適合自己的工作站、操作系統(tǒng)和應用程序,在這一時期,集中計算模式逐漸被以PC機為主的網(wǎng)絡計算模式所取代3.11 客戶機/服務器體系結(jié)構(gòu)風格o 客戶機/服務器(Client/Server,C/S)是20世紀90年代開始成熟的一項技術(shù),主要針對資源不對等問題而提出的一種共享策略o 客戶機/服務器是兩個相互獨立的邏輯系統(tǒng),為了完成特定任務,它們形成了一種協(xié)作關系o 在C/S體系結(jié)構(gòu)中,主要包括三個部分:服務器、客戶

23、機和網(wǎng)絡3.11 客戶機/服務器體系結(jié)構(gòu)風格o 客戶機向服務器發(fā)送操作請求,期待服務器的響應o 二者之間具有一定的連接機制,遵循公共的通信協(xié)議,都需要處理請求表達、返回結(jié)果表示、連接關系和狀態(tài)表達等一系列問題3.11 客戶機/服務器體系結(jié)構(gòu)風格o 數(shù)據(jù)和業(yè)務處理分布在一定范圍內(nèi)的多個構(gòu)件上,包括客戶機程序中的構(gòu)件和服務器程序中的構(gòu)件,構(gòu)件與構(gòu)件之間是通過網(wǎng)絡進行連接的o 定義了工作站與服務器的連接方法,從而使數(shù)據(jù)存儲和邏輯計算可以分布到物理上的多個處理器上o 服務器負責存儲和管理數(shù)據(jù)信息,客戶機負責數(shù)據(jù)顯示、用戶交互以及對業(yè)務邏輯的處理3.11 客戶機/服務器體系結(jié)構(gòu)風格o C/S系統(tǒng)可以分為

24、前臺客戶機程序和后臺服務器程序兩部分o 服務器程序負責管理客戶機程序的數(shù)據(jù),而客戶機程序負責完成與用戶之間的交互,發(fā)送請求消息,接收和分析從服務器返回的數(shù)據(jù)o 客戶機程序是表示層,包括用戶界面和業(yè)務處理程序o 服務器程序是數(shù)據(jù)層,包括中心數(shù)據(jù)庫、數(shù)據(jù)查詢程序、數(shù)據(jù)存儲程序和數(shù)據(jù)更新程序3.11 客戶機/服務器體系結(jié)構(gòu)風格3.11 客戶機/服務器體系結(jié)構(gòu)風格o 服務器程序負責管理系統(tǒng)資源,包括:管理數(shù)據(jù)庫的安全性、控制數(shù)據(jù)庫訪問的并發(fā)性、定義全局數(shù)據(jù)完整性規(guī)則以及備份恢復數(shù)據(jù)庫o 服務器永遠處于激活狀態(tài),監(jiān)聽用戶請求,為客戶提供服務操作o 客戶機程序的主要任務包括:提供用戶與數(shù)據(jù)庫交互的界面、向

25、服務器提交用戶請求、接收來自服務器的信息以及對客戶機數(shù)據(jù)執(zhí)行業(yè)務邏輯操作3.11 客戶機/服務器體系結(jié)構(gòu)風格o 網(wǎng)絡通信軟件的主要功能是完成服務器程序和客戶機程序之間的數(shù)據(jù)傳輸o 在代理風格中,服務器將其服務和數(shù)據(jù)發(fā)布到代理服務器上,客戶機通過代理服務器來訪問服務,提高了系統(tǒng)的安全性3.11 客戶機/服務器體系結(jié)構(gòu)風格o C/S體系結(jié)構(gòu)具有以下優(yōu)點:n 客戶機構(gòu)件和服務器構(gòu)件分別運行在不同的計算機上,有利于分布式數(shù)據(jù)的組織和處理n 構(gòu)件之間的位置是相互透明的,客戶機程序和服務器程序都不必考慮對方的實際存儲位置n 客戶機側(cè)重數(shù)據(jù)的顯示和分析,服務器則注重數(shù)據(jù)的管理,因此,客戶機程序和服務器程序可

26、以運行在不同的操作系統(tǒng)上,便于實現(xiàn)異構(gòu)環(huán)境和多種不同開發(fā)技術(shù)的融合3.11 客戶機/服務器體系結(jié)構(gòu)風格n 構(gòu)件之間是彼此獨立和充分隔離的,這使得軟件環(huán)境和硬件環(huán)境的配置具有極大的靈活性,易于系統(tǒng)功能的擴展n 將大規(guī)模的業(yè)務邏輯分布到多個通過網(wǎng)絡連接的低成本的計算機上,降低了系統(tǒng)的整體開銷o C/S體系結(jié)構(gòu)也逐漸暴露出一些問題:n 開發(fā)成本較高,客戶機的軟件配置和硬件配置的要求比較高,隨著軟件版本的升級,對硬件性能的要求也越來越高,從而增加了系統(tǒng)成本,使客戶機變得臃腫3.11 客戶機/服務器體系結(jié)構(gòu)風格n 在開發(fā)C/S結(jié)構(gòu)系統(tǒng)時,大部分工作都集中在客戶機程序的設計上,增加了設計的復雜度,客戶機負

27、荷太重,難以應對客戶端的大量業(yè)務處理,降低了系統(tǒng)性能n 信息內(nèi)容和形式單一,傳統(tǒng)應用一般都是事務處理型,界面基本上遵循數(shù)據(jù)庫的字段解釋,在開發(fā)之初就已經(jīng)確定,用戶無法及時獲取辦公信息和文檔信息,只能獲得單純的字符和數(shù)字,非??菰锖退腊?.11 客戶機/服務器體系結(jié)構(gòu)風格n 如果對C/S體系結(jié)構(gòu)的系統(tǒng)進行升級,開發(fā)人員需要到現(xiàn)場來更新客戶機程序,同時需要對運行環(huán)境進行重新配置,增加了維護費用n 兩層C/S結(jié)構(gòu)采用了單一的服務器,同時以局域網(wǎng)為中心,因此難以擴展到Intranet和Internetn 數(shù)據(jù)安全性不高,客戶機程序可以直接訪問數(shù)據(jù)庫服務器,因此,客戶機上的其它惡意性程序也有可能訪問到數(shù)

28、據(jù)庫,無法保證中心數(shù)據(jù)庫的安全3.11 客戶機/服務器體系結(jié)構(gòu)風格o 為了克服兩層C/S結(jié)構(gòu)的缺點,可以將客戶機和服務器中的部分業(yè)務邏輯抽取出來,形成功能層,放在應用服務器上,這就是所謂的三層C/S體系結(jié)構(gòu)o 三層C/S結(jié)構(gòu)包括:客戶機、應用服務器和數(shù)據(jù)庫服務器三個部分3.11 客戶機/服務器體系結(jié)構(gòu)風格3.11 客戶機/服務器體系結(jié)構(gòu)風格o 在三層C/S結(jié)構(gòu)中,針對一類應用問題建立了中間層,即功能層,配置在應用服務器上o 應用服務器負責處理客戶機與數(shù)據(jù)庫服務器之間的交互,而不是直接讓客戶機與中心數(shù)據(jù)庫相連,因此減少了同數(shù)據(jù)庫服務器相連的客戶機的數(shù)目,提高了系統(tǒng)安全性o 由于將數(shù)據(jù)存取構(gòu)件放在

29、應用服務器上,客戶機只存放系統(tǒng)的表示層,因此,客戶機程序不必關心數(shù)據(jù)的操作細節(jié),便于實現(xiàn)軟件的安裝與維護3.11 客戶機/服務器體系結(jié)構(gòu)風格o 在三層C/S體系結(jié)構(gòu)中,通過增加應用服務器,在不增加數(shù)據(jù)庫服務器負擔的情況下,使客戶機變“瘦”,這種風格又被稱為“瘦客戶機”C/S結(jié)構(gòu)o 在三層C/S結(jié)構(gòu)中,減小了數(shù)據(jù)庫服務器的工作量,應用服務器可以建立數(shù)據(jù)備份,因此,提高了系統(tǒng)的可靠性o 在三層C/S結(jié)構(gòu)的軟件系統(tǒng)中,可以將業(yè)務邏輯劃分為表示層、功能層和數(shù)據(jù)層3個部分3.11 客戶機/服務器體系結(jié)構(gòu)風格3.11 客戶機/服務器體系結(jié)構(gòu)風格o 表示層,是系統(tǒng)和用戶之間的接口,實現(xiàn)用戶與系統(tǒng)之間的對話功

30、能,用于檢查從鍵盤和鼠標等設備輸入的數(shù)據(jù),顯示輸出結(jié)果o 功能層,負責處理所有的業(yè)務邏輯o 數(shù)據(jù)層就是數(shù)據(jù)庫管理系統(tǒng),負責讀寫數(shù)據(jù),數(shù)據(jù)庫管理系統(tǒng)必須能夠迅速地執(zhí)行大量數(shù)據(jù)的更新和檢索操作o 在開發(fā)三層C/S結(jié)構(gòu)的應用系統(tǒng)時,需要對這三層的功能進行明確地劃分,使之在邏輯上相互獨立3.11 客戶機/服務器體系結(jié)構(gòu)風格o 設計過程中的難點是:如何從兩層C/S結(jié)構(gòu)的表示層和數(shù)據(jù)層中分離各自的應用程序,同時使層次之間的接口簡單明了o 在實現(xiàn)三層C/S體系結(jié)構(gòu)時,通常可以采用中間件技術(shù)o 中間件是一個用API定義的軟件層,是一種具有強大通信能力和良好擴展能力的分布式軟件管理框架3.11 客戶機/服務器體

31、系結(jié)構(gòu)風格o 在客戶機和服務器以及服務器和服務器之間,使用中間件來傳送數(shù)據(jù),完成客戶機群和服務器群之間的通信任務o 在配置三層C/S結(jié)構(gòu)的系統(tǒng)時,通常有多種不同的選擇方案n 將表示層放在客戶機上,功能層和數(shù)據(jù)層都放在同一個服務器上,與兩層C/S結(jié)構(gòu)相比,雖然提高了程序的可維護性,但兩層C/S結(jié)構(gòu)的缺陷并未得到完全解決3.11 客戶機/服務器體系結(jié)構(gòu)風格n 由于三層分別放在不同的計算結(jié)點上,因此提高了系統(tǒng)的靈活性,能夠適應客戶機數(shù)目和處理負荷的變動,但是,在這種情況下,服務器之間要進行數(shù)據(jù)傳送,增加了系統(tǒng)開銷3.11 客戶機/服務器體系結(jié)構(gòu)風格n 如果將表示層和功能層都放在客戶機上,其配置方案如

32、下所示,在這種情況下,客戶機的工作負擔很重,類似于兩層C/S結(jié)構(gòu)3.11 客戶機/服務器體系結(jié)構(gòu)風格n 如果將表示層和功能層都放在客戶機上,其配置方案如下所示,在這種情況下,客戶機的工作負擔很重,類似于兩層C/S結(jié)構(gòu)3.11 客戶機/服務器體系結(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)時,可以更有效地選擇運行平臺和硬件環(huán)境,從而使每一層都具有清晰的邏輯結(jié)構(gòu)、良好的負荷處理能力和較好的開放性,清晰和合理地劃分三層C/S結(jié)構(gòu),使各層之間保持相互獨立,可以降低

33、每一層應用的修改難度3.11 客戶機/服務器體系結(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 客戶機/服務器體系結(jié)構(gòu)風格o 在實現(xiàn)三層C/S結(jié)構(gòu)時,需要注意以下幾個問題:n 如果各層之間的通信效率不高,即使每一層的硬件配置都很高,系統(tǒng)的整體性能也不會太高n 必須慎重考慮三層之間的通信方

34、法、通信頻率和傳輸數(shù)據(jù)量,這和提高各層的獨立性一樣也是實現(xiàn)三層C/S結(jié)構(gòu)的關鍵性問題3.12 瀏覽器/服務器體系結(jié)構(gòu)風格o 瀏覽器/服務器(Browser/Server,B/S),是三層C/S體系結(jié)構(gòu)的一種實現(xiàn)方式,主要包括:瀏覽器、Web服務器和數(shù)據(jù)庫服務器o B/S結(jié)構(gòu)主要利用了不斷成熟的WWW技術(shù),結(jié)合瀏覽器的多腳本語言,采用通用瀏覽器來實現(xiàn)原來需要復雜的專用軟件才能實現(xiàn)的強大功能,節(jié)約了開發(fā)成本o 與三層C/S結(jié)構(gòu)的解決方案相比,B/S體系結(jié)構(gòu)在客戶機上采用了WWW瀏覽器,將Web服務器作為應用服務器3.12 瀏覽器/服務器體系結(jié)構(gòu)風格o B/S體系結(jié)構(gòu)的核心是Web服務器,可以將應用

35、程序以網(wǎng)頁的形式存放在Web服務器上3.12 瀏覽器/服務器體系結(jié)構(gòu)風格o 當用戶運行某個應用程序時,只需要在客戶端的瀏覽器中鍵入相應的URL,向Web服務器提出HTTP請求o 當Web服務器接收HTTP請求之后,會調(diào)用相關的應用程序,同時向數(shù)據(jù)庫服務器發(fā)送數(shù)據(jù)操作請求o 數(shù)據(jù)庫服務器對數(shù)據(jù)操作請求進行響應,將結(jié)果返回給Web服務器的應用程序3.12 瀏覽器/服務器體系結(jié)構(gòu)風格o Web服務器應用程序執(zhí)行業(yè)務處理邏輯,利用HTML來封裝操作結(jié)果,通過瀏覽器呈現(xiàn)給用戶o 在B/S結(jié)構(gòu)中,數(shù)據(jù)請求、網(wǎng)頁生成、數(shù)據(jù)庫訪問和應用程序執(zhí)行全部由Web服務器來完成o 在B/S結(jié)構(gòu)中,系統(tǒng)的安裝、修改和維護

36、都在Web服務器和數(shù)據(jù)庫服務器上進行3.12 瀏覽器/服務器體系結(jié)構(gòu)風格o 在使用系統(tǒng)時,用戶僅使用一個瀏覽器就可以運行全部的應用程序,真正實現(xiàn)了“零客戶端”的運作模式o 在系統(tǒng)運行期間,可以對瀏覽器進行自動升級,B/S結(jié)構(gòu)為異構(gòu)機、異構(gòu)網(wǎng)和異構(gòu)應用服務的集成提供了有效的框架基礎o B/S體系結(jié)構(gòu)具有以下優(yōu)點:n 客戶端只需要安裝瀏覽器,操作簡單,能夠發(fā)布動態(tài)信息和靜態(tài)信息3.12 瀏覽器/服務器體系結(jié)構(gòu)風格n 運用HTTP標準協(xié)議和統(tǒng)一客戶端軟件,能夠?qū)崿F(xiàn)跨平臺通信n 開發(fā)成本比較低,只需要維護Web服務器程序和中心數(shù)據(jù)庫,客戶端升級可以通過升級瀏覽器來實現(xiàn),使所有用戶同步更新o B/S體系

37、結(jié)構(gòu)風格也存在著一些問題:n 個性化程度比較低,所有客戶端程序的功能都是一樣的3.12 瀏覽器/服務器體系結(jié)構(gòu)風格n 客戶端數(shù)據(jù)處理能力比較差,加重了Web服務器的工作負擔,影響系統(tǒng)的整體性能n 在B/S結(jié)構(gòu)的系統(tǒng)中,數(shù)據(jù)提交一般以頁面為單位,動態(tài)交互性不強,不利于在線事務處理(Online Transaction Processing,OLTP)n B/S體系結(jié)構(gòu)的可擴展性比較差,系統(tǒng)安全性難以保障n B/S結(jié)構(gòu)的應用系統(tǒng)查詢中心數(shù)據(jù)庫,其速度要遠低于C/S體系結(jié)構(gòu)3.13 公共對象請求代理體系結(jié)構(gòu)風格o 在異構(gòu)分布式環(huán)境下,可以利用CORBA來實現(xiàn)應用程序之間的交互操作o CORBA規(guī)范主

38、要包括:n 對象請求代理ORB、對象適配器(Object Adapter,OA)、接口定義語言IDL、接口存儲(Interface Repository,IR)和ORB內(nèi)部的相關協(xié)議o CORBA體系結(jié)構(gòu)的核心是ORB,ORB作為“軟件總線”用來連接網(wǎng)絡上的不同應用對象3.13 公共對象請求代理體系結(jié)構(gòu)風格o ORB的任務是定位服務器,通過對象適配器OA將操作請求傳送給相應的服務器o OA位于ORB和對象之間,屏蔽了ORB內(nèi)部的實現(xiàn)細節(jié),為服務器對象提供了抽象接口n 其功能包括:登錄服務器、注冊對象、創(chuàng)建對象、激活對象、分發(fā)客戶請求和認證客戶請求o CORBA提供了透明訪問對象的相關方法,能夠

39、屏蔽實現(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 在服務器端,OA利用動態(tài)框架接口(Dynamic Skeleton Interface,DSI)來傳輸操作請求,提供了動態(tài)實現(xiàn)方法o 接口定義語言(Interface Definition Language,IDL)用來定義客戶端和服務器之間的靜態(tài)接口3.13 公共對象請求代理體系結(jié)構(gòu)風格o IDL

40、不是編程語言,它是CORBA規(guī)范的一種中性定義語言,用于描述對象接口o 客戶端與ORB之間的靜態(tài)接口,被稱為靜態(tài)調(diào)用接口(Static Invocation Interface,SII)o 服務器與ORB之間的靜態(tài)接口,被稱為靜態(tài)框架接口(Static Skeleton Interface,SSI)3.13 公共對象請求代理體系結(jié)構(gòu)風格o CORBA規(guī)范包含了ORB的內(nèi)部協(xié)議,即Internet ORB內(nèi)部協(xié)議(Internet Inter-ORB Protocol,IIOP),用以描述IDL類型的在線表示方法和協(xié)議數(shù)據(jù)單元o IIOP使用TCP/IP來傳輸ORB之間的操作請求和相關參數(shù)3.1

41、3 公共對象請求代理體系結(jié)構(gòu)風格o IR包含了運行時所需要的IDL規(guī)范,定義了基本類型映射機制o IMR存儲服務器的詳細信息o CORBA體系結(jié)構(gòu)風格具有以下優(yōu)點:n 實現(xiàn)了客戶端程序與服務器程序的分離,客戶不再直接與服務器發(fā)生聯(lián)系,而僅需要和ORB進行通信,客戶端和服務器之間的關系更加靈活n 將分布式計算模式與面向?qū)ο蠹夹g(shù)結(jié)合起來,提高了軟件復用效率3.13 公共對象請求代理體系結(jié)構(gòu)風格n 提供了軟件總線機制,軟件總線是指一組定義完整的接口規(guī)范,應用程序、軟件構(gòu)件和相關工具只要具有與接口規(guī)范相符的接口定義,就能集成到應用系統(tǒng)中,這個接口規(guī)范是獨立于編程語言和開發(fā)環(huán)境的n CORBA能夠支持不

42、同的編程語言和操作系統(tǒng),在更大的范圍內(nèi),開發(fā)人員能夠相互利用已有的開發(fā)成果3.14 正交體系結(jié)構(gòu)風格o 正交體系結(jié)構(gòu)是一種以垂直線索構(gòu)件族為基礎的層次化結(jié)構(gòu),包括組織層和線索o 在每一個組織層中,都包含具有相同抽象級別的構(gòu)件o 線索是子系統(tǒng)的實例,是由完成不同層次功能的構(gòu)件通過相互調(diào)用而形成的,每一條線索完成系統(tǒng)的一部分相對獨立的功能o 在正交體系結(jié)構(gòu)中,每條線索的實現(xiàn)與其它線索的實現(xiàn)無關或關聯(lián)很少,在同一層次中,構(gòu)件之間不存在相互調(diào)用關系3.14 正交體系結(jié)構(gòu)風格o 正交體系結(jié)構(gòu)的基本思想是:n 按照功能的正交相關性,將系統(tǒng)垂直地劃分為若干個子系統(tǒng),每個子系統(tǒng)用一條線索來實現(xiàn)n 每條線索由多

43、個具有不同層次功能和抽象級別的構(gòu)件組成o 如果線索之間是相互獨立的,即不同線索中的構(gòu)件不存在調(diào)用關系,那么這種結(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 具有一個驅(qū)動線索運行的公共頂層和一個存儲共享

44、數(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 易于重用,在同一應用領域中,不同軟件系統(tǒng)往往具有相同的層次和線索,因此,可以共享同一個框架結(jié)構(gòu)3.15 基于層次消息總線的體系結(jié)構(gòu)風格o 層次消息總線的理論基礎是消息驅(qū)動的編程方法和計算機硬件總線概念o 計算機硬件總線的概念為層次消息總線體系結(jié)

45、構(gòu)的設計提供了很好的借鑒和啟示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)對其進行響應,并通過總線返回處理結(jié)果o 由于構(gòu)件是通過消息總線進行連接的,不要求各個構(gòu)件具有相同的地址空間3.15 基于層次消息總線的體系結(jié)構(gòu)風格o 復雜構(gòu)件分解為粒度更細的子構(gòu)

46、件,通過局部消息總線進行連接,從而形成復合構(gòu)件o 如果子構(gòu)件仍然比較復雜,則可以進一步分解,如此分解下去,系統(tǒng)將形成樹狀的拓撲結(jié)構(gòu)o 葉結(jié)點是系統(tǒng)的原子構(gòu)件,不再包含子構(gòu)件o 原子構(gòu)件的設計可以采用不同的軟件體系結(jié)構(gòu)風格3.15 基于層次消息總線的體系結(jié)構(gòu)風格o 整個系統(tǒng)可以作為一個構(gòu)件,通過更高層次的消息總線集成到更大的應用系統(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 基于層次

47、消息總線的體系結(jié)構(gòu)風格o 在行為部分,使用有限狀態(tài)自動機來描述構(gòu)件的功能,構(gòu)件行為要同時受到外來消息和自身狀態(tài)的影響o 結(jié)構(gòu)部分描述了復合構(gòu)件的拓撲結(jié)構(gòu),復合構(gòu)件由簡單的子構(gòu)件組合而成,子構(gòu)件通過復合構(gòu)件內(nèi)部的消息總線進行連接3.15 基于層次消息總線的體系結(jié)構(gòu)風格n 消息總線:o 在HMB體系結(jié)構(gòu)中,消息總線是連接件o 構(gòu)件向消息總線登記自己感興趣的消息,形成構(gòu)件消息響應登記表o 消息總線根據(jù)接收到的消息,查閱構(gòu)件消息響應登記表,確定能夠響應該消息的構(gòu)件,并將消息傳遞給該構(gòu)件,同時,負責返回處理結(jié)果o 從邏輯上看,消息總線是一個整體,但是,從物理上講,它可以跨越多個不同的機器o 掛接在消息總線上的構(gòu)件可以分布在多個不同的機器上,并行運行3.15 基于層次消息總線的體系結(jié)構(gòu)風格n 消息登記:在基于消息的系統(tǒng)中,構(gòu)件需要向消息總線登記自己所感興趣的消息,不關心該消息是由哪個構(gòu)件發(fā)出的3.15 基于層次消息總線的體系結(jié)構(gòu)風格n 消息分派和傳遞:消息總線負責在構(gòu)件之間傳遞消息,根據(jù)構(gòu)件消息響應登記表把消息分派給對其感興趣的構(gòu)件,并返回處理結(jié)果n 消息過濾:在不同的構(gòu)件中,同一消息可能使用了不同的名字,不同的消息也可能使用了相同的名字,在構(gòu)件集成時,需要對消息進行過濾n HMB體系結(jié)構(gòu)風格支持運行時系統(tǒng)演化:3.15 基于層次消息總線的體系結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論