-軟件體系結(jié)構(gòu)_第1頁
-軟件體系結(jié)構(gòu)_第2頁
-軟件體系結(jié)構(gòu)_第3頁
-軟件體系結(jié)構(gòu)_第4頁
-軟件體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩82頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2021/8/141軟件體系結(jié)構(gòu) 軟件體系結(jié)構(gòu)的基本概念軟件體系結(jié)構(gòu)的基本概念 典型的軟件體系結(jié)構(gòu)風(fēng)格典型的軟件體系結(jié)構(gòu)風(fēng)格 基于網(wǎng)絡(luò)的軟件體系結(jié)構(gòu)基于網(wǎng)絡(luò)的軟件體系結(jié)構(gòu)2021/8/142模式分類 低層模式:慣用法低層模式:慣用法(idiom) 中層模式:設(shè)計(jì)模式中層模式:設(shè)計(jì)模式(design pattern) 高層模式:體系結(jié)構(gòu)模式高層模式:體系結(jié)構(gòu)模式(architecture pattern)2021/8/143慣用法 慣用法的特點(diǎn):慣用法的特點(diǎn): 是與具體語言密切相關(guān)的編程經(jīng)驗(yàn)的總結(jié)是與具體語言密切相關(guān)的編程經(jīng)驗(yàn)的總結(jié) 描述如何使用給定的語言特征來實(shí)現(xiàn)構(gòu)件的特描述如何使用給定的語言

2、特征來實(shí)現(xiàn)構(gòu)件的特定方面及其關(guān)系定方面及其關(guān)系 代表最底層的模式代表最底層的模式 慣用法更關(guān)注設(shè)計(jì)的實(shí)現(xiàn)慣用法更關(guān)注設(shè)計(jì)的實(shí)現(xiàn) 可能是一種特定設(shè)計(jì)模式的具體實(shí)現(xiàn)可能是一種特定設(shè)計(jì)模式的具體實(shí)現(xiàn)2021/8/144設(shè)計(jì)模式范圍范圍目的目的創(chuàng)建型模式創(chuàng)建型模式結(jié)構(gòu)型模式結(jié)構(gòu)型模式行為型模式行為型模式類模式類模式工廠方法模式(類)適配器模式解釋器模式模板方法模式對(duì)象模式對(duì)象模式抽象工廠模式建造者模式原型模式單例模式(對(duì)象)適配器模式橋接模式組合模式裝飾模式外觀模式享元模式代理模式職責(zé)鏈模式命令模式迭代器模式中介者模式備忘錄模式觀察者模式狀態(tài)模式策略模式訪問者模式2021/8/145基本概念 什么是體

3、系結(jié)構(gòu)什么是體系結(jié)構(gòu)目前還沒有一個(gè)公認(rèn)的關(guān)于軟件體系結(jié)構(gòu)的定義,許多專家目前還沒有一個(gè)公認(rèn)的關(guān)于軟件體系結(jié)構(gòu)的定義,許多專家學(xué)者從不同角度對(duì)軟件體系結(jié)構(gòu)進(jìn)行了描述。學(xué)者從不同角度對(duì)軟件體系結(jié)構(gòu)進(jìn)行了描述。Bass、Clements和和Kazman給出了如下定義:給出了如下定義:“一個(gè)程序或計(jì)算機(jī)一個(gè)程序或計(jì)算機(jī)系統(tǒng)的軟件體系結(jié)構(gòu)是指系統(tǒng)的軟件體系結(jié)構(gòu)是指系統(tǒng)的一個(gè)或者多個(gè)結(jié)構(gòu)。結(jié)構(gòu)中系統(tǒng)的一個(gè)或者多個(gè)結(jié)構(gòu)。結(jié)構(gòu)中包括軟件的構(gòu)件、構(gòu)件的外部可見屬性以及它們之間的相互包括軟件的構(gòu)件、構(gòu)件的外部可見屬性以及它們之間的相互關(guān)系。外部可見屬性則是指軟件構(gòu)件提供的服務(wù)、性能、使關(guān)系。外部可見屬性則是指軟件

4、構(gòu)件提供的服務(wù)、性能、使用特性、錯(cuò)誤處理、共享資源使用等用特性、錯(cuò)誤處理、共享資源使用等?!边@一定義強(qiáng)調(diào)在任一體系結(jié)構(gòu)表述中這一定義強(qiáng)調(diào)在任一體系結(jié)構(gòu)表述中“軟件構(gòu)件軟件構(gòu)件”的角色。的角色。2021/8/146 Dewayne Perry和和A1exander Wo1f曾這樣定義:曾這樣定義:“軟件軟件體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包體系結(jié)構(gòu)是具有一定形式的結(jié)構(gòu)化元素,即構(gòu)件的集合,包括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。處理構(gòu)件負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。處理構(gòu)件負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)構(gòu)件是被加工的信息,連接構(gòu)件把體系結(jié)構(gòu)的行加工,數(shù)據(jù)構(gòu)件是被加工的信息,連

5、接構(gòu)件把體系結(jié)構(gòu)的不同部分組合連接起來。不同部分組合連接起來。” 基本概念2021/8/147基本概念框架框架 隨著應(yīng)用的發(fā)展和完善,某些帶有整體性的應(yīng)用模式被隨著應(yīng)用的發(fā)展和完善,某些帶有整體性的應(yīng)用模式被逐漸固定下來,形成特定的框架,包括逐漸固定下來,形成特定的框架,包括基本構(gòu)成元素基本構(gòu)成元素和和關(guān)關(guān)系系??蚣芸蚣苁翘囟☉?yīng)用領(lǐng)域問題的體系結(jié)構(gòu)模式,框架定義是特定應(yīng)用領(lǐng)域問題的體系結(jié)構(gòu)模式,框架定義了基本構(gòu)成單元和關(guān)系后,開發(fā)者就可以集中精力解決業(yè)了基本構(gòu)成單元和關(guān)系后,開發(fā)者就可以集中精力解決業(yè)務(wù)邏輯問題。務(wù)邏輯問題。 在組織形式上,在組織形式上,框架是一個(gè)待實(shí)例化的完整系統(tǒng)框架是一個(gè)待

6、實(shí)例化的完整系統(tǒng),定義,定義了軟件系統(tǒng)的元素和關(guān)系,創(chuàng)建了基本的模塊,定義了涉了軟件系統(tǒng)的元素和關(guān)系,創(chuàng)建了基本的模塊,定義了涉及功能更改和擴(kuò)充的插件位置。典型的框架例子有及功能更改和擴(kuò)充的插件位置。典型的框架例子有MFC框框架架和和Struts框架框架。2021/8/148 體系結(jié)構(gòu)的重要作用體現(xiàn)在以下三個(gè)方面體系結(jié)構(gòu)的重要作用體現(xiàn)在以下三個(gè)方面 :(1)體系結(jié)構(gòu)的表示有助于風(fēng)險(xiǎn)承擔(dān)者(項(xiàng)目干系)體系結(jié)構(gòu)的表示有助于風(fēng)險(xiǎn)承擔(dān)者(項(xiàng)目干系 人)進(jìn)行人)進(jìn)行交流交流。 (2)體系結(jié)構(gòu)突出了早期設(shè)計(jì)決策。)體系結(jié)構(gòu)突出了早期設(shè)計(jì)決策。 (3)軟件體系結(jié)構(gòu)是可傳遞和可復(fù)用的)軟件體系結(jié)構(gòu)是可傳遞和可

