《軟件體系結(jié)構(gòu)》PPT課件.ppt

上傳人:za****8 文檔編號(hào):22630500 上傳時(shí)間:2021-05-29 格式:PPT 頁(yè)數(shù):256 大小:2.34MB
收藏 版權(quán)申訴 舉報(bào) 下載
《軟件體系結(jié)構(gòu)》PPT課件.ppt_第1頁(yè)
第1頁(yè) / 共256頁(yè)
《軟件體系結(jié)構(gòu)》PPT課件.ppt_第2頁(yè)
第2頁(yè) / 共256頁(yè)
《軟件體系結(jié)構(gòu)》PPT課件.ppt_第3頁(yè)
第3頁(yè) / 共256頁(yè)

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《《軟件體系結(jié)構(gòu)》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《軟件體系結(jié)構(gòu)》PPT課件.ppt(256頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、軟 件 體 系 結(jié) 構(gòu) 第一部分,天津大學(xué)計(jì)算機(jī)學(xué)院 饒國(guó)政,課 程 內(nèi) 容, 軟件危機(jī) 軟件體系結(jié)構(gòu)概念 軟件體系結(jié)構(gòu)模式 體系結(jié)構(gòu)的設(shè)計(jì)模式 基礎(chǔ)結(jié)構(gòu)模式 軟件體系結(jié)構(gòu)的其它研究領(lǐng)域,,,第一章 軟件危機(jī),軟件 軟件的發(fā)展階段 軟件危機(jī) 軟件生命周期,軟件,軟件程序、數(shù)據(jù)和相關(guān)文檔的完整集合 軟件的特點(diǎn): 軟件是一個(gè)邏輯實(shí)體,而非物理實(shí)體; 軟件是人類抽象思維的產(chǎn)物; 開發(fā)過程沒有明顯的制作過程; 生產(chǎn)成本隨著軟件的復(fù)雜程度急劇增加(指數(shù)級(jí)); 容易復(fù)制、傳播; 維護(hù)工作復(fù)雜。,軟件的發(fā)展階段,三個(gè)發(fā)展階段 程序設(shè)計(jì)階段(5060年代中期) 程序系統(tǒng)階段(60中期70年代中期) 軟件工程階

2、段(70年代中期以來),軟件危機(jī), 軟件危機(jī)的表現(xiàn) 軟件成本估計(jì)不準(zhǔn)確 隨著軟件規(guī)模增長(zhǎng),軟件開發(fā)成本往往成指數(shù)級(jí)增長(zhǎng)。, 開發(fā)進(jìn)度難以控制 由于軟件是邏輯、智力產(chǎn)品,軟件的開發(fā)需建立龐大的邏輯體系,這是與其他產(chǎn)品的生產(chǎn)不一樣的。 在軟件開發(fā)過程中,用戶需求變化等各種意想不到的情況層出不窮,令軟件開發(fā)過程很難保證按預(yù)定的計(jì)劃實(shí)現(xiàn),給項(xiàng)目計(jì)劃和論證工作帶來了很大的困難。 盲目增加軟件開發(fā)人員并不能成比例地提高軟件開發(fā)能力。相反,隨著人員數(shù)量的增加,人員的組織、協(xié)調(diào)、通信、培訓(xùn)和管理等方面的問題將更為嚴(yán)重。, 軟件質(zhì)量差 軟件項(xiàng)目即使能按預(yù)定日期完成,結(jié)果卻不盡人意。1965年至1970年,

3、美國(guó)范登堡基地發(fā)射火箭多次失敗,絕大部分故障是由應(yīng)用程序錯(cuò)誤造成的。 在“軟件作坊”里,由于缺乏工程化思想的指導(dǎo),程序員幾乎總是習(xí)慣性地以自己的想法去代替用戶對(duì)軟件的需求,軟件設(shè)計(jì)帶有隨意性,很多功能只是程序員的“一廂情愿”而已,這是造成軟件不能令人滿意的重要因素。, 軟件開發(fā)缺乏適當(dāng)?shù)奈臋n資料 文檔資料對(duì)于軟件開發(fā)和軟件維護(hù)是至關(guān)重要的。, 軟件維護(hù)困難 由于在軟件設(shè)計(jì)和開發(fā)過程中,沒有嚴(yán)格遵循軟件開發(fā)標(biāo)準(zhǔn),各種隨意性很大,沒有完整的真實(shí)反映系統(tǒng)狀況的記錄文檔,給軟件維護(hù)造成了巨大的困難。 特別是在軟件使用過程中,原來的開發(fā)人員可能因各種原因已經(jīng)離開原來的開發(fā)組織,使得軟件幾乎不可維

4、護(hù)。 有資料表明,工業(yè)界為維護(hù)軟件支付的費(fèi)用占全部硬件和軟件費(fèi)用的40%-75%。, 如何克服軟件危機(jī),人們面臨的不光是技術(shù)問題,更重要的是管理問題。管理不善必然導(dǎo)致失敗 。 要提高軟件開發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用工程化的開發(fā)方法與工業(yè)化的生產(chǎn)技術(shù)。 軟件工程,軟件生命周期,軟件從孕育、誕生、成長(zhǎng)、衰亡的生存過程,稱為軟件的生命周期。 六個(gè)步驟: 制定計(jì)劃:?jiǎn)栴}分析、可行性研究 需求分析 軟件系統(tǒng)設(shè)計(jì):總體設(shè)計(jì)、詳細(xì)設(shè)計(jì) 軟件編碼 軟件測(cè)試 軟件維護(hù),第二章 軟件體系結(jié)構(gòu),基本概念 重要性 組件與連接器 風(fēng)格與模式 非功能屬性,,第一節(jié) 基本概念,定義還沒有達(dá)到共識(shí)。 以下幾個(gè)有

5、助于我們的理解 軟件體系結(jié)構(gòu)是一組具有一定形式的結(jié)構(gòu)化元素(設(shè)計(jì)元素)組成。 軟件體系結(jié)構(gòu)超越了計(jì)算過程中的算法設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)。 四視圖觀點(diǎn):概念上的體系結(jié)構(gòu)、模塊體系結(jié)構(gòu)、代碼體系結(jié)構(gòu)和運(yùn)行體系結(jié)構(gòu)。 四模式觀點(diǎn):概念模式、框架模式、動(dòng)態(tài)模式、進(jìn)程模式,,,,所以: 軟件體系結(jié)構(gòu)對(duì)軟件系統(tǒng)的構(gòu)造起著指導(dǎo)性作用。 它回避了軟件系統(tǒng)的功能細(xì)節(jié),著重于討論軟件系統(tǒng)的總體構(gòu)架。 它關(guān)注的是系統(tǒng)結(jié)構(gòu)及其組成組件。,,修正后的軟件生命周期: 需求分析 體系結(jié)構(gòu)設(shè)計(jì):選擇模式,選擇組件,組件之間的關(guān)系以及它們之間的約束。以此為框架,為詳細(xì)設(shè)計(jì)奠定基礎(chǔ)。原為“總體設(shè)計(jì)” 詳細(xì)設(shè)計(jì) 實(shí)現(xiàn) 維護(hù),第二節(jié) 重要性

