第三章_軟件體系結(jié)構(gòu)風(fēng)格_第1頁(yè)
第三章_軟件體系結(jié)構(gòu)風(fēng)格_第2頁(yè)
第三章_軟件體系結(jié)構(gòu)風(fēng)格_第3頁(yè)
第三章_軟件體系結(jié)構(gòu)風(fēng)格_第4頁(yè)
第三章_軟件體系結(jié)構(gòu)風(fēng)格_第5頁(yè)
已閱讀5頁(yè),還剩107頁(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、第三章 軟件體系結(jié)構(gòu)風(fēng)格本章內(nèi)容o 3.1 軟件體系結(jié)構(gòu)風(fēng)格概述o 3.2 常用的軟件體系結(jié)構(gòu)風(fēng)格o 3.3 管道/過(guò)濾器體系結(jié)構(gòu)風(fēng)格o 3.4 面向?qū)ο篌w系結(jié)構(gòu)風(fēng)格o 3.5 事件驅(qū)動(dòng)體系結(jié)構(gòu)風(fēng)格o 3.6 分層體系結(jié)構(gòu)風(fēng)格o 3.7 C2體系結(jié)構(gòu)風(fēng)格o 3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風(fēng)格本章內(nèi)容o 3.9 解釋器體系結(jié)構(gòu)風(fēng)格o 3.10 反饋控制環(huán)體系結(jié)構(gòu)風(fēng)格o 3.11 客戶機(jī)/服務(wù)器體系結(jié)構(gòu)風(fēng)格o 3.12 瀏覽器/服務(wù)器體系結(jié)構(gòu)風(fēng)格o 3.13 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)風(fēng)格o 3.14 正交體系結(jié)構(gòu)風(fēng)格o 3.15 基于層次消息總線的體系結(jié)構(gòu)風(fēng)格o 3.16 MVC體系結(jié)構(gòu)風(fēng)格o 3.17

2、 異構(gòu)體系結(jié)構(gòu)集成3.1 軟件體系結(jié)構(gòu)風(fēng)格概述o 軟件體系結(jié)構(gòu)表示系統(tǒng)的框架結(jié)構(gòu),用于從較高的層次上來(lái)描述各部分之間的關(guān)系和接口,主要包括:構(gòu)件、構(gòu)件性質(zhì)和構(gòu)件之間的關(guān)系o 軟件框架設(shè)計(jì)的核心問(wèn)題是:能否復(fù)用已經(jīng)成型的體系結(jié)構(gòu)方案o 不同系統(tǒng)的設(shè)計(jì)方案存在著許多共性問(wèn)題,把這些共性部分抽取出來(lái),就形成了具有代表性的和可廣泛接受的體系結(jié)構(gòu)風(fēng)格3.1 軟件體系結(jié)構(gòu)風(fēng)格概述o 軟件體系結(jié)構(gòu)風(fēng)格也稱為軟件體系結(jié)構(gòu)慣用模式,是指不同系統(tǒng)所擁有的共同組織結(jié)構(gòu)和語(yǔ)義特征o 軟件體系結(jié)構(gòu)是構(gòu)件和連接件之間相互作用的形式化說(shuō)明,用以指導(dǎo)將多個(gè)模塊組織成一個(gè)完整的應(yīng)用程序o 軟件體系結(jié)構(gòu)風(fēng)格定義了用于系統(tǒng)描述的術(shù)

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

4、管道/過(guò)濾器體系結(jié)構(gòu)風(fēng)格o 管道/過(guò)濾器結(jié)構(gòu)主要包括過(guò)濾器和管道兩種元素o 構(gòu)件被稱為過(guò)濾器,負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行加工處理o 每個(gè)過(guò)濾器都有一組輸入端口和輸出端口,從輸入端口接收數(shù)據(jù),經(jīng)過(guò)內(nèi)部加工處理之后,傳送到輸出端口上o 數(shù)據(jù)通過(guò)相鄰過(guò)濾器之間的連接件進(jìn)行傳輸,連接件可以看作輸入數(shù)據(jù)流和輸出數(shù)據(jù)流之間的通路,這就是所謂的管道3.3 管道/過(guò)濾器體系結(jié)構(gòu)風(fēng)格o 管道/過(guò)濾器結(jié)構(gòu)將數(shù)據(jù)流處理分為幾個(gè)順序的步驟來(lái)進(jìn)行,一個(gè)步驟的輸出是下一個(gè)步驟的輸入,每個(gè)處理步驟由一個(gè)過(guò)濾器來(lái)實(shí)現(xiàn)o 每個(gè)過(guò)濾器獨(dú)立完成自己的任務(wù),不同過(guò)濾器之間不需要進(jìn)行交互o 在管道/過(guò)濾器結(jié)構(gòu)中,數(shù)據(jù)輸出的最終結(jié)果與各個(gè)過(guò)濾器執(zhí)行

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

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