7、復(fù)用的模型模型。 基本概念 體系結(jié)構(gòu)的重要作用體系結(jié)構(gòu)的重要作用2021/8/149體系結(jié)構(gòu)風(fēng)格 傳統(tǒng)的體系結(jié)構(gòu)傳統(tǒng)的體系結(jié)構(gòu)數(shù)據(jù)流風(fēng)格數(shù)據(jù)流風(fēng)格 (Dataflow):批處理序列、管道過濾器風(fēng)格批處理序列、管道過濾器風(fēng)格 (Pipe-and-Filter)調(diào)用調(diào)用/返回風(fēng)格返回風(fēng)格:主程序主程序/子程序、面向?qū)ο箫L(fēng)格子程序、面向?qū)ο箫L(fēng)格 (ADT)、層次系統(tǒng)、層次系統(tǒng) (Layered Systems)事件系統(tǒng)風(fēng)格事件系統(tǒng)風(fēng)格:進(jìn)程通信、事件系統(tǒng)進(jìn)程通信、事件系統(tǒng)倉庫風(fēng)格倉庫風(fēng)格:數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)MVC軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)2021/8/14

8、10體系結(jié)構(gòu)風(fēng)格 基于網(wǎng)絡(luò)的體系結(jié)構(gòu)基于網(wǎng)絡(luò)的體系結(jié)構(gòu)客戶端(服務(wù)器)客戶端(服務(wù)器)/服務(wù)器體系結(jié)構(gòu)服務(wù)器體系結(jié)構(gòu):一層一層/兩層兩層/三層結(jié)構(gòu)、三層結(jié)構(gòu)、Java EEP2P軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)網(wǎng)格計(jì)算體系結(jié)構(gòu)網(wǎng)格計(jì)算體系結(jié)構(gòu)SOA與與Web Services云計(jì)算體系結(jié)構(gòu)云計(jì)算體系結(jié)構(gòu)2021/8/1411當(dāng)輸入數(shù)據(jù)經(jīng)過一系列的計(jì)算和操作構(gòu)件的變換形成輸當(dāng)輸入數(shù)據(jù)經(jīng)過一系列的計(jì)算和操作構(gòu)件的變換形成輸出數(shù)據(jù)時(shí),可以應(yīng)用這種體系結(jié)構(gòu)。出數(shù)據(jù)時(shí),可以應(yīng)用這種體系結(jié)構(gòu)。管道管道/ /過濾器過濾器、批處理序列批處理序列都屬于數(shù)據(jù)流風(fēng)格。都屬于數(shù)據(jù)流風(fēng)格。管道管道/ /過濾器結(jié)構(gòu)如下圖所示:過

9、濾器結(jié)構(gòu)如下圖所示:數(shù)據(jù)流風(fēng)格 數(shù)據(jù)流風(fēng)格數(shù)據(jù)流風(fēng)格 管道管道/ /過濾器結(jié)構(gòu)過濾器結(jié)構(gòu) Linux系統(tǒng)中的命令序列堆疊的數(shù)據(jù)過程(圖像處理)2021/8/1412 從上圖可看出,管道從上圖可看出,管道/過濾器結(jié)構(gòu)擁有一組被稱為過濾器結(jié)構(gòu)擁有一組被稱為過濾過濾器器(filter)的構(gòu)件,這些構(gòu)件通過)的構(gòu)件,這些構(gòu)件通過管道管道(pipe)連接,管)連接,管道將數(shù)據(jù)從一個(gè)構(gòu)件傳送到下一個(gè)構(gòu)件。道將數(shù)據(jù)從一個(gè)構(gòu)件傳送到下一個(gè)構(gòu)件。 每個(gè)過濾器獨(dú)立于其上游和下游的構(gòu)件而工作,過濾器每個(gè)過濾器獨(dú)立于其上游和下游的構(gòu)件而工作,過濾器的設(shè)計(jì)要針對(duì)某種形式的數(shù)據(jù)輸入,并且產(chǎn)生某種特定形的設(shè)計(jì)要針對(duì)某種形式

10、的數(shù)據(jù)輸入,并且產(chǎn)生某種特定形式的數(shù)據(jù)輸出。式的數(shù)據(jù)輸出。 如果數(shù)據(jù)流退化成為單線的變換,則稱為如果數(shù)據(jù)流退化成為單線的變換,則稱為批處理序列批處理序列(batch sequential)。這種結(jié)構(gòu)接收一批數(shù)據(jù),然后應(yīng))。這種結(jié)構(gòu)接收一批數(shù)據(jù),然后應(yīng)用一系列連續(xù)的構(gòu)件(過濾器)變換它。用一系列連續(xù)的構(gòu)件(過濾器)變換它。數(shù)據(jù)流風(fēng)格2021/8/1413管道管道/ /過濾器風(fēng)格具有以下過濾器風(fēng)格具有以下優(yōu)點(diǎn)優(yōu)點(diǎn):(1 1)使得軟構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合的特)使得軟構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合的特 點(diǎn)。點(diǎn)。(2 2)允許設(shè)計(jì)者將整個(gè)系統(tǒng)的輸入)允許設(shè)計(jì)者將整個(gè)系統(tǒng)的輸入/ /輸

11、出行為看成是輸出行為看成是多個(gè)過多個(gè)過 濾器的行為的簡單合成濾器的行為的簡單合成。 (3 3)支持軟件復(fù)用支持軟件復(fù)用。只要提供適合在兩個(gè)過濾器之間傳送。只要提供適合在兩個(gè)過濾器之間傳送 的數(shù)據(jù),任何兩個(gè)過濾器都可被連接起來。的數(shù)據(jù),任何兩個(gè)過濾器都可被連接起來。(4 4)系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡單。)系統(tǒng)維護(hù)和增強(qiáng)系統(tǒng)性能簡單。新的過濾器新的過濾器可以添加可以添加 到現(xiàn)有系統(tǒng)中來;到現(xiàn)有系統(tǒng)中來;舊的舊的可以被改進(jìn)的過濾器替換掉??梢员桓倪M(jìn)的過濾器替換掉。(5 5)允許對(duì)一些如吞吐量、死鎖等屬性的分析。)允許對(duì)一些如吞吐量、死鎖等屬性的分析。(6 6)支持并行執(zhí)行支持并行執(zhí)行。每個(gè)過濾器是作

12、為一個(gè)單獨(dú)的任務(wù)完。每個(gè)過濾器是作為一個(gè)單獨(dú)的任務(wù)完 成,因此可與其他任務(wù)并行執(zhí)行。成,因此可與其他任務(wù)并行執(zhí)行。數(shù)據(jù)流風(fēng)格2021/8/1414管道管道/過濾器風(fēng)格主要過濾器風(fēng)格主要缺點(diǎn)缺點(diǎn)如下:如下:(1)通常導(dǎo)致進(jìn)程成為批處理的結(jié)構(gòu)。這是因?yàn)殡m然過濾)通常導(dǎo)致進(jìn)程成為批處理的結(jié)構(gòu)。這是因?yàn)殡m然過濾器可增量式地處理數(shù)據(jù),但它們是獨(dú)立的,所以設(shè)計(jì)者必須器可增量式地處理數(shù)據(jù),但它們是獨(dú)立的,所以設(shè)計(jì)者必須將每個(gè)過濾器看成一個(gè)完整的從輸入到輸出的轉(zhuǎn)換。將每個(gè)過濾器看成一個(gè)完整的從輸入到輸出的轉(zhuǎn)換。(2)不適合處理交互不適合處理交互 的應(yīng)用。當(dāng)需要增量地顯示改變時(shí),的應(yīng)用。當(dāng)需要增量地顯示改變時(shí),