6、,良好的體系結(jié)構(gòu)設(shè)計(jì)是決定軟件系統(tǒng)成功的重要因素。 早期的教訓(xùn):IBM OS/360(1963-1966),軟件體系結(jié)構(gòu)的指導(dǎo)意義,,作為軟件開發(fā)的基本指導(dǎo)方針 整個(gè)軟件設(shè)計(jì)的開端,決定著開發(fā)工作的整體結(jié)構(gòu),具有更大的決策性和約束性。 體系結(jié)構(gòu)給予后繼開發(fā)人員一個(gè)可實(shí)現(xiàn)的指導(dǎo)和約束。,軟件體系結(jié)構(gòu)的指導(dǎo)意義,,對(duì)軟件質(zhì)量保證具有重大的影響 支配了從開發(fā)到維護(hù)項(xiàng)目的團(tuán)隊(duì)組織結(jié)構(gòu) 對(duì)軟件的修改、變動(dòng)提供了保證和約束。 提供了軟件的可重用性,為什么體系結(jié)構(gòu)沒能早日引進(jìn)來呢?,,早期軟件開發(fā)被認(rèn)為是個(gè)人創(chuàng)造力的產(chǎn)物,靈活性很高,從而導(dǎo)致開發(fā)者無規(guī)可循。 早期軟件開發(fā)的規(guī)模較小,開發(fā)通常由個(gè)人或者小的團(tuán)

7、隊(duì)來完成,團(tuán)隊(duì)易于溝通交流,體系結(jié)構(gòu)的要求不迫切。 軟件產(chǎn)品提交給用戶的為編譯后的軟件,不能看到源代碼,其他人難以分析其結(jié)構(gòu),阻礙了技術(shù)的傳播。,,第三節(jié) 組件和連接器,現(xiàn)代軟件系統(tǒng)通常采用組件(構(gòu)件)的開發(fā)方法 組件:系統(tǒng)中的結(jié)構(gòu)塊,是軟件功能設(shè)計(jì)和實(shí)現(xiàn)的承載體。 連接器:組件之間進(jìn)行連接的組件。 軟件體系結(jié)構(gòu)的兩大構(gòu)成:組件、連接器,,組件,組件:系統(tǒng)中的結(jié)構(gòu)塊,是軟件功能設(shè)計(jì)和實(shí)現(xiàn)的承載體。 組件的表達(dá)形式: 組件是由封裝的內(nèi)部數(shù)據(jù)結(jié)構(gòu)及其操作,以及對(duì)外提供的操作方法集合組成。例:公安局,,,,,,,,組件,接口,組件的特性(略),連接器,連接:組件之間建立和維護(hù)行為關(guān)聯(lián)及信息傳遞的途徑

8、。 連接包含兩方面: 物質(zhì)基礎(chǔ):連接發(fā)生和維持的機(jī)制; 規(guī)約協(xié)議:連接能夠正確地、無二義、無沖突地進(jìn)行信息交換的保證。 例:電源轉(zhuǎn)接板,簡(jiǎn)單連接:兩個(gè)組件直接連接,復(fù)雜連接:專門的連接組件(連接器),,,,,,連接器,,,,A組件,A組件,B組件,,B組件,連接的特性(略):方向性、激發(fā)、響應(yīng)特性 連接的匹配(連接器如何工作的呢): 修改組件:有源代碼 進(jìn)行包裝:常用方法 加入中介:比較復(fù)雜或要求靈活性的 握手:經(jīng)常變動(dòng)的系統(tǒng),第四節(jié) 風(fēng)格和模式,軟件設(shè)計(jì)人員在長(zhǎng)期開發(fā)某種類型軟件過程中摸索到該類軟件的一些規(guī)律性的東西,經(jīng)過提煉總結(jié),得到了具有普遍性的構(gòu)建模式或稱為構(gòu)建風(fēng)格。 本課程將討論學(xué)習(xí)

9、應(yīng)用較廣泛的體系結(jié)構(gòu)風(fēng)格或模式。,使用軟件體系結(jié)構(gòu)的風(fēng)格和模式的意義: 便于設(shè)計(jì)開發(fā)者之間互相交流 促進(jìn)了設(shè)計(jì)的復(fù)用 也促進(jìn)了代碼的復(fù)用 使用標(biāo)準(zhǔn)的風(fēng)格和模式有利于支持互操作 所以:有利于交流和理解; 有利于提高軟件設(shè)計(jì)實(shí)施的效率和質(zhì)量; 風(fēng)格和模式的完善和系統(tǒng)化,也標(biāo)志軟件體系結(jié)構(gòu)的成熟。,,我們對(duì)風(fēng)格、模式和框架不加區(qū)分。 我們講解側(cè)重于模式。 模式分為三個(gè)層次: 系統(tǒng)體系結(jié)構(gòu)模式(第三章) 體系結(jié)構(gòu)的設(shè)計(jì)模式(第四章) 基礎(chǔ)結(jié)構(gòu)模式(第五章),系統(tǒng)體系結(jié)構(gòu)模式,體系結(jié)構(gòu)的設(shè)計(jì)模式,基礎(chǔ)結(jié)構(gòu)模式,范圍最大,層次最高,中等規(guī)模,獨(dú)立于特定語言,最低層、最基礎(chǔ)的模式,和特定語言有關(guān),系

10、統(tǒng)體系結(jié)構(gòu)模式,體系結(jié)構(gòu)的設(shè)計(jì)模式,基礎(chǔ)結(jié)構(gòu)模式,卷一、卷二、卷三,參考書,Robert C. Martin 清華大學(xué)出版社,第五節(jié) 非功能屬性,功能屬性 非功能屬性: 易修改性: 可維護(hù)性 可擴(kuò)展性 結(jié)構(gòu)重組,可移植性: 硬件平臺(tái)、 操作系統(tǒng)、 用戶界面、 編程語言 互操作性: 軟件需要經(jīng)常與其它系統(tǒng)和周圍的硬軟件軟件入口,可靠性 容錯(cuò)能力 健壯性 效率 響應(yīng)時(shí)間、吞吐率、存儲(chǔ)空間,可重用性 重用現(xiàn)有的組件和重用以前的項(xiàng)目、商業(yè)庫(kù)、設(shè)計(jì)分析、設(shè)計(jì)說明。 為重用進(jìn)行軟件開發(fā) 可測(cè)試性 軟件系統(tǒng)變的越來越大,越來越復(fù)雜,軟件測(cè)試工作也變得越來越困難和昂貴。,第三章 系統(tǒng)體系結(jié)構(gòu)模式,十種模式:

11、管道過濾器、 分層、 知識(shí)庫(kù)(黑板)、 MVC、 PAC、,客戶與服務(wù)器、 COM/DCOM/COM+、 代理者、 微核、 映像、 異構(gòu),,每種體系結(jié)構(gòu)的講解內(nèi)容,概述 結(jié)構(gòu):靜態(tài) 動(dòng)態(tài)特性 實(shí)現(xiàn) 特性 變體 優(yōu)缺點(diǎn),Google八周歲了!,第1節(jié) 管道過濾器,概述 結(jié)構(gòu) 動(dòng)態(tài)特性 實(shí)現(xiàn) 特性 變體 優(yōu)缺點(diǎn),,1 概述,數(shù)據(jù)流處理系統(tǒng) 示例:UNIX操作系統(tǒng)的管道過濾器 示例:語言編譯器,,掃描器,語法分析,編譯器,語義分析,調(diào)用,輸入,代碼生成,,,,,,2 靜態(tài)結(jié)構(gòu),過濾器組件,過濾器組件,,,管道,過濾器組件,,,管道,輸入,輸入,輸出,輸出,數(shù)據(jù)源,輸出,數(shù)據(jù)池,過濾器組件,3種激活方