7、添加和去除標(biāo)記需要花費(fèi)一定的時(shí)間,從而導(dǎo)致了系統(tǒng)性能下降,增加了過(guò)濾器設(shè)計(jì)的復(fù)雜性3.3 管道/過(guò)濾器體系結(jié)構(gòu)風(fēng)格n 難以進(jìn)行錯(cuò)誤處理,管道/過(guò)濾器結(jié)構(gòu)的固有特性,決定了很難制定錯(cuò)誤處理的一般性策略o 傳統(tǒng)的編譯器是管道/過(guò)濾器體系結(jié)構(gòu)風(fēng)格的一個(gè)實(shí)例3.4 面向?qū)ο篌w系結(jié)構(gòu)風(fēng)格o 在這種體系結(jié)構(gòu)中,數(shù)據(jù)表示和相關(guān)原語(yǔ)操作都被封裝在抽象數(shù)據(jù)類型中o 對(duì)象是構(gòu)件,也稱為抽象數(shù)據(jù)類型的實(shí)例o 對(duì)象是一種被稱為管理器的構(gòu)件,負(fù)責(zé)保持資源的完整性o 在對(duì)象和對(duì)象之間,通過(guò)函數(shù)調(diào)用和過(guò)程調(diào)用來(lái)進(jìn)行交互3.4 面向?qū)ο篌w系結(jié)構(gòu)風(fēng)格o 面向?qū)ο箫L(fēng)格具有以下優(yōu)點(diǎn):n 一個(gè)對(duì)象對(duì)外界隱藏了自己的詳細(xì)信息,改變一個(gè)

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

9、 構(gòu)件不再直接調(diào)用過(guò)程,而是聲明事件o 系統(tǒng)其它構(gòu)件的過(guò)程可以在這些事件中進(jìn)行注冊(cè),當(dāng)觸發(fā)一個(gè)事件時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用在這個(gè)事件中注冊(cè)的所有過(guò)程3.5 事件驅(qū)動(dòng)體系結(jié)構(gòu)風(fēng)格o 事件驅(qū)動(dòng)系統(tǒng)的構(gòu)件提供了一個(gè)過(guò)程集合和一組事件o 過(guò)程可以使用顯示方法進(jìn)行調(diào)用,同時(shí),也可以由構(gòu)件在系統(tǒng)事件中注冊(cè)o 在消息機(jī)制的控制下,系統(tǒng)作為一個(gè)整體與外界環(huán)境進(jìn)行交互o 事件驅(qū)動(dòng)體系結(jié)構(gòu)風(fēng)格具有以下優(yōu)點(diǎn):3.5 事件驅(qū)動(dòng)體系結(jié)構(gòu)風(fēng)格n 事件聲明者不需要知道哪些構(gòu)件會(huì)響應(yīng)事件,因此,不能確定構(gòu)件處理的先后順序,甚至不能確定事件會(huì)引發(fā)哪些過(guò)程調(diào)用n 提高了軟件復(fù)用能力,只要在系統(tǒng)事件中注冊(cè)構(gòu)件的過(guò)程,就可以將該構(gòu)件集成到