13、這個(gè)問題尤為嚴(yán)重。這個(gè)問題尤為嚴(yán)重。(3)因?yàn)樵跀?shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),每個(gè)過濾器都)因?yàn)樵跀?shù)據(jù)傳輸上沒有通用的標(biāo)準(zhǔn),每個(gè)過濾器都增增加了解析和合成數(shù)據(jù)的工作加了解析和合成數(shù)據(jù)的工作,這樣就導(dǎo)致了系統(tǒng)性能下降,這樣就導(dǎo)致了系統(tǒng)性能下降,并增加了編寫過濾器的復(fù)雜性。并增加了編寫過濾器的復(fù)雜性。數(shù)據(jù)流風(fēng)格2021/8/1415在此類體系結(jié)構(gòu)中,存在以下在此類體系結(jié)構(gòu)中,存在以下3種子風(fēng)格種子風(fēng)格。 主程序主程序/子程序體系結(jié)構(gòu)子程序體系結(jié)構(gòu)(C語言?)語言?) 這種傳統(tǒng)的程序結(jié)構(gòu)將功能分解為一個(gè)控制層次,其這種傳統(tǒng)的程序結(jié)構(gòu)將功能分解為一個(gè)控制層次,其中中“主主”程序調(diào)用一組程序構(gòu)件,這些程序構(gòu)

14、件又去調(diào)用別程序調(diào)用一組程序構(gòu)件,這些程序構(gòu)件又去調(diào)用別的程序構(gòu)件,如下圖所示。這種結(jié)構(gòu)總體上為樹狀結(jié)的程序構(gòu)件,如下圖所示。這種結(jié)構(gòu)總體上為樹狀結(jié)構(gòu),可以在底層存在公共模塊。構(gòu),可以在底層存在公共模塊。調(diào)用返回風(fēng)格 調(diào)用調(diào)用返回風(fēng)格返回風(fēng)格(常見,發(fā)揮主要作用)(常見,發(fā)揮主要作用) 2021/8/1416主程序主程序/子程序體系結(jié)構(gòu)的子程序體系結(jié)構(gòu)的優(yōu)點(diǎn)優(yōu)點(diǎn)如下如下:(1)可以使用)可以使用自頂向下自頂向下,逐步分解逐步分解的方法得到體系結(jié)構(gòu)的方法得到體系結(jié)構(gòu)圖,典型的拓?fù)浣Y(jié)構(gòu)為樹狀結(jié)構(gòu)?;诙x圖,典型的拓?fù)浣Y(jié)構(gòu)為樹狀結(jié)構(gòu)?;诙x使用關(guān)系對(duì)子使用關(guān)系對(duì)子程序進(jìn)行分解,使用過程調(diào)用作為程

15、序之間的交互機(jī)制。程序進(jìn)行分解,使用過程調(diào)用作為程序之間的交互機(jī)制。(2)采用程序設(shè)計(jì)語言支持的單線程控制。)采用程序設(shè)計(jì)語言支持的單線程控制。其主要其主要缺點(diǎn)缺點(diǎn)如下如下:(1)子程序的正確性難于判斷。需要運(yùn)用層次推理來判斷)子程序的正確性難于判斷。需要運(yùn)用層次推理來判斷子程序的正確性,因?yàn)樽映绦虻恼_性取決于它調(diào)用的子程子程序的正確性,因?yàn)樽映绦虻恼_性取決于它調(diào)用的子程序的正確性。序的正確性。(2)子系統(tǒng)的結(jié)構(gòu)不清晰。通常可以將多個(gè)子程序合成為)子系統(tǒng)的結(jié)構(gòu)不清晰。通??梢詫⒍鄠€(gè)子程序合成為模塊。模塊。調(diào)用返回風(fēng)格2021/8/1417 面向?qū)ο蟮恼{(diào)用面向?qū)ο蟮恼{(diào)用返回風(fēng)格返回風(fēng)格 系統(tǒng)

16、的構(gòu)件系統(tǒng)的構(gòu)件(類類/對(duì)象對(duì)象)封裝了數(shù)據(jù)和必須應(yīng)用到該數(shù)據(jù)上的操封裝了數(shù)據(jù)和必須應(yīng)用到該數(shù)據(jù)上的操作,構(gòu)件間通過消息傳遞進(jìn)行通信與合作。與主程序作,構(gòu)件間通過消息傳遞進(jìn)行通信與合作。與主程序/子程子程序的體系結(jié)構(gòu)相比,面向?qū)ο箫L(fēng)格中的對(duì)象交互會(huì)復(fù)雜一序的體系結(jié)構(gòu)相比,面向?qū)ο箫L(fēng)格中的對(duì)象交互會(huì)復(fù)雜一些。面向?qū)ο箫L(fēng)格與網(wǎng)絡(luò)應(yīng)用的需求在分布性、自治性、些。面向?qū)ο箫L(fēng)格與網(wǎng)絡(luò)應(yīng)用的需求在分布性、自治性、協(xié)作性、演化性等方面具有內(nèi)在的一致性。協(xié)作性、演化性等方面具有內(nèi)在的一致性。 面向?qū)ο箫L(fēng)格具有以下面向?qū)ο箫L(fēng)格具有以下優(yōu)點(diǎn)優(yōu)點(diǎn): :(1 1)因?yàn)閷?duì)象對(duì)其他對(duì)象隱藏它的表示,所以可以改變一)因?yàn)閷?duì)

17、象對(duì)其他對(duì)象隱藏它的表示,所以可以改變一 個(gè)對(duì)象的表示,而不影響其他對(duì)象。個(gè)對(duì)象的表示,而不影響其他對(duì)象。(2 2)設(shè)計(jì)者可將一些數(shù)據(jù)存取操作的問題分解成一些交互)設(shè)計(jì)者可將一些數(shù)據(jù)存取操作的問題分解成一些交互 的代理程序的集合。的代理程序的集合。調(diào)用返回風(fēng)格2021/8/1418其其缺點(diǎn)缺點(diǎn)如下如下:(1)為了使一個(gè)對(duì)象和另一個(gè)對(duì)象通過過程調(diào)用等進(jìn)行)為了使一個(gè)對(duì)象和另一個(gè)對(duì)象通過過程調(diào)用等進(jìn)行 交互,必須知道對(duì)象的標(biāo)識(shí)。只要一個(gè)對(duì)象的標(biāo)識(shí)交互,必須知道對(duì)象的標(biāo)識(shí)。只要一個(gè)對(duì)象的標(biāo)識(shí) 改變了,就必須修改所有其他明確調(diào)用它的對(duì)象。改變了,就必須修改所有其他明確調(diào)用它的對(duì)象。(2)必須修改所有顯

18、式調(diào)用它的其他對(duì)象,并消除由此)必須修改所有顯式調(diào)用它的其他對(duì)象,并消除由此 帶來的一些副作用。例如,如果帶來的一些副作用。例如,如果A使用了對(duì)象使用了對(duì)象B,C 也使用了對(duì)象也使用了對(duì)象B,那么,那么,C對(duì)對(duì)B的使用所造成的對(duì)的使用所造成的對(duì)A 的影響可能是料想不到的。的影響可能是料想不到的。 調(diào)用返回風(fēng)格2021/8/1419 層次結(jié)構(gòu)層次結(jié)構(gòu) 層次結(jié)構(gòu)的基本結(jié)構(gòu)如下圖所示。在這種體系結(jié)構(gòu)中,整層次結(jié)構(gòu)的基本結(jié)構(gòu)如下圖所示。在這種體系結(jié)構(gòu)中,整個(gè)系統(tǒng)被組織成一個(gè)分層結(jié)構(gòu),每一層為上層提供服務(wù),并個(gè)系統(tǒng)被組織成一個(gè)分層結(jié)構(gòu),每一層為上層提供服務(wù),并作為下一層的客戶。作為下一層的客戶。調(diào)用返回