12、式 (1)后續(xù)的組件從過濾器中拉出數(shù)據(jù); (2)前面的組件向過濾器推入新數(shù)據(jù); (3)過濾器處于活躍狀態(tài),以循環(huán)的方式,不斷地從前面的組件中拉出數(shù)據(jù),并向后續(xù)的組件推入數(shù)據(jù)。 前兩種稱為被動(dòng)過濾器;后一種稱為主動(dòng)過濾器,,數(shù)據(jù)源,(1)主動(dòng):將數(shù)據(jù)推入過濾器 (2)被動(dòng):在過濾器需要時(shí)被動(dòng)提供數(shù)據(jù),,數(shù)據(jù)池,(1)主動(dòng):從過濾器拉出來數(shù)據(jù) (2)被動(dòng):在過濾器把結(jié)果推入或?qū)懭?,管道組件,管道是過濾器之間的連接。 管道:(1)對(duì)被動(dòng)過濾器的直接調(diào)用。 (2)兩個(gè)主動(dòng)過濾器進(jìn)行同步,,一般結(jié)構(gòu),過濾器,過濾器,,管道過濾器結(jié)構(gòu),過濾器,管道,數(shù)據(jù)流,數(shù)據(jù)源,數(shù)據(jù)池,過濾器,,,,,,,,,

13、,,,,3 動(dòng)態(tài)特性,,,4 實(shí)現(xiàn),(1)把系統(tǒng)任務(wù)分成幾個(gè)獨(dú)立的處理階段。 (2)定義沿著每個(gè)管道傳輸?shù)臄?shù)據(jù)格式。 (3)決定管道的連接。 (4)設(shè)計(jì)和實(shí)現(xiàn)過濾器。 (5)設(shè)計(jì)出錯(cuò)處理。 (6)建立處理流水線。,應(yīng)用舉例,搜索引擎 快速全面的原因 抓取、分詞、索引、頁(yè)面等級(jí)評(píng)定、查詢,,,,,5 特 性,(1)每個(gè)過濾器都是獨(dú)立的整體,相互之間的狀態(tài)互不影響。 (2)過濾器并不知道它的上游和下游連接的過濾器的特性。 (3)運(yùn)行結(jié)果的正確性不依賴于各個(gè)過濾器運(yùn)行的次序。,6 變 體,(1)限制過濾器為單輸入、單輸出:從拓?fù)浣Y(jié)構(gòu)上看,為線性,過濾器組件,過濾器組件,,,管道,過濾器組件,,,管道

14、,輸入,輸入,輸出,輸出,輸出,(2)如果允許過濾器的輸入或輸出多于一個(gè):造成反饋回路(拓?fù)浣Y(jié)構(gòu):有向圖)。需要保證系統(tǒng)可終止。 (3)有名管道(文件),過濾器,過濾器,,管道過濾器結(jié)構(gòu),過濾器,管道,數(shù)據(jù)流,數(shù)據(jù)源,數(shù)據(jù)池,過濾器,,,,,,,,,,,,7 優(yōu)缺點(diǎn),1、優(yōu)點(diǎn) 易于重組,增加了系統(tǒng)的靈活性。 易于更新、升級(jí)和維護(hù) 易于重用。 并行處理提高了系統(tǒng)的效率。? 快速原型系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn) 拓?fù)浣Y(jié)構(gòu)清晰,方便性能分析。,優(yōu)缺點(diǎn),2、缺點(diǎn) 會(huì)導(dǎo)致數(shù)據(jù)的批處理方式。 不適合處理交互式應(yīng)用要求。 增加了系統(tǒng)的開銷和復(fù)雜性。 共享狀態(tài)信息代價(jià)高且不靈活。 用并行處理來獲得高效率是不可行的。? 難

15、以進(jìn)行錯(cuò)誤處理。,第2節(jié) 分層結(jié)構(gòu),1、概述 復(fù)雜系統(tǒng)的解決方法之一:層次化 軟件系統(tǒng)的發(fā)展過程就是不斷分層的過程 層次系統(tǒng)組織成一個(gè)層次結(jié)構(gòu),每一層為上層服務(wù),并作為下層客戶。,網(wǎng)絡(luò),,操作系統(tǒng)(Windows為例),,數(shù)據(jù)庫(kù),,2 分層的靜態(tài)結(jié)構(gòu),系統(tǒng)的每一層向它的上一層提供服務(wù),同時(shí)又作為下一層的客戶,調(diào)用下層提供的功能函數(shù)。 簡(jiǎn)單分層的結(jié)構(gòu)(3層) 核心層 功能層 應(yīng)用層,,,3 分層的方案,簡(jiǎn)單、直觀 最主要特征:N層的服務(wù)只能被N+1層調(diào)用,各層之間沒有更多的依賴性。,,,組件3,組件3,,,組件2,組件2,,,組件1,組件1,組件1,,,,,,,4 分層的動(dòng)態(tài)特性,一、自頂

16、向下:請(qǐng)求,,二、自底向上:通知,,三、部分請(qǐng)求,,四、部分通知,,五:協(xié)議堆棧,5 分層結(jié)構(gòu)的實(shí)現(xiàn),(1)為便于分層,定義抽象準(zhǔn)則 (2)根據(jù)抽象準(zhǔn)則定義抽象層數(shù) (3)給每一層命名并指定它們的任務(wù) (4)指定服務(wù),,,(5)為每個(gè)層定義接口:黑盒 (6)構(gòu)建獨(dú)立的層 (7)確定相鄰層間的通信:推/拉模式 (8)降低相鄰層的耦合程度 (9)設(shè)計(jì)錯(cuò)誤處理策略:近可能在低層,6 分層的應(yīng)用實(shí)例,通信協(xié)議TCP/IP,虛擬機(jī),API棧,,J2EE的結(jié)構(gòu)圖(.NET結(jié)構(gòu)類似),J2EE Blueprints,Sun公司的J2EE開發(fā)技術(shù)的演示 網(wǎng)上寵物商店:不斷更新展示最新的Java開發(fā)技術(shù) 三層結(jié)

17、構(gòu) 表示層 業(yè)務(wù)邏輯層 數(shù)據(jù)層(持久層),,使用界面和功能介紹 寵物展示 購(gòu)物車 用戶登錄 配貨處理 Ajax支持,,,Google Map,,,,,,,,表示層組件,,,,,業(yè)務(wù)層組件,,,,,數(shù)據(jù)層組件,數(shù)據(jù)層組件,,,表示層,業(yè)務(wù)層,數(shù)據(jù)層,,,,,JSP、HTML,,,,,Session Bean,,,,,Entity Bean,Entity Bean,,,表示層,業(yè)務(wù)層,數(shù)據(jù)層,7 分層結(jié)構(gòu)的變體,(1)松弛(寬松)分層結(jié)構(gòu) 定義:有些層可以直接使用下面幾層的服務(wù),而不僅是相鄰層的服務(wù)。 特點(diǎn):增加了靈活性和效率,但卻犧牲了可維護(hù)性。 應(yīng)用:常用于系統(tǒng)軟件,較少用于應(yīng)用軟件。,(2)