10、系統(tǒng)中n 便于系統(tǒng)升級(jí),只要構(gòu)件名和事件中所注冊(cè)的過(guò)程名保持不變,原有構(gòu)件就可以被新構(gòu)件所替代o 事件驅(qū)動(dòng)體系結(jié)構(gòu)風(fēng)格也存在著一些問(wèn)題:3.5 事件驅(qū)動(dòng)體系結(jié)構(gòu)風(fēng)格n 構(gòu)件放棄了對(duì)計(jì)算的控制權(quán),完全由系統(tǒng)來(lái)決定,當(dāng)構(gòu)件觸發(fā)一個(gè)事件時(shí),它不知道其余構(gòu)件是如何對(duì)其進(jìn)行處理的n 存在數(shù)據(jù)傳輸問(wèn)題,數(shù)據(jù)可以通過(guò)事件來(lái)進(jìn)行傳輸,但是,在大多數(shù)情況下,系統(tǒng)本身需要維護(hù)一定的存儲(chǔ)空間,這將對(duì)系統(tǒng)的邏輯功能和資源管理有一定影響3.6 分層體系結(jié)構(gòu)風(fēng)格o 在分層風(fēng)格中,系統(tǒng)將劃分為一個(gè)層次結(jié)構(gòu)o 每一層都具有高度的內(nèi)聚性,包含抽象程度一致的各種構(gòu)件,支持信息隱藏o 分層有助于將復(fù)雜系統(tǒng)劃分為獨(dú)立的模塊,從而簡(jiǎn)化

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

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

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

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

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

16、連接件底部相連,構(gòu)件底部與連接件頂部相連,構(gòu)件與構(gòu)件之間不允許直接相連n 與某一個(gè)連接件相關(guān)聯(lián)的構(gòu)件和連接件的數(shù)目沒(méi)有限制3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風(fēng)格o 數(shù)據(jù)共享風(fēng)格也稱為倉(cāng)庫(kù)風(fēng)格,有兩種不同類型的軟件元素:n 一種是中央數(shù)據(jù)單元,也稱為資源庫(kù),用于表示系統(tǒng)的當(dāng)前狀態(tài),另一種是相互依賴的構(gòu)件組o 中央數(shù)據(jù)單元和構(gòu)件之間可以進(jìn)行信息交換,這是數(shù)據(jù)共享體系結(jié)構(gòu)的技術(shù)實(shí)現(xiàn)基礎(chǔ)o 根據(jù)所使用的控制策略不同,數(shù)據(jù)共享體系結(jié)構(gòu)可以分為兩種類型:n 一種是傳統(tǒng)的數(shù)據(jù)庫(kù),另一種是黑板3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風(fēng)格o 如果由輸入流中的事件來(lái)驅(qū)動(dòng)系統(tǒng)進(jìn)行信息處理,把執(zhí)行結(jié)果存儲(chǔ)到中央數(shù)據(jù)單元中,則這個(gè)系統(tǒng)就是數(shù)據(jù)庫(kù)

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

18、變化,中央數(shù)據(jù)單元是整個(gè)系統(tǒng)的核心部分,反映了業(yè)務(wù)邏輯的求解狀態(tài),在多個(gè)知識(shí)源之間,中央數(shù)據(jù)單元起到了通信機(jī)制的作用3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風(fēng)格n 控制單元是由中央數(shù)據(jù)單元的狀態(tài)來(lái)驅(qū)動(dòng)的,知識(shí)源的執(zhí)行導(dǎo)致了中央數(shù)據(jù)單元的狀態(tài)發(fā)生變化,控制單元根據(jù)預(yù)先定義的策略,啟動(dòng)相應(yīng)的知識(shí)源,以完成系統(tǒng)的控制任務(wù)o 黑板體系結(jié)構(gòu)有以下優(yōu)點(diǎn):n 便于多客戶共享大量數(shù)據(jù),而不必關(guān)心數(shù)據(jù)是何時(shí)產(chǎn)生的、由誰(shuí)提供的以及通過(guò)何種途徑來(lái)提供n 便于將構(gòu)件作為知識(shí)源添加到系統(tǒng)中來(lái)3.8 數(shù)據(jù)共享體系結(jié)構(gòu)風(fēng)格o 黑板體系結(jié)構(gòu)風(fēng)格也存在著一些問(wèn)題:n 對(duì)共享數(shù)據(jù)結(jié)構(gòu),不同知識(shí)源要達(dá)成一致,因?yàn)橐紤]各個(gè)知識(shí)源的調(diào)用問(wèn)題,這會(huì)使

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