19、風(fēng)格 各種構(gòu)件 過程調(diào)用 各類網(wǎng)絡(luò)協(xié)議棧層級(jí)之間的調(diào)用-返回避免復(fù)雜性2021/8/1420 這種風(fēng)格支持基于可增加抽象層的設(shè)計(jì)。允許將復(fù)雜問這種風(fēng)格支持基于可增加抽象層的設(shè)計(jì)。允許將復(fù)雜問題分解成一個(gè)增量步驟序列的實(shí)現(xiàn)。題分解成一個(gè)增量步驟序列的實(shí)現(xiàn)。由于每一層最多只影響由于每一層最多只影響兩層兩層,同時(shí)只要給相鄰層提供,同時(shí)只要給相鄰層提供相同的接口相同的接口,允許每層用不同,允許每層用不同的方法實(shí)現(xiàn),同樣為軟件復(fù)用提供了強(qiáng)大的支持。的方法實(shí)現(xiàn),同樣為軟件復(fù)用提供了強(qiáng)大的支持。 調(diào)用返回風(fēng)格2021/8/1421調(diào)用返回風(fēng)格2021/8/1422調(diào)用返回風(fēng)格765網(wǎng)絡(luò)層網(wǎng)絡(luò)層321應(yīng)用層應(yīng)

20、用層表示層表示層會(huì)話層會(huì)話層報(bào)文流報(bào)文流報(bào)文流報(bào)文流報(bào)文流報(bào)文流應(yīng)用層應(yīng)用層表示層表示層會(huì)話層會(huì)話層4傳輸層傳輸層段流段流傳輸層傳輸層轉(zhuǎn)接節(jié)點(diǎn)轉(zhuǎn)接節(jié)點(diǎn)網(wǎng)絡(luò)層網(wǎng)絡(luò)層網(wǎng)絡(luò)層網(wǎng)絡(luò)層 網(wǎng)絡(luò)層網(wǎng)絡(luò)層協(xié)議協(xié)議鏈路層鏈路層 鏈路層鏈路層 鏈路層鏈路層協(xié)議協(xié)議轉(zhuǎn)接節(jié)點(diǎn)轉(zhuǎn)接節(jié)點(diǎn)分組流分組流子子 網(wǎng)絡(luò)層網(wǎng)絡(luò)層網(wǎng)網(wǎng)內(nèi)內(nèi) 鏈路層鏈路層 幀流幀流 鏈路層鏈路層部部物理層物理層物理層物理層協(xié)議協(xié)議協(xié)協(xié)物理層物理層 議議 物理層物理層通信子網(wǎng)通信子網(wǎng)比特流比特流物理層物理層分層系統(tǒng)實(shí)例:分層系統(tǒng)實(shí)例: ISO/OSI網(wǎng)絡(luò)的分層模型網(wǎng)絡(luò)的分層模型2021/8/1423調(diào)用返回風(fēng)格用戶用戶Shell解釋運(yùn)行解釋運(yùn)行語言處理、系

21、統(tǒng)工具、系統(tǒng)應(yīng)用程序語言處理、系統(tǒng)工具、系統(tǒng)應(yīng)用程序系統(tǒng)調(diào)用系統(tǒng)調(diào)用操作系統(tǒng)內(nèi)核操作系統(tǒng)內(nèi)核(System kernel)基本輸入輸出基本輸入輸出(BIOS)計(jì)算機(jī)硬件計(jì)算機(jī)硬件(CPU、存儲(chǔ)器、存儲(chǔ)器、I/O等等)分層系統(tǒng)實(shí)例:計(jì)算機(jī)操作系統(tǒng)分層系統(tǒng)實(shí)例:計(jì)算機(jī)操作系統(tǒng)(OS)的層次結(jié)構(gòu)的層次結(jié)構(gòu)2021/8/1424層次結(jié)構(gòu)具有以下層次結(jié)構(gòu)具有以下優(yōu)點(diǎn)優(yōu)點(diǎn):(1)支持基于抽象程度遞增的系統(tǒng)設(shè)計(jì),使設(shè)計(jì)者可以把)支持基于抽象程度遞增的系統(tǒng)設(shè)計(jì),使設(shè)計(jì)者可以把 一個(gè)復(fù)雜系統(tǒng)按遞增的步驟進(jìn)行分解。一個(gè)復(fù)雜系統(tǒng)按遞增的步驟進(jìn)行分解。 (2)支持功能增強(qiáng),因?yàn)槊恳粚又炼嗪拖噜彽纳舷聦咏唬┲С止δ茉鰪?qiáng)

22、,因?yàn)槊恳粚又炼嗪拖噜彽纳舷聦咏?互,因此,功能的改變最多影響相鄰的內(nèi)外層?;?,因此,功能的改變最多影響相鄰的內(nèi)外層。(3)支持復(fù)用。支持復(fù)用。只要提供的服務(wù)接口定義不變,同一層的只要提供的服務(wù)接口定義不變,同一層的 不同實(shí)現(xiàn)可以交換使用。這樣,就可以定義一組標(biāo)準(zhǔn)不同實(shí)現(xiàn)可以交換使用。這樣,就可以定義一組標(biāo)準(zhǔn) 的接口,從而允許各種不同的實(shí)現(xiàn)方法。的接口,從而允許各種不同的實(shí)現(xiàn)方法。調(diào)用返回風(fēng)格2021/8/1425其其缺點(diǎn)缺點(diǎn)如下如下:(1)并不是)并不是每個(gè)系統(tǒng)都可以很容易地劃分為分層的模式每個(gè)系統(tǒng)都可以很容易地劃分為分層的模式, 甚至即使一個(gè)系統(tǒng)的邏輯結(jié)構(gòu)是層次化的,出于對(duì)系甚至即使一個(gè)系

23、統(tǒng)的邏輯結(jié)構(gòu)是層次化的,出于對(duì)系 統(tǒng)性能的考慮,系統(tǒng)設(shè)計(jì)師不得不把一些低級(jí)或高級(jí)統(tǒng)性能的考慮,系統(tǒng)設(shè)計(jì)師不得不把一些低級(jí)或高級(jí) 的功能綜合起來。的功能綜合起來。(2)很難找到一個(gè)合適的、正確的層次抽象方法。)很難找到一個(gè)合適的、正確的層次抽象方法。調(diào)用返回風(fēng)格2021/8/1426數(shù)據(jù)流與調(diào)用-返回2021/8/1427事件系統(tǒng)風(fēng)格 事件系統(tǒng)風(fēng)格(獨(dú)立構(gòu)件)事件系統(tǒng)風(fēng)格(獨(dú)立構(gòu)件) GUI編程 Windows操作系統(tǒng)中Hook機(jī)制 Jquery中的回調(diào)2021/8/1428事件系統(tǒng)風(fēng)格2021/8/1429事件系統(tǒng)風(fēng)格 事件系統(tǒng)風(fēng)格事件系統(tǒng)風(fēng)格 2021/8/1430典型的體系結(jié)構(gòu)風(fēng)格2021