18、通過繼承的分層結(jié)構(gòu) 定義:低層作為基類,較高的層通過繼承來使用低層的服務(wù)。 優(yōu)點(diǎn):高層可以根據(jù)需要修改低層的服務(wù)。 缺點(diǎn):繼承關(guān)系把高層和低層緊密聯(lián)系在一起。 (違反了“合成/聚合復(fù)用原則“),8 分層結(jié)構(gòu)的優(yōu)缺點(diǎn),優(yōu)點(diǎn): (1)層的重用 (2)對(duì)軟件標(biāo)準(zhǔn)化的支持 (3)局部依賴性 (4)可替換性,缺點(diǎn): (1)更改行為的連鎖性 (2)運(yùn)行效率低 (3)可能增加許多不必要的工作:(可能低層執(zhí)行了許多高層不需要的重復(fù)性工作) (4)很難確定分層的準(zhǔn)確程度,第三節(jié) 知識(shí)庫(kù)(黑板)結(jié)構(gòu),1 概述,,(1)適合無確定性求解策略的問題 難以用數(shù)學(xué)精確處理的問題:醫(yī)療、地震、天氣 人工智能:專家系統(tǒng)、模式

19、識(shí)別、智能機(jī)器人 (2)黑板系統(tǒng)是知識(shí)庫(kù)系統(tǒng)的一種。 (3)示例: HEARSAY-II語音識(shí)別系統(tǒng) HASP潛艇探測(cè)系統(tǒng) CRYSALIS蛋白質(zhì)分子的三維結(jié)構(gòu),2 結(jié)構(gòu),,組成部分 (1)表示當(dāng)前狀態(tài)的中心公共數(shù)據(jù)結(jié)構(gòu):黑板 (2)知識(shí)庫(kù):是一些獨(dú)立的、分離的與應(yīng)用程序有關(guān)的知識(shí)庫(kù) (3)一組對(duì)公共數(shù)據(jù)結(jié)構(gòu)進(jìn)行協(xié)同操作的獨(dú)立程序集合 (4)推理機(jī):中心控制組件,對(duì)黑板的信息進(jìn)行評(píng)估,并協(xié)調(diào)各專用程序進(jìn)行工作。, 倉(cāng)庫(kù)系統(tǒng)及知識(shí)庫(kù),,,,初始狀態(tài),目標(biāo)狀態(tài),,中間狀態(tài),,中間狀態(tài),,推理,知識(shí)庫(kù),知識(shí)庫(kù),知識(shí)庫(kù),知識(shí)庫(kù),3 動(dòng)態(tài)特性,,(1)描述初始數(shù)據(jù)到黑板中 (2)啟動(dòng)控制組件的主循環(huán) (

20、3)控制組件調(diào)用nextsource()過程,選擇下一條知識(shí) (4)nextsource()通過檢測(cè)黑板確定哪些知識(shí)是可匹配的知識(shí)用知識(shí)的條件部分匹配黑板上的數(shù)據(jù),(續(xù)),(5)根據(jù)預(yù)先確定的控制策略進(jìn)行評(píng)估,在所有匹配的知識(shí)中選擇一條知識(shí)進(jìn)行操作 (6)根據(jù)該條知識(shí)的操作部分,更新黑板上數(shù)據(jù)的內(nèi)容 (7)控制策略判斷是否已達(dá)到系統(tǒng)終止條件,如果未達(dá)到,轉(zhuǎn)向步驟3 (8)終止,,,4 實(shí)現(xiàn),,(1)定義問題 (2)定義問題的解空間 (3)將求解過程分成幾個(gè)步驟 (1)定義如何將低級(jí)中間解轉(zhuǎn)換成更高等級(jí)解 (2 )定義如何進(jìn)行啟發(fā)性搜索 (3 )詳細(xì)指出修剪部分解空間的知識(shí)類型 (4 )將知識(shí)分

21、解成與一定子任務(wù)相關(guān)聯(lián)的專門知識(shí) (5 )定義黑板上的詞匯集,,(6 )設(shè)計(jì)系統(tǒng)的控制 (7 )實(shí)現(xiàn)知識(shí)庫(kù),,5 應(yīng)用實(shí)例,HEARSAYII 語音查詢,數(shù)據(jù)庫(kù) 類似于Google的語音搜索,6 優(yōu)缺點(diǎn),,優(yōu)點(diǎn): (1)可應(yīng)用于許多沒有確定解方法的問題 (2)支持可更改性和可維護(hù)性 (3)知識(shí)可重用 (4)支持容錯(cuò)性和健壯性,,,缺點(diǎn): (1)測(cè)試?yán)щy (2)不能保證最優(yōu)的求解方案 (3)效率低 (4)開發(fā)工作昂貴 (5)缺少對(duì)并行機(jī)制的支持,第四節(jié) MVC結(jié)構(gòu),1、概述,圖形用戶界面增強(qiáng)和用戶的交互性 用戶界面的問題: 用戶界面經(jīng)常需要變動(dòng) 不同的用戶對(duì)用戶界面的要求不同:熟練用戶和初級(jí)用戶

22、 同樣的數(shù)據(jù)需要不同的用戶界面 用戶界面和功能核心的關(guān)系,解決之道,不可取的方式:用戶界面和功能核心緊密結(jié)合 目標(biāo):用戶界面的易改動(dòng)性、功能核心的相對(duì)穩(wěn)定性 解決方案:MVC(模型視圖控制)結(jié)構(gòu),,MVC結(jié)構(gòu)首先應(yīng)用在Smalltalk環(huán)境。 目前廣泛應(yīng)用于圖形用戶界面和交互式系統(tǒng)。 比如:MFC、ET++、Java類庫(kù)、Spring、Struts等,2、MVC靜態(tài)結(jié)構(gòu),3個(gè)組成部分:模型、視圖、控制 模型:系統(tǒng)處理問題邏輯的內(nèi)在抽象。它封裝了問題的核心數(shù)據(jù),以及邏輯和功能的計(jì)算關(guān)系。內(nèi)在 視圖:把表示模型的數(shù)據(jù)和邏輯關(guān)系以及系統(tǒng)的狀態(tài)等信息以特定的方式顯示給用戶。外表 控制:處理用戶和應(yīng)用系

23、統(tǒng)的交互操作。,模型、視圖、控制的分離,使得一個(gè)模型可以具有多個(gè)顯示視圖。 模型變化的傳播機(jī)制:模型、視圖、控制保證一致性。,,,,MVC的幾個(gè)部分,,3 MVC的動(dòng)態(tài)特性,,4 MVC的設(shè)計(jì)實(shí)現(xiàn),1、分析應(yīng)用問題,將交互界面與核心功能分離 2、實(shí)現(xiàn)觀察器、模型;并實(shí)現(xiàn)它們之間的變更傳播機(jī)制(注冊(cè))。 class observer public: virtual void update() ;,,class Model public: Void attach(observer *s); Void detach(observer *s); Virtual void notify(); Priva

24、te: Collection registry; ;,,,Void Model::notify() Iterator iter(registry); While( iter.next() ) iter.curr()-update(); ,3、實(shí)現(xiàn)視圖,Class View : public observer Public: view (Model *m):myModel(m),myController(0) myModel -attach(this); virtual view() myModel -detach(this); virtual void update

25、() this-draw(); virtual void initialize() virtual void draw(); Void setModel(Model *m) myModel = m; Model *getModel() return myModel; Void setController(Controller *c)myController = c; Controller *getController() return myController; protected: Model *myModel; Controller *myController; ;

26、,,,,,4、實(shí)現(xiàn)控制器,Class Controller : public observer Public: Virtual void handleEvent(event *) Controller(view *v):myView(v) myModel = myView-getModel(); myModel -attach(this); virtual Controller() myModel -detach(this); virtual void update() Void setModel(Model *m) myModel = m; Model *getMod