20、硬件進(jìn)行仿真o 解釋器體系結(jié)構(gòu)風(fēng)格也存在著一些問(wèn)題:n 由于使用了特定語(yǔ)言和自定義操作規(guī)則,因此增加了系統(tǒng)運(yùn)行的開(kāi)銷n 解釋器系統(tǒng)難以設(shè)計(jì)和測(cè)試3.9 解釋器體系結(jié)構(gòu)風(fēng)格o 解釋器體系結(jié)構(gòu)有許多現(xiàn)實(shí)應(yīng)用,可以將其作為整個(gè)軟件系統(tǒng)的一個(gè)組成部分,以下是一些具體的應(yīng)用實(shí)例:n Java和Smalltalk的編譯器n 基于規(guī)則的系統(tǒng),諸如:專家系統(tǒng)領(lǐng)域中的Prolog語(yǔ)言n 腳本語(yǔ)言,例如:Awk和Perl3.10 反饋控制環(huán)體系結(jié)構(gòu)風(fēng)格o 反饋控制環(huán)是一種特定的數(shù)據(jù)流結(jié)構(gòu),傳統(tǒng)數(shù)據(jù)流結(jié)構(gòu)是線性的,控制連續(xù)循環(huán)過(guò)程的體系結(jié)構(gòu)應(yīng)該是環(huán)形的o 在反饋控制環(huán)系統(tǒng)中,主要包括以下3個(gè)部分:n 過(guò)程,指操縱過(guò)

21、程變量的相關(guān)機(jī)制n 數(shù)據(jù)元素,指連續(xù)更新的過(guò)程變量,包括:輸入變量、控制變量、操縱變量和相關(guān)參考值3.10 反饋控制環(huán)體系結(jié)構(gòu)風(fēng)格n 控制器,通過(guò)控制規(guī)則來(lái)修正變量,收集過(guò)程的實(shí)際狀態(tài)和目標(biāo)狀態(tài),調(diào)節(jié)變量以驅(qū)動(dòng)實(shí)際狀態(tài)朝目標(biāo)狀態(tài)前進(jìn)o 反饋控制環(huán)結(jié)構(gòu)能夠處理復(fù)雜的自適應(yīng)問(wèn)題,機(jī)器學(xué)習(xí)就是一個(gè)典型的實(shí)例3.10 反饋控制環(huán)體系結(jié)構(gòu)風(fēng)格o 將訓(xùn)練樣本輸入到學(xué)習(xí)構(gòu)件中,作為被查詢的基本數(shù)據(jù)和知識(shí)源o 然后輸入真實(shí)數(shù)據(jù),經(jīng)過(guò)學(xué)習(xí)構(gòu)件的分析和計(jì)算,輸出學(xué)習(xí)結(jié)果o 檢測(cè)構(gòu)件要檢查學(xué)習(xí)結(jié)果與預(yù)期結(jié)果之間的差異,并反饋給學(xué)習(xí)構(gòu)件3.11 客戶機(jī)/服務(wù)器體系結(jié)構(gòu)風(fēng)格o 在集中計(jì)算時(shí)代,主要采用大型機(jī)/小型機(jī)模型

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

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

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

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

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

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

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

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

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

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

32、下所示,在這種情況下,客戶機(jī)的工作負(fù)擔(dān)很重,類似于兩層C/S結(jié)構(gòu)3.11 客戶機(jī)/服務(wù)器體系結(jié)構(gòu)風(fēng)格n 如果將表示層和功能層都放在客戶機(jī)上,其配置方案如下所示,在這種情況下,客戶機(jī)的工作負(fù)擔(dān)很重,類似于兩層C/S結(jié)構(gòu)3.11 客戶機(jī)/服務(wù)器體系結(jié)構(gòu)風(fēng)格o 與兩層C/S結(jié)構(gòu)相比,三層C/S體系結(jié)構(gòu)具有以下優(yōu)點(diǎn):n 如果合理地劃分三層結(jié)構(gòu)的功能,可以使系統(tǒng)的邏輯結(jié)構(gòu)更加清晰,提高了軟件的可維護(hù)性和可擴(kuò)充性n 在實(shí)現(xiàn)三層C/S結(jié)構(gòu)時(shí),可以更有效地選擇運(yùn)行平臺(tái)和硬件環(huán)境,從而使每一層都具有清晰的邏輯結(jié)構(gòu)、良好的負(fù)荷處理能力和較好的開(kāi)放性,清晰和合理地劃分三層C/S結(jié)構(gòu),使各層之間保持相互獨(dú)立,可以降低