24、/8/1431事件系統(tǒng)風(fēng)格2021/8/1432事件系統(tǒng)風(fēng)格為何稱為為何稱為“獨(dú)立構(gòu)件獨(dú)立構(gòu)件”風(fēng)格?風(fēng)格? 這種風(fēng)格的主要特點(diǎn)是:這種風(fēng)格的主要特點(diǎn)是:事件的觸發(fā)者并不知道哪事件的觸發(fā)者并不知道哪些構(gòu)件會(huì)被這些事件影響,相互保持獨(dú)立些構(gòu)件會(huì)被這些事件影響,相互保持獨(dú)立。這樣不能假定構(gòu)件的處理順序,甚至不知道哪些過程會(huì)被調(diào)用;各個(gè)構(gòu)件之間彼此之間無連接關(guān)系,各自獨(dú)立存在,通過對(duì)事件的發(fā)布和注冊(cè)實(shí)現(xiàn)關(guān)聯(lián)對(duì)事件的發(fā)布和注冊(cè)實(shí)現(xiàn)關(guān)聯(lián);2021/8/1433事件系統(tǒng)風(fēng)格遇到斷點(diǎn),編輯器將源代碼滾動(dòng)到斷點(diǎn)處,變量監(jiān)測(cè)器則更新當(dāng)前變量值遇到斷點(diǎn),編輯器將源代碼滾動(dòng)到斷點(diǎn)處,變量監(jiān)測(cè)器則更新當(dāng)前變量值并顯示

25、出來。并顯示出來。如何完成如何完成 ?2021/8/1434事件系統(tǒng)風(fēng)格事件系統(tǒng)的基本構(gòu)成與工作原理事件系統(tǒng)的基本構(gòu)成與工作原理2021/8/1435事件系統(tǒng)風(fēng)格 EventSource: debugger (調(diào)試器調(diào)試器) EventHandler: editor and variable monitor (編輯器與變量監(jiān)視器編輯器與變量監(jiān)視器) EventManager: IDE (集成開發(fā)環(huán)境集成開發(fā)環(huán)境) 編輯器與變量監(jiān)視器向調(diào)試器注冊(cè),接收編輯器與變量監(jiān)視器向調(diào)試器注冊(cè),接收“斷點(diǎn)事件斷點(diǎn)事件”; 一旦遇到斷點(diǎn),調(diào)試器發(fā)布事件,從而觸發(fā)一旦遇到斷點(diǎn),調(diào)試器發(fā)布事件,從而觸發(fā)“編輯器編

26、輯器”與與“變量監(jiān)測(cè)變量監(jiān)測(cè)器器” ; 編輯器將源代碼滾動(dòng)到斷點(diǎn)處,變量監(jiān)測(cè)器則更新當(dāng)前變量值并顯示編輯器將源代碼滾動(dòng)到斷點(diǎn)處,變量監(jiān)測(cè)器則更新當(dāng)前變量值并顯示出來出來。其他的例子?Windows本身就是事件驅(qū)動(dòng)的2021/8/1436事件系統(tǒng)風(fēng)格事件分發(fā)的策略事件分發(fā)的策略2021/8/1437事件系統(tǒng)風(fēng)格無獨(dú)立的事件派遣模塊無獨(dú)立的事件派遣模塊 通過通過“觀察者模式觀察者模式”實(shí)現(xiàn)實(shí)現(xiàn) 模塊向事件發(fā)送模塊注冊(cè)某些消息模塊向事件發(fā)送模塊注冊(cè)某些消息 當(dāng)某一模塊發(fā)出某一事件時(shí),它自動(dòng)將這些事件發(fā)布給那些曾經(jīng)當(dāng)某一模塊發(fā)出某一事件時(shí),它自動(dòng)將這些事件發(fā)布給那些曾經(jīng)向自己注冊(cè)過此事件的模塊向自己注

27、冊(cè)過此事件的模塊有獨(dú)立的事件派遣模塊有獨(dú)立的事件派遣模塊 廣播式廣播式(All broadcasting) :派遣模塊將事件廣播到所有的模塊,:派遣模塊將事件廣播到所有的模塊,但只有感興趣的模塊才去取事件并觸發(fā)自身的行為;但只有感興趣的模塊才去取事件并觸發(fā)自身的行為; 選擇廣播式選擇廣播式(Selected broadcasting) :派遣模塊將事件送到那些:派遣模塊將事件送到那些已經(jīng)注冊(cè)了的模塊中。已經(jīng)注冊(cè)了的模塊中。2021/8/1438事件系統(tǒng)風(fēng)格我對(duì)此事件感興趣,觸發(fā)我的行為我對(duì)此事件不感興趣,不觸發(fā)我的行為我們都得到了事件廣播式事件派遣廣播式事件派遣2021/8/1439事件系統(tǒng)風(fēng)

28、格選擇廣播式事件派遣選擇廣播式事件派遣WIN32 Event HandlingApplications call the OS API(應(yīng)用程應(yīng)用程序調(diào)用操作系統(tǒng)的序調(diào)用操作系統(tǒng)的API 注冊(cè)自身及事件注冊(cè)自身及事件處理方法處理方法)OS creates events to notify the applications (操作系統(tǒng)根據(jù)應(yīng)用系統(tǒng)的操作系統(tǒng)根據(jù)應(yīng)用系統(tǒng)的行為,創(chuàng)建事件并通知其他已注冊(cè)的應(yīng)行為,創(chuàng)建事件并通知其他已注冊(cè)的應(yīng)用程序用程序)user input occurred (mouse, keyboard)messages from the network arrived, .t

29、ime-out happened, .application opened, system will be shut down, .2021/8/1441WIN32 Event Handling應(yīng)用程序1 的消息循環(huán): 循環(huán)接收屬于應(yīng)用程序1的消息Windows系統(tǒng)的消息循環(huán): 循環(huán)接收屬于操作系統(tǒng)的消息消息1消息2消息m應(yīng)用程序2 的消息循環(huán): 循環(huán)接收屬于應(yīng)用程序2的消息消息1消息2消息m應(yīng)用程序n 的消息循環(huán): 循環(huán)接收屬于應(yīng)用程序n的消息消息1消息2消息m用戶產(chǎn)生的事件或其他應(yīng)用程序發(fā)出的消息依據(jù)應(yīng)用程序隊(duì)列和消息確定向哪個(gè)應(yīng)用程序發(fā)送消息1消息2消息m依據(jù)消息和對(duì)象控制序列找到對(duì)應(yīng)該

30、消息的對(duì)象程序執(zhí)行之對(duì)象2對(duì)象n對(duì)象1對(duì)象2對(duì)象n對(duì)象1對(duì)象2對(duì)象n對(duì)象113425672021/8/1442數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)超文本系統(tǒng)和和黑板系統(tǒng)黑板系統(tǒng)都屬于倉庫風(fēng)都屬于倉庫風(fēng)格。在這種風(fēng)格中,格。在這種風(fēng)格中,數(shù)據(jù)數(shù)據(jù)倉庫(如文件或數(shù)據(jù)庫)倉庫(如文件或數(shù)據(jù)庫)位于這種體系結(jié)構(gòu)的中心位于這種體系結(jié)構(gòu)的中心,其他構(gòu)件會(huì)經(jīng)常訪問該數(shù)其他構(gòu)件會(huì)經(jīng)常訪問該數(shù)據(jù)倉庫,并對(duì)倉庫中的數(shù)據(jù)倉庫,并對(duì)倉庫中的數(shù)據(jù)進(jìn)行增加、修改或刪除據(jù)進(jìn)行增加、修改或刪除操作。右圖為一個(gè)典型的操作。右圖為一個(gè)典型的倉庫風(fēng)格的體系結(jié)構(gòu)。倉庫風(fēng)格的體系結(jié)構(gòu)。倉庫風(fēng)格 倉庫風(fēng)格倉庫風(fēng)格 2021/8/1443倉庫