27、el() return myModel; Void setView(View *c) myView = c; Controller *getView() return myView; protected: Model *myModel; Controller *myView; ;,,,,,,實(shí)例,,5 MVC的變體,1、將視圖和控制器合并在一個(gè)組件中(文檔視圖):典型案例為MFC,觀察者模式(Observer模式),,實(shí)例,,,,,,6 MVC的優(yōu)缺點(diǎn),優(yōu)點(diǎn): :同一模型可有多個(gè)視圖 :視圖同步化 :視圖與控制器可接插性 :模型的可移植性 :潛在的框架結(jié)構(gòu),缺點(diǎn): :

28、增加了系統(tǒng)結(jié)構(gòu)的復(fù)雜性 :視圖與控制器間的連接過于緊密 :數(shù)據(jù)訪問的效率 :使用現(xiàn)代用戶界面工具的困難,,第五節(jié) PAC結(jié)構(gòu),1、PAC結(jié)構(gòu)概述,表示抽象控制體系結(jié)構(gòu)是以相互協(xié)作的代理程序組成的層次形式來定義的交互式軟件體系結(jié)構(gòu)。 每個(gè)代理程序負(fù)責(zé)應(yīng)用程序的某一個(gè)特定功能方面,而且每個(gè)代理程序均由表示、抽象和控制3個(gè)組件。 PAC結(jié)構(gòu)把代理程序的人機(jī)交互部分與其功能內(nèi)核及其通信部分分隔開來。,,所以:在這種結(jié)構(gòu)中,是將系統(tǒng)功能進(jìn)行橫向分解。 分解為多個(gè)代理程序。 這些代理程序互相交互來完成軟件的功能。,2、PAC結(jié)構(gòu)的方案,樹狀的代理程序集合來建立交互式應(yīng)用程序 樹根部分頂層的代理程序 樹干部

29、分中層的代理程序 樹葉部分低層的代理程序 整個(gè)樹型圖反映了代理程序之間的傳遞關(guān)系。 每個(gè)代理程序依賴于它上面的代理程序,直至樹根部的頂層代理程序。依賴倒轉(zhuǎn)原則,,,PAC到哪兒去了呢?,在每個(gè)代理程序內(nèi)部,都包括了PAC三個(gè)組件: 表示組件(P):提供PAC代理程序的可視行為。 抽象組件(A):基礎(chǔ)的數(shù)據(jù)模型。 控制組件(C):連接表示組件和抽象組件,并與其他組件通信。,以此為例,說明樹根、樹葉、樹干部分的代理程序的功能。,,3、PAC結(jié)構(gòu),PAC結(jié)構(gòu)中的各部分的功能分析 (1)樹根部的代理程序 抽象組件:反映的軟件的整體數(shù)據(jù)模型 表示組件:一般很少有職責(zé) 控制組件:協(xié)調(diào)各級(jí)代理程序之間的關(guān)系

30、,(2)樹葉代理程序:具體語義概念 抽象組件:維護(hù)本代理的數(shù)據(jù)。 表示組件:語義視圖,對(duì)用戶的交互。 控制組件:與上層代理的通信、交換事件與數(shù)據(jù)。,(3)樹干代理程序:合成與協(xié)作 抽象組件:維護(hù)本代理特殊的數(shù)據(jù)。 表示組件:實(shí)現(xiàn)自己的視圖。 控制組件:與上下層代理的通信、交換事件與數(shù)據(jù)。,,,4、動(dòng)態(tài)特性,,5、PAC結(jié)構(gòu)的設(shè)計(jì)實(shí)現(xiàn),共分九步。 關(guān)鍵的部分:根部PAC代理程序、葉部PAC代理程序、樹干部PAC代理程序,6、應(yīng)用實(shí)例,7、優(yōu)缺點(diǎn),優(yōu)點(diǎn): (1)事物分離單一職責(zé)原則 (2)易于變化和擴(kuò)展易于變化(迪米特法則)、擴(kuò)展(依賴倒轉(zhuǎn)原則) (3)支持多任務(wù)代理程序可分配到不同的線程、進(jìn)程或

31、機(jī)器上。,,缺點(diǎn): (1)系統(tǒng)的復(fù)雜性提高 (2)控制組件復(fù)雜 (3)代理程序間的通信會(huì)影響系統(tǒng)效率 (4)分解粒度越小,則用戶界面相似性越多,但可用性就越差。,第六節(jié) 客戶/服務(wù)器結(jié)構(gòu),1、概述,MVC、PAC解決:同一程序內(nèi)的不同部分的交互問題。 那么 不同程序之間 的交互如何處理呢? 為什么會(huì)出現(xiàn)“不同程序之間的交互”呢?,,1)一個(gè)程序不可能完成所有的工作;這些非核心的工作需要交給其他的程序。 如數(shù)據(jù)庫(kù)服務(wù)器程序 2)地理位置的分隔,也必然會(huì)使得兩個(gè)程序需要交互。 網(wǎng)絡(luò)應(yīng)用程序,,客戶/服務(wù)器 結(jié)構(gòu) 一個(gè)應(yīng)用系統(tǒng)被分成了兩個(gè)邏輯上分離的部分:客戶、服務(wù)器。 它們完成不同的功能。 客戶:

32、發(fā)出請(qǐng)求 服務(wù)器:接受請(qǐng)求,完成服務(wù)功能。,發(fā)展演變過程,1、基本客戶/服務(wù)器系統(tǒng) 客戶負(fù)責(zé)與用戶的交互,向服務(wù)器請(qǐng)求 服務(wù)器負(fù)責(zé)操作數(shù)據(jù)庫(kù),并把查詢結(jié)果發(fā)送給客戶,,2、把客戶和服務(wù)器中的應(yīng)用操作部分抽取出來形成應(yīng)用邏輯服務(wù)器。 客戶與用戶的交互 應(yīng)用邏輯服務(wù)器復(fù)雜處理,,3、減輕客戶端的開發(fā),統(tǒng)一客戶端應(yīng)用,引入瀏覽器和WWW服務(wù)器,,,2、客戶/服務(wù)器的結(jié)構(gòu),1)系統(tǒng)組成 客戶:根據(jù)需要向服務(wù)器發(fā)出請(qǐng)求,得到結(jié)果后將信息顯示給用戶 服務(wù)器:等待接收客戶的請(qǐng)求,向客戶提供服務(wù),2、客戶/服務(wù)器的結(jié)構(gòu),2)兩組件之間的關(guān)系 客戶:數(shù)量不定,請(qǐng)求的時(shí)間不定 服務(wù)器:首先啟動(dòng),隨時(shí)提供服務(wù)。 服

33、務(wù)器需要公開自己能夠提供的服務(wù)接口,便于客戶端根據(jù)服務(wù)接口來請(qǐng)求。接口。,2、客戶/服務(wù)器的結(jié)構(gòu),3)客戶/服務(wù)器的連接 分成兩種: 兩個(gè)程序在同一臺(tái)機(jī)器:信號(hào)、消息、共享存儲(chǔ)區(qū)、網(wǎng)絡(luò)連接 兩個(gè)程序在不同的機(jī)器:網(wǎng)絡(luò)連接,2、客戶/服務(wù)器的結(jié)構(gòu),網(wǎng)絡(luò)連接 進(jìn)程標(biāo)識(shí):操作系統(tǒng)使用的進(jìn)程號(hào),但不能用在網(wǎng)絡(luò)上。端口號(hào) 在網(wǎng)絡(luò)上需要還標(biāo)識(shí)機(jī)器:IP地址 半相關(guān)(三元組)、全相關(guān)(五元組) 如何在程序中調(diào)用網(wǎng)絡(luò)功能呢?,直接處理每一位?如何和對(duì)方連接? 如何處理差錯(cuò)? 如何解決流量等問題? 這些工作不可能我們來一一解決。 需要借助于操作系統(tǒng)提供的系統(tǒng)服務(wù)。 Socket API(網(wǎng)絡(luò)套接字):可以把So