33、每一層應(yīng)用的修改難度3.11 客戶機(jī)/服務(wù)器體系結(jié)構(gòu)風(fēng)格n 在三層C/S結(jié)構(gòu)中,可以分別選擇合適的編程語(yǔ)言來(lái)并行地開(kāi)發(fā)每一層的邏輯功能,以提高開(kāi)發(fā)效率,同時(shí),每一層的維護(hù)也更加容易n 系統(tǒng)具有較高的安全性,可以充分利用功能層來(lái)將數(shù)據(jù)層和表示層分隔開(kāi)來(lái),使未授權(quán)用戶難以繞過(guò)功能層,無(wú)法利用數(shù)據(jù)庫(kù)工具和黑客手段來(lái)非法訪問(wèn)數(shù)據(jù)層,從而保證了中心數(shù)據(jù)庫(kù)的安全性,整個(gè)系統(tǒng)也更加便于控制,管理層次也更加合理3.11 客戶機(jī)/服務(wù)器體系結(jié)構(gòu)風(fēng)格o 在實(shí)現(xiàn)三層C/S結(jié)構(gòu)時(shí),需要注意以下幾個(gè)問(wèn)題:n 如果各層之間的通信效率不高,即使每一層的硬件配置都很高,系統(tǒng)的整體性能也不會(huì)太高n 必須慎重考慮三層之間的通信方

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

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

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

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

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

39、屏蔽實(shí)現(xiàn)方式、對(duì)象狀態(tài)、通信機(jī)制和開(kāi)發(fā)技術(shù)之間的差異3.13 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)風(fēng)格3.13 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)風(fēng)格o 在客戶端,ORB定義了一個(gè)動(dòng)態(tài)調(diào)用接口(Dynamic Invocation Interface,DII),以API的形式出現(xiàn),用來(lái)發(fā)送操作請(qǐng)求,提供了動(dòng)態(tài)調(diào)用方法o 在服務(wù)器端,OA利用動(dòng)態(tài)框架接口(Dynamic Skeleton Interface,DSI)來(lái)傳輸操作請(qǐng)求,提供了動(dòng)態(tài)實(shí)現(xiàn)方法o 接口定義語(yǔ)言(Interface Definition Language,IDL)用來(lái)定義客戶端和服務(wù)器之間的靜態(tài)接口3.13 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)風(fēng)格o IDL

40、不是編程語(yǔ)言,它是CORBA規(guī)范的一種中性定義語(yǔ)言,用于描述對(duì)象接口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 公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)風(fēng)格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來(lái)傳輸ORB之間的操作請(qǐng)求和相關(guān)參數(shù)3.1

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

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

43、個(gè)具有不同層次功能和抽象級(jí)別的構(gòu)件組成o 如果線索之間是相互獨(dú)立的,即不同線索中的構(gòu)件不存在調(diào)用關(guān)系,那么這種結(jié)構(gòu)就是完全正交體系結(jié)構(gòu)o 在同一層次上,各個(gè)線索的構(gòu)件具有相同的抽象級(jí)別3.14 正交體系結(jié)構(gòu)風(fēng)格o 在正交體系結(jié)構(gòu)中,有一個(gè)公共的頂層,用于觸發(fā)各條線索運(yùn)行,還有一個(gè)公共的底層,包含了各條線索需要的數(shù)據(jù)3.14 正交體系結(jié)構(gòu)風(fēng)格o 正交體系結(jié)構(gòu)具有以下特征:n 正交體系結(jié)構(gòu)由完成不同功能的n(n1)個(gè)線索(子系統(tǒng))組成n 線索之間是相互獨(dú)立的,系統(tǒng)的某一變動(dòng)僅涉及一條線索,而不會(huì)影響到其它線索n 系統(tǒng)具有m(m1)個(gè)不同抽象級(jí)別的層次n 具有一個(gè)驅(qū)動(dòng)線索運(yùn)行的公共頂層和一個(gè)存儲(chǔ)共享