31、風(fēng)格 倉庫風(fēng)格實(shí)例倉庫風(fēng)格實(shí)例注冊(cè)表注冊(cè)表 2021/8/1444倉庫風(fēng)格 倉庫風(fēng)格實(shí)例倉庫風(fēng)格實(shí)例注冊(cè)表注冊(cè)表 2021/8/1445倉庫風(fēng)格 倉庫風(fēng)格實(shí)例倉庫風(fēng)格實(shí)例剪貼板剪貼板2021/8/1446倉庫風(fēng)格 倉庫風(fēng)格實(shí)例倉庫風(fēng)格實(shí)例剪貼板剪貼板2021/8/1447倉庫風(fēng)格 倉庫風(fēng)格的連接件倉庫風(fēng)格的連接件2021/8/1448 黑板構(gòu)件負(fù)責(zé)協(xié)調(diào)信息在客戶間的傳遞黑板構(gòu)件負(fù)責(zé)協(xié)調(diào)信息在客戶間的傳遞,當(dāng)用戶感興趣的,當(dāng)用戶感興趣的數(shù)據(jù)發(fā)生變化時(shí),它將數(shù)據(jù)發(fā)生變化時(shí),它將通知客戶軟件通知客戶軟件。 黑板系統(tǒng)的組成如下圖所示:黑板系統(tǒng)的組成如下圖所示:倉庫風(fēng)格 黑板結(jié)構(gòu)黑板結(jié)構(gòu)2021/8/1

32、449 模型:包含核心功能和數(shù)據(jù)模型:包含核心功能和數(shù)據(jù) (核心業(yè)務(wù)邏輯)(核心業(yè)務(wù)邏輯) 視圖:向用戶顯示信息視圖:向用戶顯示信息 控制器:處理用戶輸入控制器:處理用戶輸入MVC風(fēng)格 MVC(Model-View-Controller)的組成)的組成2021/8/1450MVC風(fēng)格 將將人機(jī)交互人機(jī)交互從核心功能中從核心功能中分離分離出來出來(M) 模型對(duì)用戶來說是透明的,用戶只需要觀察視圖模型對(duì)用戶來說是透明的,用戶只需要觀察視圖(V) 用戶與模型的交互通過控制器提供的安全方法來實(shí)現(xiàn)用戶與模型的交互通過控制器提供的安全方法來實(shí)現(xiàn)(C) MVC的目的的目的 具有靈活人具有靈活人-機(jī)界面的交互

33、式應(yīng)用程序機(jī)界面的交互式應(yīng)用程序 可以靈活選擇不同的信息顯示方式 可以靈活選擇用戶的輸入方式 針對(duì)不同的用戶角色,提供不同的用戶界面針對(duì)不同的用戶角色,提供不同的用戶界面 不同用戶具有不同權(quán)限,操作的方式也有所不同 MVC的應(yīng)用領(lǐng)域的應(yīng)用領(lǐng)域2021/8/1451 封裝了內(nèi)核功能和數(shù)據(jù)封裝了內(nèi)核功能和數(shù)據(jù) 業(yè)務(wù)邏輯(軟件的核心) 數(shù)據(jù)以及訪問它們的函數(shù)(視圖組件使用) 執(zhí)行特定應(yīng)用程序處理的過程(控制器代表用戶調(diào)用) 模型對(duì)于用戶來說是不可見的模型對(duì)于用戶來說是不可見的(M與與V獨(dú)立獨(dú)立) 模型獨(dú)立于特定輸出表示或者輸入方式模型獨(dú)立于特定輸出表示或者輸入方式(M與與C獨(dú)立獨(dú)立) 用戶只能通過控