34、cket簡(jiǎn)單想像成一個(gè)文件,,,3、客戶/服務(wù)器的連接,1)連接的要求 (1)雙方的交互必須通過定義好的接口來實(shí)現(xiàn) (2)雙方交互的信息必須滿足規(guī)定的語法形式:協(xié)議 (3)信息傳送的方向:客戶到服務(wù)器是請(qǐng)求信息,從服務(wù)器到客戶為返回結(jié)果和狀態(tài)信息 (4)傳送的信息可能需要打包、解包、加密等處理,3、客戶/服務(wù)器的連接,2)連接的檢測(cè):服務(wù)器 不可取的方式:循環(huán)檢測(cè) 常用的方式:中斷的方式 服務(wù)器的守護(hù)進(jìn)程首先啟動(dòng),處于等待狀態(tài); 有客戶請(qǐng)求到達(dá)會(huì)立即響應(yīng), 然后又回到等待狀態(tài)準(zhǔn)備接受下一個(gè)請(qǐng)求。,,3)連接方式:信號(hào)、消息、共享存儲(chǔ)區(qū)、網(wǎng)絡(luò)連接 4)連接的協(xié)議 調(diào)用的名稱、參數(shù)的個(gè)數(shù)、順序、類

35、型,執(zhí)行的方式、返回值的類型等。,4、服務(wù)器的調(diào)度,挑戰(zhàn):服務(wù)器需要時(shí)刻準(zhǔn)備著,處理來自不同客戶的請(qǐng)求,而且要同時(shí)接受和處理多個(gè)不同的請(qǐng)求。 如何解決?,,(1)進(jìn)程調(diào)度,主進(jìn)程,從進(jìn)程,從進(jìn)程,從進(jìn)程,,,,,客戶,客戶,,客戶,,,(2)線程調(diào)度,主進(jìn)程,從線程,從線程,從線程,,,,,客戶,客戶,,客戶,,,(3)線程池調(diào)度,5、客戶/服務(wù)器的變體,前述的客戶/服務(wù)器結(jié)構(gòu)中, 客戶和服務(wù)器是強(qiáng)耦合的:客戶需要知道服務(wù)器的準(zhǔn)確位置。 帶來的問題: 1)當(dāng)服務(wù)器改變位置時(shí),客戶程序不再能夠訪問服務(wù)器。 2)當(dāng)有多個(gè)服務(wù)器時(shí),無法給客戶提供更優(yōu)的服務(wù)。負(fù)載平衡,,變體:客戶/分配器/服務(wù)器,,

36、,客戶/服務(wù)器模式作業(yè),1、線程相對(duì)于進(jìn)程來說,執(zhí)行效率高于進(jìn)程,同時(shí)節(jié)省了資源。請(qǐng)問Java中對(duì)于線程提供了哪些輔助類? 2、原示例程序中服務(wù)器(Server)的調(diào)度采用的是線程調(diào)度方式(p71),請(qǐng)將其修改為線程池的調(diào)度方式。給出Server類的新源代碼。,第七節(jié) COM/DCOM/COM+結(jié)構(gòu),潘愛民譯COM本質(zhì)論 北京大學(xué)計(jì)算機(jī)技術(shù)研究所 教學(xué)資料 com組件技術(shù) ,,,軟件環(huán)境的變化,單任務(wù),,多任務(wù),文字界面,,圖形界面,單線程,,多線程,平臺(tái)相關(guān),,跨平臺(tái),單機(jī)(本地),,網(wǎng)絡(luò)(分布式),單一語言,,多種語言,1、概述,如何在IE中打開word文件、Excel文件;如何在CAD中

37、插入圖片;如何在PPT文件中編輯公式和音頻? OLE(Object Linking and Embedding)多種資源和復(fù)合文檔,,應(yīng)用程序之間需要交互和組合功能。 例:數(shù)據(jù)庫(kù)服務(wù)器、網(wǎng)頁(yè)服務(wù)器IIS 問題:文檔編輯服務(wù)器、電子表格服務(wù)器、聲音處理服務(wù)器、公式服務(wù)器? 怎么辦? 能否利用 Word、Excel、Media player、公式編輯器?,COM,Word、Excel、公式編輯器等等程序需要采用標(biāo)準(zhǔn)的方式來提供。 COM組件對(duì)象模型,1993年發(fā)布 是一種基于面向?qū)ο蟾拍畹慕M件之間互聯(lián)和通信的二進(jìn)制代碼模型。 是一種支持可組裝的可執(zhí)行代碼的結(jié)構(gòu)標(biāo)準(zhǔn)。 按照COM標(biāo)準(zhǔn)建立的可執(zhí)行組件

38、均具有標(biāo)準(zhǔn)的接口,通過這些接口實(shí)現(xiàn)組件間透明的連接和互操作。,,計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展 分布式系統(tǒng)的發(fā)展 軟件系統(tǒng)從集中式(單機(jī))向分布和協(xié)作式發(fā)展。 組件分布在多臺(tái)機(jī)器上,通過網(wǎng)絡(luò)實(shí)行透明的通信和互操作。,DCOM,DCOM分布式組件對(duì)象模型 是COM在網(wǎng)絡(luò)環(huán)境下的擴(kuò)展。 COMLPC(本地過程調(diào)用) DCOMRPC(遠(yuǎn)程過程調(diào)用),COM,COM+是一種依賴于松散耦合LCE的消息機(jī)制 COM/DCOM依賴于緊耦合TCE,小結(jié): COM組件技術(shù)是一種基于本地過程調(diào)用LPC、遠(yuǎn)程過程調(diào)用RPC和標(biāo)準(zhǔn)操作接口的系統(tǒng)互聯(lián)的工業(yè)標(biāo)準(zhǔn)。 并且成為在因特網(wǎng)上實(shí)現(xiàn)多層體系結(jié)構(gòu)的支持技術(shù)。,新發(fā)展,J2EE平臺(tái)