44、數(shù)據(jù)的公共底層o 正交體系結(jié)構(gòu)具有以下優(yōu)點(diǎn):3.14 正交體系結(jié)構(gòu)風(fēng)格n 結(jié)構(gòu)清晰,線索與線索之間是獨(dú)立的,不進(jìn)行相互調(diào)用,構(gòu)件的位置可以清楚地說(shuō)明它所實(shí)現(xiàn)的抽象層次和擔(dān)負(fù)的功能n 便于修改和維護(hù),因?yàn)榫€索之間是相互獨(dú)立的,因此,某一條線索的修改不會(huì)影響到其它線索,當(dāng)需求發(fā)生變動(dòng)時(shí),可以將新需求分解為獨(dú)立的子需求,然后使用線索和構(gòu)件來(lái)實(shí)現(xiàn)每一個(gè)子需求n 易于重用,在同一應(yīng)用領(lǐng)域中,不同軟件系統(tǒng)往往具有相同的層次和線索,因此,可以共享同一個(gè)框架結(jié)構(gòu)3.15 基于層次消息總線的體系結(jié)構(gòu)風(fēng)格o 層次消息總線的理論基礎(chǔ)是消息驅(qū)動(dòng)的編程方法和計(jì)算機(jī)硬件總線概念o 計(jì)算機(jī)硬件總線的概念為層次消息總線體系結(jié)

45、構(gòu)的設(shè)計(jì)提供了很好的借鑒和啟示o 構(gòu)件之間是通過(guò)消息總線來(lái)進(jìn)行通信的,可以支持構(gòu)件的分布式存儲(chǔ)和并發(fā)運(yùn)行o 消息總線是系統(tǒng)的連接件,負(fù)責(zé)消息的分派、傳遞和過(guò)濾,并返回處理結(jié)果3.15 基于層次消息總線的體系結(jié)構(gòu)風(fēng)格o 構(gòu)件掛接在消息總線上,向總線登記自己所感興趣的消息類型o 在構(gòu)件之間,消息是唯一的通信方式n 構(gòu)件發(fā)出請(qǐng)求消息,然后總線把請(qǐng)求消息分派到系統(tǒng)中所有對(duì)此感興趣的構(gòu)件n 在接收到請(qǐng)求消息后,構(gòu)件將根據(jù)自身狀態(tài)對(duì)其進(jìn)行響應(yīng),并通過(guò)總線返回處理結(jié)果o 由于構(gòu)件是通過(guò)消息總線進(jìn)行連接的,不要求各個(gè)構(gòu)件具有相同的地址空間3.15 基于層次消息總線的體系結(jié)構(gòu)風(fēng)格o 復(fù)雜構(gòu)件分解為粒度更細(xì)的子構(gòu)

46、件,通過(guò)局部消息總線進(jìn)行連接,從而形成復(fù)合構(gòu)件o 如果子構(gòu)件仍然比較復(fù)雜,則可以進(jìn)一步分解,如此分解下去,系統(tǒng)將形成樹(shù)狀的拓?fù)浣Y(jié)構(gòu)o 葉結(jié)點(diǎn)是系統(tǒng)的原子構(gòu)件,不再包含子構(gòu)件o 原子構(gòu)件的設(shè)計(jì)可以采用不同的軟件體系結(jié)構(gòu)風(fēng)格3.15 基于層次消息總線的體系結(jié)構(gòu)風(fēng)格o 整個(gè)系統(tǒng)可以作為一個(gè)構(gòu)件,通過(guò)更高層次的消息總線集成到更大的應(yīng)用系統(tǒng)中o 在HMB體系結(jié)構(gòu)中,主要包括構(gòu)件和消息總線兩種軟件元素3.15 基于層次消息總線的體系結(jié)構(gòu)風(fēng)格nHMB構(gòu)件主要包括接口部分、行為部分和結(jié)構(gòu)部分:o 在接口部分,定義了構(gòu)件與外界之間交互的信息和承擔(dān)的責(zé)任,HMB構(gòu)件的接口是一種基于消息的互連接口3.15 基于層次

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

溫馨提示

  • 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)論