34、制器操作模型用戶只能通過控制器操作模型(C是是M與與V之間的橋梁之間的橋梁)MVC風(fēng)格 模型(模型(Model)2021/8/1452 向用戶顯示信息向用戶顯示信息 不同的視圖使用不同的方法呈現(xiàn)信息 每個(gè)視圖組件都有一個(gè)更新函數(shù),這個(gè)函數(shù)被模型變更通知激活 這個(gè)函數(shù)被激活(此時(shí)模型已經(jīng)改變)后,將使得視圖重新和模型一致 在初始化階段,視圖向模型登記請(qǐng)求變更通知(表) 從模型獲得數(shù)據(jù)從模型獲得數(shù)據(jù) 通過狀態(tài)查詢函數(shù)實(shí)現(xiàn) 例如:定時(shí)刷新MVC風(fēng)格 視圖(視圖(View)2021/8/1453每個(gè)視圖有一個(gè)相關(guān)的控制器組件每個(gè)視圖有一個(gè)相關(guān)的控制器組件(一一對(duì)應(yīng)一一對(duì)應(yīng)) 控制器組件接受控制器組件接

35、受事件事件,并翻譯成輸入,并翻譯成輸入 事件如何發(fā)送到控制器由用戶界面平臺(tái)決定 事件被翻譯成為對(duì)模型或者視圖的請(qǐng)求 如果控制器的行為依賴于模型的狀態(tài),那么控制器也需要向模型登記請(qǐng)求變更通知 例如:用戶點(diǎn)擊按鈕,按鈕的事件響應(yīng)函數(shù)將采取相應(yīng)的措施處理用戶要求 用戶僅僅通過控制器與系統(tǒng)交互用戶僅僅通過控制器與系統(tǒng)交互MVC風(fēng)格 控制器(控制器(Controller)2021/8/1454 一個(gè)模型可對(duì)應(yīng)多個(gè)視圖一個(gè)模型可對(duì)應(yīng)多個(gè)視圖 如果用戶通過一個(gè)視圖的控制器改變了模型中的數(shù)據(jù),那么依賴于該數(shù)據(jù)的其他視圖也應(yīng)該反映出這樣的變化 一旦模型的數(shù)據(jù)發(fā)生了變化,模型需要通知所有相關(guān)的視圖做出相應(yīng)的變化

36、工作原理:工作原理: 模型維護(hù)了一個(gè)表 所有視圖還有一些控制器在這個(gè)表中登記了對(duì)變更通知的需求 模型狀態(tài)的改變將觸發(fā)變更-傳播機(jī)制,每個(gè)在表中登記的視圖和控制器都會(huì)收到變更通知MVC風(fēng)格 變更變更-傳播機(jī)制傳播機(jī)制觀察者模式?觀察者模式?事件架構(gòu)?事件架構(gòu)?2021/8/1455 MVC是一種體系結(jié)構(gòu)是一種體系結(jié)構(gòu) 通過各類技術(shù)的組合來實(shí)現(xiàn) 通過各類框架實(shí)現(xiàn)(struts等) 最終實(shí)現(xiàn):前臺(tái)頁面設(shè)計(jì)與核心業(yè)務(wù)邏輯分離。MVC風(fēng)格 MVC的實(shí)現(xiàn)的實(shí)現(xiàn)2021/8/1456體系結(jié)構(gòu)風(fēng)格 基于網(wǎng)絡(luò)的體系結(jié)構(gòu)基于網(wǎng)絡(luò)的體系結(jié)構(gòu)客戶端(瀏覽器)客戶端(瀏覽器)/服務(wù)器體系結(jié)構(gòu)服務(wù)器體系結(jié)構(gòu):一層一層/兩

37、層兩層/三層結(jié)構(gòu)、三層結(jié)構(gòu)、Java EESOA與與Web Services云計(jì)算體系結(jié)構(gòu)云計(jì)算體系結(jié)構(gòu)2021/8/1457 1965-1985:以大型機(jī)為核心的:以大型機(jī)為核心的集中式處理模式集中式處理模式; 1986-1990:以:以PC/文件服務(wù)器文件服務(wù)器為核心的為核心的文件共享計(jì)算模式文件共享計(jì)算模式; 1990-1996:以:以C/S結(jié)構(gòu)結(jié)構(gòu)為主流的為主流的分布式計(jì)算模式分布式計(jì)算模式; 1996- :以:以Web為核心、為核心、B/S結(jié)構(gòu)結(jié)構(gòu)為主流的為主流的分布式計(jì)算模式分布式計(jì)算模式; 2000- :以各類移動(dòng)設(shè)備為核心的:以各類移動(dòng)設(shè)備為核心的普適計(jì)算模式;普適計(jì)算模式;

38、2005- :以:以Grid、P2P、Web2.0等為核心的等為核心的分布式計(jì)算模式分布式計(jì)算模式;客戶端/服務(wù)器體系結(jié)構(gòu) 計(jì)算模式經(jīng)歷了以下六代:計(jì)算模式經(jīng)歷了以下六代:2021/8/1458 一個(gè)應(yīng)用系統(tǒng)被分為兩個(gè)邏輯上分離的部分,每一部分充當(dāng)不同的角色、完成不同的功能,多臺(tái)計(jì)算機(jī)共同完成統(tǒng)一的任務(wù)。 客戶機(jī)客戶機(jī)(前端,前端,front-end):業(yè)務(wù)邏輯、與服務(wù)器通訊的接口; 服務(wù)器服務(wù)器(后端:后端:back-end):與客戶機(jī)通訊的接口、業(yè)務(wù)邏輯、數(shù)據(jù)管理。 一般的:一般的: 客戶機(jī)為完成特定的工作向服務(wù)器發(fā)出請(qǐng)求;客戶機(jī)為完成特定的工作向服務(wù)器發(fā)出請(qǐng)求; 服務(wù)器處理客戶機(jī)的請(qǐng)求并

39、返回結(jié)果。服務(wù)器處理客戶機(jī)的請(qǐng)求并返回結(jié)果??蛻舳?服務(wù)器體系結(jié)構(gòu) 客戶機(jī)客戶機(jī)/服務(wù)器服務(wù)器 (Client-Server Architecture)2021/8/1459 兩層C/S 三層C/S 多層C/S客戶端/服務(wù)器體系結(jié)構(gòu) C/S結(jié)構(gòu)發(fā)展歷程結(jié)構(gòu)發(fā)展歷程客戶界面數(shù)據(jù)庫服務(wù)器客戶界面數(shù)據(jù)庫服務(wù)器業(yè)務(wù)邏輯服務(wù)器客戶界面數(shù)據(jù)庫服務(wù)器業(yè)務(wù)邏輯服務(wù)器Web服務(wù)器2021/8/1460客戶端/服務(wù)器體系結(jié)構(gòu) 兩層兩層C/S用戶1用戶2用戶3用戶4用戶5Print ServerLink/RxLPT1LPT2COMPower/TXPWROKWIC0ACT/CH0ACT/CH1WIC0ACT/CH0A

40、CT/CH1ETHACTCOL其他公用設(shè)備打印機(jī)調(diào)制解調(diào)器InternetIntranet數(shù)據(jù)庫服務(wù)器2021/8/1461客戶端/服務(wù)器體系結(jié)構(gòu) 兩層兩層C/SClientServer2021/8/1462客戶端/服務(wù)器體系結(jié)構(gòu) 兩層兩層C/S 基本構(gòu)件:基本構(gòu)件: 數(shù)據(jù)庫服務(wù)器:存放數(shù)據(jù)的數(shù)據(jù)庫、負(fù)責(zé)數(shù)據(jù)處理的業(yè)務(wù)邏輯; 客戶機(jī)應(yīng)用程序: GUI:用戶界面 業(yè)務(wù)邏輯:利用客戶機(jī)上的應(yīng)用程序?qū)?shù)據(jù)進(jìn)行處理; 連接件:連接件:經(jīng)由網(wǎng)絡(luò)的調(diào)用經(jīng)由網(wǎng)絡(luò)的調(diào)用-返回機(jī)制或隱式調(diào)用機(jī)制。返回機(jī)制或隱式調(diào)用機(jī)制。 客戶機(jī)服務(wù)器:客戶機(jī)向服務(wù)器發(fā)送請(qǐng)求,并接收返回結(jié)果。2021/8/1463客戶端/服務(wù)器

41、體系結(jié)構(gòu) 兩層兩層C/S 業(yè)務(wù)邏輯的劃分比重:業(yè)務(wù)邏輯的劃分比重:在客戶端多一些還是在服務(wù)器端多一些?在客戶端多一些還是在服務(wù)器端多一些? (胖客戶端:客戶端執(zhí)行大部分的數(shù)據(jù)處理操作) (瘦客戶端:客戶端具有很少或沒有業(yè)務(wù)邏輯)2021/8/1464客戶端/服務(wù)器體系結(jié)構(gòu) 兩層兩層C/S應(yīng)用應(yīng)用 兩兩層層C/S架構(gòu)通常被用在那些管理與操作不太復(fù)雜的非實(shí)時(shí)的信息架構(gòu)通常被用在那些管理與操作不太復(fù)雜的非實(shí)時(shí)的信息處理系統(tǒng)處理系統(tǒng) 適合于輕量級(jí)事務(wù)適合于輕量級(jí)事務(wù) 客戶機(jī)對(duì)服務(wù)器的請(qǐng)求少,數(shù)據(jù)傳輸量少客戶機(jī)對(duì)服務(wù)器的請(qǐng)求少,數(shù)據(jù)傳輸量少 當(dāng)業(yè)務(wù)邏輯較少變化以及用戶數(shù)當(dāng)業(yè)務(wù)邏輯較少變化以及用戶數(shù)少于少

42、于100時(shí),兩層時(shí),兩層C/S架構(gòu)架構(gòu)的性能的性能較好較好2021/8/1465客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S 在客戶端與數(shù)據(jù)庫服務(wù)器之間增加了一個(gè)中間層在客戶端與數(shù)據(jù)庫服務(wù)器之間增加了一個(gè)中間層 中間層可能為:事務(wù)處理監(jiān)控服務(wù)器、消息服務(wù)器、應(yīng)用服務(wù)器中間層可能為:事務(wù)處理監(jiān)控服務(wù)器、消息服務(wù)器、應(yīng)用服務(wù)器 中間層負(fù)責(zé)消息排隊(duì)、業(yè)務(wù)邏輯執(zhí)行、數(shù)據(jù)傳輸?shù)裙δ苤虚g層負(fù)責(zé)消息排隊(duì)、業(yè)務(wù)邏輯執(zhí)行、數(shù)據(jù)傳輸?shù)裙δ?021/8/1466客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S應(yīng)用應(yīng)用輸入數(shù)據(jù)輸出數(shù)據(jù)請(qǐng)求按鈕表示層業(yè)務(wù)處理開始SQL 請(qǐng)求結(jié)束SQL 請(qǐng)求開始業(yè)務(wù)處理結(jié)束數(shù)據(jù)存取請(qǐng)求業(yè)務(wù)處理程序業(yè)務(wù)處

43、理請(qǐng)求和業(yè)務(wù)處理所需的全部輸入數(shù)據(jù)全部處理結(jié)束DBMS 執(zhí)行SQL數(shù)據(jù)層業(yè)務(wù)處理開始數(shù)據(jù)存取請(qǐng)求業(yè)務(wù)處理結(jié)束數(shù)據(jù)存取程序數(shù)據(jù)登錄/更新/讀取的請(qǐng)求數(shù)據(jù)登錄/更新/讀取的結(jié)果功能層2021/8/1467客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S 表示層表示層: 用戶接口部分,擔(dān)負(fù)著用戶與應(yīng)用之間的對(duì)話功能;用戶接口部分,擔(dān)負(fù)著用戶與應(yīng)用之間的對(duì)話功能; 檢查用戶的輸入,顯示應(yīng)用的輸出;檢查用戶的輸入,顯示應(yīng)用的輸出; 通常使用通常使用GUI; 在變更時(shí),只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響在變更時(shí),只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他層;其他層; 不包含或包含一部分業(yè)務(wù)邏輯。不包含或