39、.NET框架,2、COM組件結(jié)構(gòu)(靜態(tài)),面向?qū)ο竽P徒M件對(duì)象模型 相同點(diǎn): 組件內(nèi)部數(shù)據(jù)成員(狀態(tài))操作方法 組件必須通過將類實(shí)例化后才能運(yùn)行。 DLL:組件實(shí)例 EXE:實(shí)例代理,不同點(diǎn): COM組件的調(diào)用是通過接口實(shí)現(xiàn)的。 接口:提供給外界的函數(shù)的集合。(公安局) 一個(gè)組件角色多個(gè),可以定義多個(gè)接口(不提倡一個(gè)組件一個(gè)總接口,接口隔離原則) COM組件的運(yùn)行功能和一般對(duì)象不同。 COM組件是一個(gè)獨(dú)立運(yùn)行的操作系統(tǒng)任務(wù)或進(jìn)程。 比如word.exe:文檔編輯應(yīng)用文檔操作服務(wù),COM中的組成,COM整體為一個(gè)客戶/服務(wù)器結(jié)構(gòu)。 服務(wù)器:COM組件,專門為用戶提供邏輯操作服務(wù)的(類似數(shù)據(jù)庫(kù)服務(wù)

40、器)。 服務(wù)器應(yīng)該提供 多線程:多個(gè)用戶同時(shí)請(qǐng)求 異步操作請(qǐng)求:不需用戶長(zhǎng)時(shí)間等待,,客戶: 調(diào)用接口函數(shù) 調(diào)用方式:同步調(diào)用和異步調(diào)用,客戶,組件,,,,,,解決程序之間的通信問題組件基本問題,3、接口,客戶和組件是通過接口交互的:要求跨語言、跨編譯器、跨平臺(tái) 1、接口采用何種語言定義? C、C++、Java等? 語言無關(guān)的:IDL! 示例: Interface IAlarmer HRESULT initialize(); HRESULT Connect(in string,instring); HRESULT Disconnect(instring); HRESULT UpdateMsg(

41、instring); HRESULT DeleteMSG(instring); ,,對(duì)此種接口,C++、VB、Java怎么使用呢? 需要把IDL描述的接口轉(zhuǎn)換到具體的語言形式 C++中的MIDL Java中的IDLJ,,2、工作模式,,3、默認(rèn)接口:IUnKnown接口 Interface IUnKnown HRESULT QueryInterface(in REFIID iid,outvoid **ppv); ULONG AddRef(void); ULONG Release(void); ,,4、COM組件生存期 引用計(jì)數(shù) AddRef() Release() 注意:在整個(gè)生存期內(nèi),Add

42、Ref與Release一定要配對(duì),否則: 漏掉AddRef,程序出錯(cuò) 漏掉Release,對(duì)象永不釋放,,5、COM組件接口查詢及其設(shè)計(jì)原則 HRESULT QueryInterface(in REFIID iid,outvoid **ppv); COM接口的標(biāo)識(shí)IID,是一個(gè)128位的長(zhǎng)整數(shù),,接口查詢中: 默認(rèn)接口是唯一的; 接口自反性 接口對(duì)稱性 接口傳遞性,,COM中IUnknown接口解決了兩個(gè)重要的問題 動(dòng)態(tài)接口發(fā)現(xiàn),允許對(duì)象支持多個(gè)接口、允許在運(yùn)行時(shí)刻確定對(duì)象是否支持某些接口 生命周期管理,,COM接口 IID:128位整數(shù) 接口定義語言COM IDL 對(duì)應(yīng)于C++中由純虛函數(shù)組

43、成的類 單繼承,基接口:IUnknown,,6、接口的特性 接口的二進(jìn)制特性 接口不變性:接口是對(duì)外界的承諾 接口的動(dòng)態(tài)多變性:接口的實(shí)現(xiàn)可以變化,4、COM組件的不同類型,1、進(jìn)程內(nèi)組件 客戶和啟動(dòng)的組件在客戶的同一進(jìn)程中運(yùn)行。 Windows中,DLL(動(dòng)態(tài)鏈接庫(kù)) 本地啟動(dòng):進(jìn)程內(nèi)組件 外地啟動(dòng):組件代理,,,,2、進(jìn)程外組件 COM組件被啟動(dòng)后,在自身獨(dú)立的進(jìn)程中運(yùn)行 兩種形式: 可執(zhí)行程序的EXE形式,不管本地外地,均為進(jìn)程外 DLL形式,遠(yuǎn)程啟動(dòng)時(shí)為進(jìn)程外,,,,DLL和EXE兩種代碼形式是在編譯時(shí)確定的。 區(qū)別: EXE可執(zhí)行程序式的組件:無論激活方式,只對(duì)應(yīng)同一個(gè)組件 DLL動(dòng)

44、態(tài)鏈接庫(kù):每一個(gè)應(yīng)用將擁有不同的組件個(gè)體 DLL運(yùn)行效率高于EXE:進(jìn)程間通信 EXE穩(wěn)定性高于DLL:獨(dú)立進(jìn)程,5、COM組件的運(yùn)行,1、注冊(cè) 應(yīng)用程序如何找到組件呢? 注冊(cè)機(jī)構(gòu):唯一、確定的。如注冊(cè)表,TreeView組件的注冊(cè)信息,,,,2、COM庫(kù) 系統(tǒng)級(jí)的核心代碼支持 COM庫(kù):提供組件創(chuàng)建和組件操作的API函數(shù),通過注冊(cè)表查找組件代碼,實(shí)現(xiàn)組件名與組件代碼的全路徑文件名的轉(zhuǎn)換,以及為組件運(yùn)行 提供組件之間通信的LPC和RPC代碼。,對(duì)象的創(chuàng)建過程,COM對(duì)象創(chuàng)建過程,,,,3、COM組件代碼的重用 二進(jìn)制的重用:不同于代碼的重用 兩種: 包容:接口的轉(zhuǎn)換 聚合:接口的查詢,,,,,

45、6、COM組件的變體和擴(kuò)展,1、連接點(diǎn)組件:雙向COM,,,,,2、DCOM 表面上看,單機(jī)到網(wǎng)絡(luò),LPC到RPC即可 實(shí)際,安全、可靠性、性能等問題需要考慮:調(diào)用阻塞、中斷、信息丟失、異步調(diào)用、異常處理 例:檢測(cè)客戶是否正常,ping周期,,,,3、COM組件 COM/DCOM為L(zhǎng)PC和RPC過程調(diào)用 緊耦合消息 COM:松耦合消息,,,COM+是什么?,面向企業(yè)應(yīng)用 提供了企業(yè)應(yīng)用所需要的通用基礎(chǔ)設(shè)施 設(shè)計(jì)企業(yè)應(yīng)用要求有思想上的根本變化 COM+對(duì)COM的增強(qiáng)和改進(jìn) 增強(qiáng)了COM runtime library 增強(qiáng)了MTS(Microsoft Transaction Server) 事務(wù)

46、服務(wù)、安全服務(wù) 提供了新的runtime服務(wù) 隊(duì)列服務(wù)、事件服務(wù)、負(fù)載平衡、(內(nèi)存數(shù)據(jù)庫(kù)) COM+兼容COM,只是提供了更多的功能,,COM+:interception技術(shù),機(jī)器、進(jìn)程或者套間邊界,,RPC通道,,,Stub,COM之前的應(yīng)用,,,,,,,,,,在COM之前, 應(yīng)用程序是完全分開的實(shí)體,它們之間只有很少或沒有任何集成關(guān)系,應(yīng)用,代碼和數(shù)據(jù)結(jié)構(gòu),小結(jié),,,,,,,,,,COM組件模型,,,,,,,,,,,,,COM提供了組件集成的方法. 但是, 每個(gè)組件必須提供細(xì)節(jié)復(fù)雜的通訊接口,對(duì)象不能直接交互,,,,COM的優(yōu)缺點(diǎn),COM的優(yōu)點(diǎn): 在構(gòu)建組件軟件方面,COM優(yōu)于簡(jiǎn)單的DLL

47、模型 許多公司都使用COM構(gòu)建了他們自己的核心系統(tǒng)。如:N的后端使用COM COM成功的關(guān)鍵之一:強(qiáng)調(diào)接口,COM的缺點(diǎn): COM DLLs的名字和配置信息都進(jìn)入注冊(cè)表,將導(dǎo)致注冊(cè)表過重的負(fù)擔(dān) 因?yàn)镃OM使用注冊(cè)表(每個(gè)使用者都可以看到),所以不可能隔離私有的組件 注冊(cè)表為應(yīng)用程序的安裝和卸載過程增加了復(fù)雜性 接口一旦發(fā)布決不能變化,發(fā)布后變化接口將破壞可靠性和可預(yù)測(cè)性??蛻羰褂媒涌诒仨氉裱瓏?yán)格的規(guī)則 COM組件的數(shù)據(jù)類型一致性問題:使用各自的類型系統(tǒng),比如VB組件使用VARIANT類型,,走向.NET,,,,,,,,,,,使用 .NET Framework的公共語言運(yùn)行時(shí)(CLR), 所有的

48、組件都建立在一個(gè)共同的底層基礎(chǔ)上。不再需要通訊的繁瑣細(xì)節(jié),對(duì)象可以直接交互,,,,Microsoft .NET,把系統(tǒng)平臺(tái)從Windows桌面轉(zhuǎn)移到Internet上來 Internet作為.NET的平臺(tái) Web Services 新觀念:軟件作為服務(wù) 核心技術(shù) XML:把各種數(shù)據(jù)和服務(wù)連接起來 Web Service .NET Framework,第八節(jié) 代理者(Broker),1、概述,公共信息系統(tǒng)網(wǎng)絡(luò) 訂票服務(wù) 賓館預(yù)定 導(dǎo)游服務(wù)等等,,公共信息不斷增加、不斷擴(kuò)展和更新的。要求: 系統(tǒng)不斷改變和增長(zhǎng) 每個(gè)服務(wù)之間互相隔離,以減少變動(dòng)的影響。 客戶端不必知道服務(wù)器端的具體地址而獲得服務(wù)。,

49、,解決方法:代理者(Broker) 用于構(gòu)建中間有隔離組件的分布式系統(tǒng)。,2、問題分析與方案,構(gòu)建復(fù)雜的分布式的軟件系統(tǒng),遇到的問題: 系統(tǒng)功能需要分割系統(tǒng)是由獨(dú)立但相互之間可以互相操作的組件組合 分布式組件需要相互通信時(shí),需要組件間的通信手段 組件的添加、移動(dòng)、激活、定位客戶不應(yīng)該過多地依賴系統(tǒng)的各種具體細(xì)節(jié),解決問題: 地址透明 在運(yùn)行期間更換、添加或移動(dòng)各組件(開閉原則) 系統(tǒng)對(duì)用戶隱藏特定系統(tǒng)和特定實(shí)現(xiàn)的細(xì)節(jié) 解決方案代理者,客戶,代理者,服務(wù)器,,,2、問題分析與方案,提供代理者之后的結(jié)果 地址透明,客戶開發(fā)簡(jiǎn)單 消息調(diào)用(不必把重點(diǎn)放在低級(jí)的進(jìn)程間通信) 體系結(jié)構(gòu)靈活,很容易做到對(duì)

50、組件動(dòng)態(tài)改變、添加、刪除和重定位,靜態(tài)結(jié)構(gòu),六種成分: 客戶、 服務(wù)器、 代理者、 客戶端代理、 服務(wù)器代理、 橋接(網(wǎng)橋),服務(wù)器 功能:實(shí)現(xiàn)多種服務(wù),一個(gè)或多個(gè)對(duì)象 服務(wù)的展示:接口 例子:WWW服務(wù)器,,客戶程序: 請(qǐng)求服務(wù)的程序 發(fā)送給代理者,由代理者轉(zhuǎn)發(fā),,代理者:中介者 客戶到服務(wù)器的請(qǐng)求 服務(wù)器返回給客戶的應(yīng)答或狀態(tài)信息 為服務(wù)器提供服務(wù)注冊(cè) 負(fù)責(zé)激活服務(wù)器 定位服務(wù)器 例子:信息系統(tǒng)URL,,基本組成部分,,客戶端代理:客戶代理者之間,附加層 效果:對(duì)客戶隱藏了代理者,客戶好像使用本地服務(wù)一樣 例如:隱藏了 客戶和代理者之間的進(jìn)程通信機(jī)制、參數(shù)和結(jié)果的列集等等,,服務(wù)器端代理:

51、代理者和服務(wù)器之間 功能:負(fù)責(zé)接收請(qǐng)求,解析收到的消息,散集參數(shù),調(diào)用適當(dāng)?shù)姆?wù)。 返回的信息,進(jìn)行數(shù)據(jù)的列集傳送給客戶,,,橋接(網(wǎng)橋): 功能:代理者運(yùn)行在異構(gòu)系統(tǒng)上,采用橋接來隱藏兩個(gè)代理者互相操作時(shí)的實(shí)現(xiàn)細(xì)節(jié)。,,,,,,直接通信,通信方式,客戶,代理者,服務(wù)器,,,,間接通信,通信方式,客戶,代理者,服務(wù)器,,,客戶,分配器,服務(wù)器,,,,動(dòng)態(tài)特性,客戶,代理者,服務(wù)器,,,客戶端代理,服務(wù)端代理,,,,,,客戶,代理者,服務(wù)器,,,客戶端代理,服務(wù)端代理,,,代理者,網(wǎng)橋,,,,,5、設(shè)計(jì)與實(shí)現(xiàn),1、對(duì)象模型 2、組件互操作性 IDL接口定義語言 3、代理者與客戶和服務(wù)器的API函

52、數(shù) 客戶側(cè):構(gòu)建客戶請(qǐng)求、請(qǐng)求發(fā)送、接受回應(yīng) 服務(wù)器側(cè):代理者注冊(cè),客戶,代理者,服務(wù)器,,,4、客戶和服務(wù)器代理對(duì)象 客戶端代理 服務(wù)器代理,客戶,代理者,服務(wù)器,,,客戶端代理,服務(wù)端代理,,,,5、設(shè)計(jì)代理者組件 客戶與服務(wù)器之間傳遞消息的信使 功能:1)請(qǐng)求發(fā)送、狀態(tài)返回 2)兩端代理未提供參數(shù)的列集和散集代理提供 3)客戶服務(wù)器的異步通信消息緩沖區(qū) 4)目錄服務(wù) 5)名字服務(wù) 6)動(dòng)態(tài)方法調(diào)用 7)系統(tǒng)失效的處理,6、開發(fā)IDL編譯器,,6、變體與擴(kuò)展,1、直接通信 2、消息傳遞:以數(shù)據(jù)傳輸為重點(diǎn) 3、交易器代理者系統(tǒng) 客戶請(qǐng)求目標(biāo)為服務(wù),而非服務(wù)器 4、適配器代理者系統(tǒng) 5、回調(diào)代理者系統(tǒng) 消費(fèi)者產(chǎn)生需求,7、代理者結(jié)構(gòu)的應(yīng)用,城市信息系統(tǒng)賓館預(yù)定系統(tǒng) 萬維網(wǎng) COBRA公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu) OLE對(duì)象連接與嵌入,8、代理者結(jié)構(gòu)的優(yōu)缺點(diǎn),優(yōu)點(diǎn): 定位的透明性:唯一的標(biāo)識(shí)符定位服務(wù)器 組件的可變更和可擴(kuò)展性 系統(tǒng)的移植性 不同代理者系統(tǒng)間的互操作性 可重用性,缺點(diǎn): 效率較低:中間層,引入靈活性、可移植性、可變更性,而降低了效率 容錯(cuò)性較差 測(cè)試和調(diào)試較困難。,,

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!