44、包含一部分業(yè)務(wù)邏輯。2021/8/1468客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S 表示層表示層: 用戶接口部分,擔(dān)負(fù)著用戶與應(yīng)用之間的對(duì)話功能;用戶接口部分,擔(dān)負(fù)著用戶與應(yīng)用之間的對(duì)話功能; 檢查用戶的輸入,顯示應(yīng)用的輸出;檢查用戶的輸入,顯示應(yīng)用的輸出; 通常使用通常使用GUI; 在變更時(shí),只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響在變更時(shí),只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他層;其他層; 不包含或包含一部分業(yè)務(wù)邏輯。不包含或包含一部分業(yè)務(wù)邏輯。2021/8/1469客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S 功能層功能層: 應(yīng)用系統(tǒng)的主體,包括大部分業(yè)務(wù)處理邏輯應(yīng)用系統(tǒng)的主體,包括大

45、部分業(yè)務(wù)處理邏輯 (通常以業(yè)務(wù)構(gòu)件通常以業(yè)務(wù)構(gòu)件的形式存在,如的形式存在,如JavaBean/EJB/COM等等); 從表示層獲取用戶的輸入數(shù)據(jù)并加以處理;從表示層獲取用戶的輸入數(shù)據(jù)并加以處理; 處理過程中需要從數(shù)據(jù)層獲取數(shù)據(jù)或向數(shù)據(jù)層更新數(shù)據(jù);處理過程中需要從數(shù)據(jù)層獲取數(shù)據(jù)或向數(shù)據(jù)層更新數(shù)據(jù); 處理結(jié)果返回給表示層。處理結(jié)果返回給表示層。2021/8/1470客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S 數(shù)據(jù)層數(shù)據(jù)層: DMBS; 接受功能層的數(shù)據(jù)查詢請(qǐng)求,執(zhí)行請(qǐng)求,并將查詢結(jié)果返回接受功能層的數(shù)據(jù)查詢請(qǐng)求,執(zhí)行請(qǐng)求,并將查詢結(jié)果返回給功能層;給功能層; 從功能層接受數(shù)據(jù)存取請(qǐng)求,并將數(shù)據(jù)寫入數(shù)據(jù)

46、庫;從功能層接受數(shù)據(jù)存取請(qǐng)求,并將數(shù)據(jù)寫入數(shù)據(jù)庫; 請(qǐng)求的執(zhí)行結(jié)果也要返回給功能層。請(qǐng)求的執(zhí)行結(jié)果也要返回給功能層。2021/8/1471客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S結(jié)構(gòu)的物理結(jié)構(gòu)結(jié)構(gòu)的物理結(jié)構(gòu) 兩層兩層C/S已經(jīng)將數(shù)據(jù)層分離出來已經(jīng)將數(shù)據(jù)層分離出來 三層三層C/S則要將則要將表示層與功能層分離開來表示層與功能層分離開來,形成獨(dú)立的程序,并,形成獨(dú)立的程序,并使二者之間的接口簡潔明了。使二者之間的接口簡潔明了。 問題:這三個(gè)層次在物理上是如何分布的?問題:這三個(gè)層次在物理上是如何分布的?2021/8/1472客戶端/服務(wù)器體系結(jié)構(gòu) 基于集群基于集群(Cluster)的的C/S物理分布

47、物理分布 事實(shí)上,功能層通常事實(shí)上,功能層通常不是只駐留在同一臺(tái)服務(wù)器上不是只駐留在同一臺(tái)服務(wù)器上,數(shù)據(jù)層也是,數(shù)據(jù)層也是如此;如此; 如果如果功能層功能層(或數(shù)據(jù)層或數(shù)據(jù)層)分布在多臺(tái)服務(wù)器上分布在多臺(tái)服務(wù)器上,那么就形成了基于,那么就形成了基于集群集群(Cluster)的的C/S物理分布模式。物理分布模式。2021/8/1473客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S結(jié)構(gòu)的優(yōu)點(diǎn)結(jié)構(gòu)的優(yōu)點(diǎn) 在用戶數(shù)目較多的情況下,三層在用戶數(shù)目較多的情況下,三層C/S結(jié)構(gòu)將結(jié)構(gòu)將極大改善性能與靈活極大改善性能與靈活性性(通常可支持?jǐn)?shù)百并發(fā)用戶,通過集群可達(dá)數(shù)萬并發(fā)用戶通??芍С?jǐn)?shù)百并發(fā)用戶,通過集群可達(dá)數(shù)萬并

48、發(fā)用戶); 允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對(duì)獨(dú)立性,允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對(duì)獨(dú)立性,能能提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性提高系統(tǒng)和軟件的可維護(hù)性和可擴(kuò)展性 允許更靈活有效地選用相應(yīng)的平臺(tái)和硬件系統(tǒng),并且這些平臺(tái)和允許更靈活有效地選用相應(yīng)的平臺(tái)和硬件系統(tǒng),并且這些平臺(tái)和各個(gè)組成部分可以具有各個(gè)組成部分可以具有良好的可升級(jí)性和開放性良好的可升級(jí)性和開放性。2021/8/1474客戶端/服務(wù)器體系結(jié)構(gòu) 瀏覽器瀏覽器/服務(wù)器服務(wù)器(Browser/Server Architecture) 瀏覽器瀏覽器/服務(wù)器服務(wù)器(B/S)是三層是三層C/S風(fēng)格的一種實(shí)現(xiàn)

49、方式。風(fēng)格的一種實(shí)現(xiàn)方式。 表現(xiàn)層:瀏覽器 邏輯層: Web服務(wù)器 應(yīng)用服務(wù)器 數(shù)據(jù)層:數(shù)據(jù)庫服務(wù)器2021/8/1475客戶端/服務(wù)器體系結(jié)構(gòu) 瀏覽器瀏覽器/服務(wù)器服務(wù)器(Browser/Server Architecture) J2EE平臺(tái)典型平臺(tái)典型B/S結(jié)構(gòu)的實(shí)現(xiàn)方式結(jié)構(gòu)的實(shí)現(xiàn)方式2021/8/1476客戶端/服務(wù)器體系結(jié)構(gòu) B/S架構(gòu)的優(yōu)點(diǎn)架構(gòu)的優(yōu)點(diǎn) 基于基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護(hù)全在服務(wù)器端解決,解決,系統(tǒng)維護(hù)成本低系統(tǒng)維護(hù)成本低: 客戶端無任何業(yè)務(wù)邏輯,用戶在使用系統(tǒng)時(shí),僅僅需要一個(gè)瀏覽器就可運(yùn)行全部的模塊,真正達(dá)到了“零客戶端”的功能,很容易在運(yùn)行時(shí)自動(dòng)升級(jí)。 良好的靈活性和可擴(kuò)展性:對(duì)于環(huán)境和應(yīng)用條件經(jīng)常變動(dòng)的情況,只要對(duì)業(yè)務(wù)邏輯層實(shí)施相應(yīng)的改變,就能夠達(dá)到目的。 三層模式成為真正意義上的三層模式成為真正意義上的“瘦客戶端瘦客戶端”,從而具備了很高的穩(wěn),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論