版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、_軟件體系結(jié)構(gòu)模式分類 低層模式:慣用法低層模式:慣用法(idiom) 中層模式:設(shè)計模式中層模式:設(shè)計模式(design pattern) 高層模式:體系結(jié)構(gòu)模式高層模式:體系結(jié)構(gòu)模式(architecture pattern) 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)件負責對數(shù)據(jù)進括處理構(gòu)件、數(shù)據(jù)構(gòu)件和連接構(gòu)件。處理構(gòu)件負責對數(shù)據(jù)進行加工,數(shù)據(jù)構(gòu)件是被加工的信息,連接構(gòu)件把體系結(jié)構(gòu)的行加工,數(shù)據(jù)構(gòu)件
2、是被加工的信息,連接構(gòu)件把體系結(jié)構(gòu)的不同部分組合連接起來。不同部分組合連接起來?!?基本概念基本概念框架框架 隨著應(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ù)邏輯問題。 在組織形式上,在組織形式上,框架是一個待實例化的完整系統(tǒng)框架是一個待實
3、例化的完整系統(tǒng),定義,定義了軟件系統(tǒng)的元素和關(guān)系,創(chuàng)建了基本的模塊,定義了涉了軟件系統(tǒng)的元素和關(guān)系,創(chuàng)建了基本的模塊,定義了涉及功能更改和擴充的插件位置。典型的框架例子有及功能更改和擴充的插件位置。典型的框架例子有MFC框框架架和和Struts框架框架。 體系結(jié)構(gòu)的重要作用體現(xiàn)在以下三個方面體系結(jié)構(gòu)的重要作用體現(xiàn)在以下三個方面 :(1)體系結(jié)構(gòu)的表示有助于風險承擔者(項目干系)體系結(jié)構(gòu)的表示有助于風險承擔者(項目干系 人)進行人)進行交流交流。 (2)體系結(jié)構(gòu)突出了早期設(shè)計決策。)體系結(jié)構(gòu)突出了早期設(shè)計決策。 (3)軟件體系結(jié)構(gòu)是可傳遞和可復(fù)用的)軟件體系結(jié)構(gòu)是可傳遞和可復(fù)用的模型模型。 基本
4、概念 體系結(jié)構(gòu)的重要作用體系結(jié)構(gòu)的重要作用體系結(jié)構(gòu)風格 傳統(tǒng)的體系結(jié)構(gòu)傳統(tǒng)的體系結(jié)構(gòu)數(shù)據(jù)流風格數(shù)據(jù)流風格 (Dataflow):批處理序列、管道過濾器風格批處理序列、管道過濾器風格 (Pipe-and-Filter)調(diào)用調(diào)用/返回風格返回風格:主程序主程序/子程序、面向?qū)ο箫L格子程序、面向?qū)ο箫L格 (ADT)、層次系統(tǒng)、層次系統(tǒng) (Layered Systems)事件系統(tǒng)風格事件系統(tǒng)風格:進程通信、事件系統(tǒng)進程通信、事件系統(tǒng)倉庫風格倉庫風格:數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)MVC軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)體系結(jié)構(gòu)風格 基于網(wǎng)絡(luò)的體系結(jié)構(gòu)基于網(wǎng)絡(luò)的體系結(jié)構(gòu)客戶端(服
5、務(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)格計算體系結(jié)構(gòu)網(wǎng)格計算體系結(jié)構(gòu)SOA與與Web Services云計算體系結(jié)構(gòu)云計算體系結(jié)構(gòu)當輸入數(shù)據(jù)經(jīng)過一系列的計算和操作構(gòu)件的變換形成輸當輸入數(shù)據(jù)經(jīng)過一系列的計算和操作構(gòu)件的變換形成輸出數(shù)據(jù)時,可以應(yīng)用這種體系結(jié)構(gòu)。出數(shù)據(jù)時,可以應(yīng)用這種體系結(jié)構(gòu)。管道管道/ /過濾器過濾器、批處理序列批處理序列都屬于數(shù)據(jù)流風格。都屬于數(shù)據(jù)流風格。管道管道/ /過濾器結(jié)構(gòu)如下圖所示:過濾器結(jié)構(gòu)如下圖所示:數(shù)據(jù)流風格 數(shù)據(jù)流風格數(shù)據(jù)流風格 管道管道/ /過濾器結(jié)構(gòu)過濾器結(jié)
6、構(gòu) Linux系統(tǒng)中的命令序列堆疊的數(shù)據(jù)過程(圖像處理) 從上圖可看出,管道從上圖可看出,管道/過濾器結(jié)構(gòu)擁有一組被稱為過濾器結(jié)構(gòu)擁有一組被稱為過濾過濾器器(filter)的構(gòu)件,這些構(gòu)件通過)的構(gòu)件,這些構(gòu)件通過管道管道(pipe)連接,管)連接,管道將數(shù)據(jù)從一個構(gòu)件傳送到下一個構(gòu)件。道將數(shù)據(jù)從一個構(gòu)件傳送到下一個構(gòu)件。 每個過濾器獨立于其上游和下游的構(gòu)件而工作,過濾器每個過濾器獨立于其上游和下游的構(gòu)件而工作,過濾器的設(shè)計要針對某種形式的數(shù)據(jù)輸入,并且產(chǎn)生某種特定形的設(shè)計要針對某種形式的數(shù)據(jù)輸入,并且產(chǎn)生某種特定形式的數(shù)據(jù)輸出。式的數(shù)據(jù)輸出。 如果數(shù)據(jù)流退化成為單線的變換,則稱為如果數(shù)據(jù)流退
7、化成為單線的變換,則稱為批處理序列批處理序列(batch sequential)。這種結(jié)構(gòu)接收一批數(shù)據(jù),然后應(yīng))。這種結(jié)構(gòu)接收一批數(shù)據(jù),然后應(yīng)用一系列連續(xù)的構(gòu)件(過濾器)變換它。用一系列連續(xù)的構(gòu)件(過濾器)變換它。數(shù)據(jù)流風格管道管道/ /過濾器風格具有以下過濾器風格具有以下優(yōu)點優(yōu)點:(1 1)使得軟構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合的特)使得軟構(gòu)件具有良好的隱蔽性和高內(nèi)聚、低耦合的特 點。點。(2 2)允許設(shè)計者將整個系統(tǒng)的輸入)允許設(shè)計者將整個系統(tǒng)的輸入/ /輸出行為看成是輸出行為看成是多個過多個過 濾器的行為的簡單合成濾器的行為的簡單合成。 (3 3)支持軟件復(fù)用支持軟件復(fù)用。只要提供適
8、合在兩個過濾器之間傳送。只要提供適合在兩個過濾器之間傳送 的數(shù)據(jù),任何兩個過濾器都可被連接起來。的數(shù)據(jù),任何兩個過濾器都可被連接起來。(4 4)系統(tǒng)維護和增強系統(tǒng)性能簡單。)系統(tǒng)維護和增強系統(tǒng)性能簡單。新的過濾器新的過濾器可以添加可以添加 到現(xiàn)有系統(tǒng)中來;到現(xiàn)有系統(tǒng)中來;舊的舊的可以被改進的過濾器替換掉??梢员桓倪M的過濾器替換掉。(5 5)允許對一些如吞吐量、死鎖等屬性的分析。)允許對一些如吞吐量、死鎖等屬性的分析。(6 6)支持并行執(zhí)行支持并行執(zhí)行。每個過濾器是作為一個單獨的任務(wù)完。每個過濾器是作為一個單獨的任務(wù)完 成,因此可與其他任務(wù)并行執(zhí)行。成,因此可與其他任務(wù)并行執(zhí)行。數(shù)據(jù)流風格管道管
9、道/過濾器風格主要過濾器風格主要缺點缺點如下:如下:(1)通常導(dǎo)致進程成為批處理的結(jié)構(gòu)。這是因為雖然過濾)通常導(dǎo)致進程成為批處理的結(jié)構(gòu)。這是因為雖然過濾器可增量式地處理數(shù)據(jù),但它們是獨立的,所以設(shè)計者必須器可增量式地處理數(shù)據(jù),但它們是獨立的,所以設(shè)計者必須將每個過濾器看成一個完整的從輸入到輸出的轉(zhuǎn)換。將每個過濾器看成一個完整的從輸入到輸出的轉(zhuǎn)換。(2)不適合處理交互不適合處理交互 的應(yīng)用。當需要增量地顯示改變時,的應(yīng)用。當需要增量地顯示改變時,這個問題尤為嚴重。這個問題尤為嚴重。(3)因為在數(shù)據(jù)傳輸上沒有通用的標準,每個過濾器都)因為在數(shù)據(jù)傳輸上沒有通用的標準,每個過濾器都增增加了解析和合成數(shù)
10、據(jù)的工作加了解析和合成數(shù)據(jù)的工作,這樣就導(dǎo)致了系統(tǒng)性能下降,這樣就導(dǎo)致了系統(tǒng)性能下降,并增加了編寫過濾器的復(fù)雜性。并增加了編寫過濾器的復(fù)雜性。數(shù)據(jù)流風格在此類體系結(jié)構(gòu)中,存在以下在此類體系結(jié)構(gòu)中,存在以下3種子風格種子風格。 主程序主程序/子程序體系結(jié)構(gòu)子程序體系結(jié)構(gòu)(C語言?)語言?) 這種傳統(tǒng)的程序結(jié)構(gòu)將功能分解為一個控制層次,其這種傳統(tǒng)的程序結(jié)構(gòu)將功能分解為一個控制層次,其中中“主主”程序調(diào)用一組程序構(gòu)件,這些程序構(gòu)件又去調(diào)用別程序調(diào)用一組程序構(gòu)件,這些程序構(gòu)件又去調(diào)用別的程序構(gòu)件,如下圖所示。這種結(jié)構(gòu)總體上為樹狀結(jié)的程序構(gòu)件,如下圖所示。這種結(jié)構(gòu)總體上為樹狀結(jié)構(gòu),可以在底層存在公共模塊
11、。構(gòu),可以在底層存在公共模塊。調(diào)用返回風格 調(diào)用調(diào)用返回風格返回風格(常見,發(fā)揮主要作用)(常見,發(fā)揮主要作用) 主程序主程序/子程序體系結(jié)構(gòu)的子程序體系結(jié)構(gòu)的優(yōu)點優(yōu)點如下如下:(1)可以使用)可以使用自頂向下自頂向下,逐步分解逐步分解的方法得到體系結(jié)構(gòu)的方法得到體系結(jié)構(gòu)圖,典型的拓撲結(jié)構(gòu)為樹狀結(jié)構(gòu)?;诙x圖,典型的拓撲結(jié)構(gòu)為樹狀結(jié)構(gòu)?;诙x使用關(guān)系對子使用關(guān)系對子程序進行分解,使用過程調(diào)用作為程序之間的交互機制。程序進行分解,使用過程調(diào)用作為程序之間的交互機制。(2)采用程序設(shè)計語言支持的單線程控制。)采用程序設(shè)計語言支持的單線程控制。其主要其主要缺點缺點如下如下:(1)子程序的正確性難
12、于判斷。需要運用層次推理來判斷)子程序的正確性難于判斷。需要運用層次推理來判斷子程序的正確性,因為子程序的正確性取決于它調(diào)用的子程子程序的正確性,因為子程序的正確性取決于它調(diào)用的子程序的正確性。序的正確性。(2)子系統(tǒng)的結(jié)構(gòu)不清晰。通??梢詫⒍鄠€子程序合成為)子系統(tǒng)的結(jié)構(gòu)不清晰。通??梢詫⒍鄠€子程序合成為模塊。模塊。調(diào)用返回風格 面向?qū)ο蟮恼{(diào)用面向?qū)ο蟮恼{(diào)用返回風格返回風格 系統(tǒng)的構(gòu)件系統(tǒng)的構(gòu)件(類類/對象對象)封裝了數(shù)據(jù)和必須應(yīng)用到該數(shù)據(jù)上的操封裝了數(shù)據(jù)和必須應(yīng)用到該數(shù)據(jù)上的操作,構(gòu)件間通過消息傳遞進行通信與合作。與主程序作,構(gòu)件間通過消息傳遞進行通信與合作。與主程序/子程子程序的體系結(jié)構(gòu)相
13、比,面向?qū)ο箫L格中的對象交互會復(fù)雜一序的體系結(jié)構(gòu)相比,面向?qū)ο箫L格中的對象交互會復(fù)雜一些。面向?qū)ο箫L格與網(wǎng)絡(luò)應(yīng)用的需求在分布性、自治性、些。面向?qū)ο箫L格與網(wǎng)絡(luò)應(yīng)用的需求在分布性、自治性、協(xié)作性、演化性等方面具有內(nèi)在的一致性。協(xié)作性、演化性等方面具有內(nèi)在的一致性。 面向?qū)ο箫L格具有以下面向?qū)ο箫L格具有以下優(yōu)點優(yōu)點: :(1 1)因為對象對其他對象隱藏它的表示,所以可以改變一)因為對象對其他對象隱藏它的表示,所以可以改變一 個對象的表示,而不影響其他對象。個對象的表示,而不影響其他對象。(2 2)設(shè)計者可將一些數(shù)據(jù)存取操作的問題分解成一些交互)設(shè)計者可將一些數(shù)據(jù)存取操作的問題分解成一些交互 的代理
14、程序的集合。的代理程序的集合。調(diào)用返回風格其其缺點缺點如下如下:(1)為了使一個對象和另一個對象通過過程調(diào)用等進行)為了使一個對象和另一個對象通過過程調(diào)用等進行 交互,必須知道對象的標識。只要一個對象的標識交互,必須知道對象的標識。只要一個對象的標識 改變了,就必須修改所有其他明確調(diào)用它的對象。改變了,就必須修改所有其他明確調(diào)用它的對象。(2)必須修改所有顯式調(diào)用它的其他對象,并消除由此)必須修改所有顯式調(diào)用它的其他對象,并消除由此 帶來的一些副作用。例如,如果帶來的一些副作用。例如,如果A使用了對象使用了對象B,C 也使用了對象也使用了對象B,那么,那么,C對對B的使用所造成的對的使用所造成
15、的對A 的影響可能是料想不到的。的影響可能是料想不到的。 調(diào)用返回風格 層次結(jié)構(gòu)層次結(jié)構(gòu) 層次結(jié)構(gòu)的基本結(jié)構(gòu)如下圖所示。在這種體系結(jié)構(gòu)中,整層次結(jié)構(gòu)的基本結(jié)構(gòu)如下圖所示。在這種體系結(jié)構(gòu)中,整個系統(tǒng)被組織成一個分層結(jié)構(gòu),每一層為上層提供服務(wù),并個系統(tǒng)被組織成一個分層結(jié)構(gòu),每一層為上層提供服務(wù),并作為下一層的客戶。作為下一層的客戶。調(diào)用返回風格 各種構(gòu)件 過程調(diào)用 各類網(wǎng)絡(luò)協(xié)議棧層級之間的調(diào)用-返回避免復(fù)雜性 這種風格支持基于可增加抽象層的設(shè)計。允許將復(fù)雜問這種風格支持基于可增加抽象層的設(shè)計。允許將復(fù)雜問題分解成一個增量步驟序列的實現(xiàn)。題分解成一個增量步驟序列的實現(xiàn)。由于每一層最多只影響由于每一層
16、最多只影響兩層兩層,同時只要給相鄰層提供,同時只要給相鄰層提供相同的接口相同的接口,允許每層用不同,允許每層用不同的方法實現(xiàn),同樣為軟件復(fù)用提供了強大的支持。的方法實現(xiàn),同樣為軟件復(fù)用提供了強大的支持。 調(diào)用返回風格調(diào)用返回風格調(diào)用返回風格765網(wǎng)絡(luò)層網(wǎng)絡(luò)層321應(yīng)用層應(yīng)用層表示層表示層會話層會話層報文流報文流報文流報文流報文流報文流應(yīng)用層應(yīng)用層表示層表示層會話層會話層4傳輸層傳輸層段流段流傳輸層傳輸層轉(zhuǎn)接節(jié)點轉(zhuǎn)接節(jié)點網(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é)點轉(zhuǎn)接節(jié)點分組流分組流子子 網(wǎng)絡(luò)層網(wǎng)絡(luò)層網(wǎng)網(wǎng)內(nèi)內(nèi) 鏈路層鏈路層 幀流幀流 鏈路
17、層鏈路層部部物理層物理層物理層物理層協(xié)議協(xié)議協(xié)協(xié)物理層物理層 議議 物理層物理層通信子網(wǎng)通信子網(wǎng)比特流比特流物理層物理層分層系統(tǒng)實例:分層系統(tǒng)實例: ISO/OSI網(wǎng)絡(luò)的分層模型網(wǎng)絡(luò)的分層模型調(diào)用返回風格用戶用戶Shell解釋運行解釋運行語言處理、系統(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)計算機硬件計算機硬件(CPU、存儲器、存儲器、I/O等等)分層系統(tǒng)實例:計算機操作系統(tǒng)分層系統(tǒng)實例:計算機操作系統(tǒng)(OS)的層次結(jié)構(gòu)的層次結(jié)構(gòu)層次結(jié)構(gòu)具有以下層次結(jié)構(gòu)具有以下優(yōu)點優(yōu)點:(1)支
18、持基于抽象程度遞增的系統(tǒng)設(shè)計,使設(shè)計者可以把)支持基于抽象程度遞增的系統(tǒng)設(shè)計,使設(shè)計者可以把 一個復(fù)雜系統(tǒng)按遞增的步驟進行分解。一個復(fù)雜系統(tǒng)按遞增的步驟進行分解。 (2)支持功能增強,因為每一層至多和相鄰的上下層交)支持功能增強,因為每一層至多和相鄰的上下層交 互,因此,功能的改變最多影響相鄰的內(nèi)外層?;ィ虼?,功能的改變最多影響相鄰的內(nèi)外層。(3)支持復(fù)用。支持復(fù)用。只要提供的服務(wù)接口定義不變,同一層的只要提供的服務(wù)接口定義不變,同一層的 不同實現(xiàn)可以交換使用。這樣,就可以定義一組標準不同實現(xiàn)可以交換使用。這樣,就可以定義一組標準 的接口,從而允許各種不同的實現(xiàn)方法。的接口,從而允許各種不同
19、的實現(xiàn)方法。調(diào)用返回風格其其缺點缺點如下如下:(1)并不是)并不是每個系統(tǒng)都可以很容易地劃分為分層的模式每個系統(tǒng)都可以很容易地劃分為分層的模式, 甚至即使一個系統(tǒng)的邏輯結(jié)構(gòu)是層次化的,出于對系甚至即使一個系統(tǒng)的邏輯結(jié)構(gòu)是層次化的,出于對系 統(tǒng)性能的考慮,系統(tǒng)設(shè)計師不得不把一些低級或高級統(tǒng)性能的考慮,系統(tǒng)設(shè)計師不得不把一些低級或高級 的功能綜合起來。的功能綜合起來。(2)很難找到一個合適的、正確的層次抽象方法。)很難找到一個合適的、正確的層次抽象方法。調(diào)用返回風格數(shù)據(jù)流與調(diào)用-返回事件系統(tǒng)風格 事件系統(tǒng)風格(獨立構(gòu)件)事件系統(tǒng)風格(獨立構(gòu)件) GUI編程 Windows操作系統(tǒng)中Hook機制 J
20、query中的回調(diào)事件系統(tǒng)風格事件系統(tǒng)風格 事件系統(tǒng)風格事件系統(tǒng)風格 典型的體系結(jié)構(gòu)風格事件系統(tǒng)風格事件系統(tǒng)風格為何稱為為何稱為“獨立構(gòu)件獨立構(gòu)件”風格?風格? 這種風格的主要特點是:這種風格的主要特點是:事件的觸發(fā)者并不知道哪事件的觸發(fā)者并不知道哪些構(gòu)件會被這些事件影響,相互保持獨立些構(gòu)件會被這些事件影響,相互保持獨立。這樣不能假定構(gòu)件的處理順序,甚至不知道哪些過程會被調(diào)用;各個構(gòu)件之間彼此之間無連接關(guān)系,各自獨立存在,通過對事件的發(fā)布和注冊實現(xiàn)關(guān)聯(lián)對事件的發(fā)布和注冊實現(xiàn)關(guān)聯(lián);事件系統(tǒng)風格遇到斷點,編輯器將源代碼滾動到斷點處,變量監(jiān)測器則更新當前變量值遇到斷點,編輯器將源代碼滾動到斷點處,變
21、量監(jiān)測器則更新當前變量值并顯示出來。并顯示出來。如何完成如何完成 ?事件系統(tǒng)風格事件系統(tǒng)的基本構(gòu)成與工作原理事件系統(tǒng)的基本構(gòu)成與工作原理事件系統(tǒ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)試器注冊,接收編輯器與變量監(jiān)視器向調(diào)試器注冊,接收“斷點事件斷點事件”; 一旦遇到斷點,調(diào)試器發(fā)布事件,從而觸發(fā)一旦遇到斷點,調(diào)試器發(fā)布事件,從而觸發(fā)“編輯器編輯器”與與“變
22、量監(jiān)測變量監(jiān)測器器” ; 編輯器將源代碼滾動到斷點處,變量監(jiān)測器則更新當前變量值并顯示編輯器將源代碼滾動到斷點處,變量監(jiān)測器則更新當前變量值并顯示出來出來。其他的例子?Windows本身就是事件驅(qū)動的事件系統(tǒng)風格事件分發(fā)的策略事件分發(fā)的策略事件系統(tǒng)風格無獨立的事件派遣模塊無獨立的事件派遣模塊 通過通過“觀察者模式觀察者模式”實現(xiàn)實現(xiàn) 模塊向事件發(fā)送模塊注冊某些消息模塊向事件發(fā)送模塊注冊某些消息 當某一模塊發(fā)出某一事件時,它自動將這些事件發(fā)布給那些曾經(jīng)當某一模塊發(fā)出某一事件時,它自動將這些事件發(fā)布給那些曾經(jīng)向自己注冊過此事件的模塊向自己注冊過此事件的模塊有獨立的事件派遣模塊有獨立的事件派遣模塊
23、廣播式廣播式(All broadcasting) :派遣模塊將事件廣播到所有的模塊,:派遣模塊將事件廣播到所有的模塊,但只有感興趣的模塊才去取事件并觸發(fā)自身的行為;但只有感興趣的模塊才去取事件并觸發(fā)自身的行為; 選擇廣播式選擇廣播式(Selected broadcasting) :派遣模塊將事件送到那些:派遣模塊將事件送到那些已經(jīng)注冊了的模塊中。已經(jīng)注冊了的模塊中。事件系統(tǒng)風格我對此事件感興趣,觸發(fā)我的行為我對此事件不感興趣,不觸發(fā)我的行為我們都得到了事件廣播式事件派遣廣播式事件派遣事件系統(tǒng)風格選擇廣播式事件派遣選擇廣播式事件派遣WIN32 Event HandlingApplications
24、 call the OS API(應(yīng)用程應(yīng)用程序調(diào)用操作系統(tǒng)的序調(diào)用操作系統(tǒng)的API 注冊自身及事件注冊自身及事件處理方法處理方法)OS creates events to notify the applications (操作系統(tǒng)根據(jù)應(yīng)用系統(tǒng)的操作系統(tǒng)根據(jù)應(yīng)用系統(tǒng)的行為,創(chuàng)建事件并通知其他已注冊的應(yīng)行為,創(chuàng)建事件并通知其他已注冊的應(yīng)用程序用程序)user input occurred (mouse, keyboard)messages from the network arrived, .time-out happened, .application opened, system will
25、be shut down, .WIN32 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)用程序隊列和消息確定向哪個應(yīng)用程序發(fā)送消息1消息2消息m依據(jù)消息和對象控制序列找到對應(yīng)該消息的對象程序執(zhí)行之對象2對象n對象1對象2對象n對象1對象2對象n對象11342567數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)超文
26、本系統(tǒng)和和黑板系統(tǒng)黑板系統(tǒng)都屬于倉庫風都屬于倉庫風格。在這種風格中,格。在這種風格中,數(shù)據(jù)數(shù)據(jù)倉庫(如文件或數(shù)據(jù)庫)倉庫(如文件或數(shù)據(jù)庫)位于這種體系結(jié)構(gòu)的中心位于這種體系結(jié)構(gòu)的中心,其他構(gòu)件會經(jīng)常訪問該數(shù)其他構(gòu)件會經(jīng)常訪問該數(shù)據(jù)倉庫,并對倉庫中的數(shù)據(jù)倉庫,并對倉庫中的數(shù)據(jù)進行增加、修改或刪除據(jù)進行增加、修改或刪除操作。右圖為一個典型的操作。右圖為一個典型的倉庫風格的體系結(jié)構(gòu)。倉庫風格的體系結(jié)構(gòu)。倉庫風格 倉庫風格倉庫風格 倉庫風格 倉庫風格實例倉庫風格實例注冊表注冊表 倉庫風格 倉庫風格實例倉庫風格實例注冊表注冊表 倉庫風格 倉庫風格實例倉庫風格實例剪貼板剪貼板倉庫風格 倉庫風格實例倉庫風格
27、實例剪貼板剪貼板倉庫風格 倉庫風格的連接件倉庫風格的連接件 黑板構(gòu)件負責協(xié)調(diào)信息在客戶間的傳遞黑板構(gòu)件負責協(xié)調(diào)信息在客戶間的傳遞,當用戶感興趣的,當用戶感興趣的數(shù)據(jù)發(fā)生變化時,它將數(shù)據(jù)發(fā)生變化時,它將通知客戶軟件通知客戶軟件。 黑板系統(tǒng)的組成如下圖所示:黑板系統(tǒng)的組成如下圖所示:倉庫風格 黑板結(jié)構(gòu)黑板結(jié)構(gòu) 模型:包含核心功能和數(shù)據(jù)模型:包含核心功能和數(shù)據(jù) (核心業(yè)務(wù)邏輯)(核心業(yè)務(wù)邏輯) 視圖:向用戶顯示信息視圖:向用戶顯示信息 控制器:處理用戶輸入控制器:處理用戶輸入MVC風格 MVC(Model-View-Controller)的組成)的組成MVC風格 將將人機交互人機交互從核心功能中從核
28、心功能中分離分離出來出來(M) 模型對用戶來說是透明的,用戶只需要觀察視圖模型對用戶來說是透明的,用戶只需要觀察視圖(V) 用戶與模型的交互通過控制器提供的安全方法來實現(xiàn)用戶與模型的交互通過控制器提供的安全方法來實現(xiàn)(C) MVC的目的的目的 具有靈活人具有靈活人-機界面的交互式應(yīng)用程序機界面的交互式應(yīng)用程序 可以靈活選擇不同的信息顯示方式 可以靈活選擇用戶的輸入方式 針對不同的用戶角色,提供不同的用戶界面針對不同的用戶角色,提供不同的用戶界面 不同用戶具有不同權(quán)限,操作的方式也有所不同 MVC的應(yīng)用領(lǐng)域的應(yīng)用領(lǐng)域 封裝了內(nèi)核功能和數(shù)據(jù)封裝了內(nèi)核功能和數(shù)據(jù) 業(yè)務(wù)邏輯(軟件的核心) 數(shù)據(jù)以及訪問
29、它們的函數(shù)(視圖組件使用) 執(zhí)行特定應(yīng)用程序處理的過程(控制器代表用戶調(diào)用) 模型對于用戶來說是不可見的模型對于用戶來說是不可見的(M與與V獨立獨立) 模型獨立于特定輸出表示或者輸入方式模型獨立于特定輸出表示或者輸入方式(M與與C獨立獨立) 用戶只能通過控制器操作模型用戶只能通過控制器操作模型(C是是M與與V之間的橋梁之間的橋梁)MVC風格 模型(模型(Model) 向用戶顯示信息向用戶顯示信息 不同的視圖使用不同的方法呈現(xiàn)信息 每個視圖組件都有一個更新函數(shù),這個函數(shù)被模型變更通知激活 這個函數(shù)被激活(此時模型已經(jīng)改變)后,將使得視圖重新和模型一致 在初始化階段,視圖向模型登記請求變更通知(表
30、) 從模型獲得數(shù)據(jù)從模型獲得數(shù)據(jù) 通過狀態(tài)查詢函數(shù)實現(xiàn) 例如:定時刷新MVC風格 視圖(視圖(View)每個視圖有一個相關(guān)的控制器組件每個視圖有一個相關(guān)的控制器組件(一一對應(yīng)一一對應(yīng)) 控制器組件接受控制器組件接受事件事件,并翻譯成輸入,并翻譯成輸入 事件如何發(fā)送到控制器由用戶界面平臺決定 事件被翻譯成為對模型或者視圖的請求 如果控制器的行為依賴于模型的狀態(tài),那么控制器也需要向模型登記請求變更通知 例如:用戶點擊按鈕,按鈕的事件響應(yīng)函數(shù)將采取相應(yīng)的措施處理用戶要求 用戶僅僅通過控制器與系統(tǒng)交互用戶僅僅通過控制器與系統(tǒng)交互MVC風格 控制器(控制器(Controller) 一個模型可對應(yīng)多個視圖
31、一個模型可對應(yīng)多個視圖 如果用戶通過一個視圖的控制器改變了模型中的數(shù)據(jù),那么依賴于該數(shù)據(jù)的其他視圖也應(yīng)該反映出這樣的變化 一旦模型的數(shù)據(jù)發(fā)生了變化,模型需要通知所有相關(guān)的視圖做出相應(yīng)的變化 工作原理:工作原理: 模型維護了一個表 所有視圖還有一些控制器在這個表中登記了對變更通知的需求 模型狀態(tài)的改變將觸發(fā)變更-傳播機制,每個在表中登記的視圖和控制器都會收到變更通知MVC風格 變更變更-傳播機制傳播機制觀察者模式?觀察者模式?事件架構(gòu)?事件架構(gòu)? MVC是一種體系結(jié)構(gòu)是一種體系結(jié)構(gòu) 通過各類技術(shù)的組合來實現(xiàn) 通過各類框架實現(xiàn)(struts等) 最終實現(xiàn):前臺頁面設(shè)計與核心業(yè)務(wù)邏輯分離。MVC風格
32、 MVC的實現(xiàn)的實現(xiàn)體系結(jié)構(gòu)風格 基于網(wǎng)絡(luò)的體系結(jié)構(gòu)基于網(wǎng)絡(luò)的體系結(jié)構(gòu)客戶端(瀏覽器)客戶端(瀏覽器)/服務(wù)器體系結(jié)構(gòu)服務(wù)器體系結(jié)構(gòu):一層一層/兩層兩層/三層結(jié)構(gòu)、三層結(jié)構(gòu)、Java EESOA與與Web Services云計算體系結(jié)構(gòu)云計算體系結(jié)構(gòu) 1965-1985:以大型機為核心的:以大型機為核心的集中式處理模式集中式處理模式; 1986-1990:以:以PC/文件服務(wù)器文件服務(wù)器為核心的為核心的文件共享計算模式文件共享計算模式; 1990-1996:以:以C/S結(jié)構(gòu)結(jié)構(gòu)為主流的為主流的分布式計算模式分布式計算模式; 1996- :以:以Web為核心、為核心、B/S結(jié)構(gòu)結(jié)構(gòu)為主流的為主流
33、的分布式計算模式分布式計算模式; 2000- :以各類移動設(shè)備為核心的:以各類移動設(shè)備為核心的普適計算模式;普適計算模式; 2005- :以:以Grid、P2P、Web2.0等為核心的等為核心的分布式計算模式分布式計算模式;客戶端/服務(wù)器體系結(jié)構(gòu) 計算模式經(jīng)歷了以下六代:計算模式經(jīng)歷了以下六代: 一個應(yīng)用系統(tǒng)被分為兩個邏輯上分離的部分,每一部分充當不同的角色、完成不同的功能,多臺計算機共同完成統(tǒng)一的任務(wù)。 客戶機客戶機(前端,前端,front-end):業(yè)務(wù)邏輯、與服務(wù)器通訊的接口; 服務(wù)器服務(wù)器(后端:后端:back-end):與客戶機通訊的接口、業(yè)務(wù)邏輯、數(shù)據(jù)管理。 一般的:一般的: 客戶
34、機為完成特定的工作向服務(wù)器發(fā)出請求;客戶機為完成特定的工作向服務(wù)器發(fā)出請求; 服務(wù)器處理客戶機的請求并返回結(jié)果。服務(wù)器處理客戶機的請求并返回結(jié)果。客戶端/服務(wù)器體系結(jié)構(gòu) 客戶機客戶機/服務(wù)器服務(wù)器 (Client-Server Architecture) 兩層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ù)器客戶端/服務(wù)器體系結(jié)構(gòu) 兩層兩層C/S用戶1用戶2用戶3用戶4用戶5Print ServerLink/RxLPT1LPT2COMPower/TXPWROKW
35、IC0ACT/CH0ACT/CH1WIC0ACT/CH0ACT/CH1ETHACTCOL其他公用設(shè)備打印機調(diào)制解調(diào)器InternetIntranet數(shù)據(jù)庫服務(wù)器客戶端/服務(wù)器體系結(jié)構(gòu) 兩層兩層C/SClientServer客戶端/服務(wù)器體系結(jié)構(gòu) 兩層兩層C/S 基本構(gòu)件:基本構(gòu)件: 數(shù)據(jù)庫服務(wù)器:存放數(shù)據(jù)的數(shù)據(jù)庫、負責數(shù)據(jù)處理的業(yè)務(wù)邏輯; 客戶機應(yīng)用程序: GUI:用戶界面 業(yè)務(wù)邏輯:利用客戶機上的應(yīng)用程序?qū)?shù)據(jù)進行處理; 連接件:連接件:經(jīng)由網(wǎng)絡(luò)的調(diào)用經(jīng)由網(wǎng)絡(luò)的調(diào)用-返回機制或隱式調(diào)用機制。返回機制或隱式調(diào)用機制。 客戶機服務(wù)器:客戶機向服務(wù)器發(fā)送請求,并接收返回結(jié)果??蛻舳?服務(wù)器體系結(jié)構(gòu)
36、 兩層兩層C/S 業(yè)務(wù)邏輯的劃分比重:業(yè)務(wù)邏輯的劃分比重:在客戶端多一些還是在服務(wù)器端多一些?在客戶端多一些還是在服務(wù)器端多一些? (胖客戶端:客戶端執(zhí)行大部分的數(shù)據(jù)處理操作) (瘦客戶端:客戶端具有很少或沒有業(yè)務(wù)邏輯)客戶端/服務(wù)器體系結(jié)構(gòu) 兩層兩層C/S應(yīng)用應(yīng)用 兩兩層層C/S架構(gòu)通常被用在那些管理與操作不太復(fù)雜的非實時的信息架構(gòu)通常被用在那些管理與操作不太復(fù)雜的非實時的信息處理系統(tǒng)處理系統(tǒng) 適合于輕量級事務(wù)適合于輕量級事務(wù) 客戶機對服務(wù)器的請求少,數(shù)據(jù)傳輸量少客戶機對服務(wù)器的請求少,數(shù)據(jù)傳輸量少 當業(yè)務(wù)邏輯較少變化以及用戶數(shù)當業(yè)務(wù)邏輯較少變化以及用戶數(shù)少于少于100時,兩層時,兩層C/S
37、架構(gòu)架構(gòu)的性能的性能較好較好客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S 在客戶端與數(shù)據(jù)庫服務(wù)器之間增加了一個中間層在客戶端與數(shù)據(jù)庫服務(wù)器之間增加了一個中間層 中間層可能為:事務(wù)處理監(jiān)控服務(wù)器、消息服務(wù)器、應(yīng)用服務(wù)器中間層可能為:事務(wù)處理監(jiān)控服務(wù)器、消息服務(wù)器、應(yīng)用服務(wù)器 中間層負責消息排隊、業(yè)務(wù)邏輯執(zhí)行、數(shù)據(jù)傳輸?shù)裙δ苤虚g層負責消息排隊、業(yè)務(wù)邏輯執(zhí)行、數(shù)據(jù)傳輸?shù)裙δ芸蛻舳?服務(wù)器體系結(jié)構(gòu) 三層三層C/S應(yīng)用應(yīng)用輸入數(shù)據(jù)輸出數(shù)據(jù)請求按鈕表示層業(yè)務(wù)處理開始SQL 請求結(jié)束SQL 請求開始業(yè)務(wù)處理結(jié)束數(shù)據(jù)存取請求業(yè)務(wù)處理程序業(yè)務(wù)處理請求和業(yè)務(wù)處理所需的全部輸入數(shù)據(jù)全部處理結(jié)束DBMS 執(zhí)行SQL數(shù)據(jù)層業(yè)
38、務(wù)處理開始數(shù)據(jù)存取請求業(yè)務(wù)處理結(jié)束數(shù)據(jù)存取程序數(shù)據(jù)登錄/更新/讀取的請求數(shù)據(jù)登錄/更新/讀取的結(jié)果功能層客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S 表示層表示層: 用戶接口部分,擔負著用戶與應(yīng)用之間的對話功能;用戶接口部分,擔負著用戶與應(yīng)用之間的對話功能; 檢查用戶的輸入,顯示應(yīng)用的輸出;檢查用戶的輸入,顯示應(yīng)用的輸出; 通常使用通常使用GUI; 在變更時,只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響在變更時,只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他層;其他層; 不包含或包含一部分業(yè)務(wù)邏輯。不包含或包含一部分業(yè)務(wù)邏輯??蛻舳?服務(wù)器體系結(jié)構(gòu) 三層三層C/S 表示層表示層: 用戶接口部分,擔負著
39、用戶與應(yīng)用之間的對話功能;用戶接口部分,擔負著用戶與應(yīng)用之間的對話功能; 檢查用戶的輸入,顯示應(yīng)用的輸出;檢查用戶的輸入,顯示應(yīng)用的輸出; 通常使用通常使用GUI; 在變更時,只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響在變更時,只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他層;其他層; 不包含或包含一部分業(yè)務(wù)邏輯。不包含或包含一部分業(yè)務(wù)邏輯??蛻舳?服務(wù)器體系結(jié)構(gòu) 三層三層C/S 功能層功能層: 應(yīng)用系統(tǒng)的主體,包括大部分業(yè)務(wù)處理邏輯應(yīng)用系統(tǒng)的主體,包括大部分業(yè)務(wù)處理邏輯 (通常以業(yè)務(wù)構(gòu)件通常以業(yè)務(wù)構(gòu)件的形式存在,如的形式存在,如JavaBean/EJB/COM等等); 從表示層獲取用戶的輸入
40、數(shù)據(jù)并加以處理;從表示層獲取用戶的輸入數(shù)據(jù)并加以處理; 處理過程中需要從數(shù)據(jù)層獲取數(shù)據(jù)或向數(shù)據(jù)層更新數(shù)據(jù);處理過程中需要從數(shù)據(jù)層獲取數(shù)據(jù)或向數(shù)據(jù)層更新數(shù)據(jù); 處理結(jié)果返回給表示層。處理結(jié)果返回給表示層??蛻舳?服務(wù)器體系結(jié)構(gòu) 三層三層C/S 數(shù)據(jù)層數(shù)據(jù)層: DMBS; 接受功能層的數(shù)據(jù)查詢請求,執(zhí)行請求,并將查詢結(jié)果返回接受功能層的數(shù)據(jù)查詢請求,執(zhí)行請求,并將查詢結(jié)果返回給功能層;給功能層; 從功能層接受數(shù)據(jù)存取請求,并將數(shù)據(jù)寫入數(shù)據(jù)庫;從功能層接受數(shù)據(jù)存取請求,并將數(shù)據(jù)寫入數(shù)據(jù)庫; 請求的執(zhí)行結(jié)果也要返回給功能層。請求的執(zhí)行結(jié)果也要返回給功能層。客戶端/服務(wù)器體系結(jié)構(gòu) 三層三層C/S結(jié)構(gòu)的物
41、理結(jié)構(gòu)結(jié)構(gòu)的物理結(jié)構(gòu) 兩層兩層C/S已經(jīng)將數(shù)據(jù)層分離出來已經(jīng)將數(shù)據(jù)層分離出來 三層三層C/S則要將則要將表示層與功能層分離開來表示層與功能層分離開來,形成獨立的程序,并,形成獨立的程序,并使二者之間的接口簡潔明了。使二者之間的接口簡潔明了。 問題:這三個層次在物理上是如何分布的?問題:這三個層次在物理上是如何分布的?客戶端/服務(wù)器體系結(jié)構(gòu) 基于集群基于集群(Cluster)的的C/S物理分布物理分布 事實上,功能層通常事實上,功能層通常不是只駐留在同一臺服務(wù)器上不是只駐留在同一臺服務(wù)器上,數(shù)據(jù)層也是,數(shù)據(jù)層也是如此;如此; 如果如果功能層功能層(或數(shù)據(jù)層或數(shù)據(jù)層)分布在多臺服務(wù)器上分布在多臺服
42、務(wù)器上,那么就形成了基于,那么就形成了基于集群集群(Cluster)的的C/S物理分布模式。物理分布模式??蛻舳?服務(wù)器體系結(jié)構(gòu) 三層三層C/S結(jié)構(gòu)的優(yōu)點結(jié)構(gòu)的優(yōu)點 在用戶數(shù)目較多的情況下,三層在用戶數(shù)目較多的情況下,三層C/S結(jié)構(gòu)將結(jié)構(gòu)將極大改善性能與靈活極大改善性能與靈活性性(通??芍С謹?shù)百并發(fā)用戶,通過集群可達數(shù)萬并發(fā)用戶通常可支持數(shù)百并發(fā)用戶,通過集群可達數(shù)萬并發(fā)用戶); 允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對獨立性,允許合理地劃分三層結(jié)構(gòu)的功能,使之在邏輯上保持相對獨立性,能能提高系統(tǒng)和軟件的可維護性和可擴展性提高系統(tǒng)和軟件的可維護性和可擴展性 允許更靈活有效地選用相應(yīng)的
43、平臺和硬件系統(tǒng),并且這些平臺和允許更靈活有效地選用相應(yīng)的平臺和硬件系統(tǒng),并且這些平臺和各個組成部分可以具有各個組成部分可以具有良好的可升級性和開放性良好的可升級性和開放性??蛻舳?服務(wù)器體系結(jié)構(gòu) 瀏覽器瀏覽器/服務(wù)器服務(wù)器(Browser/Server Architecture) 瀏覽器瀏覽器/服務(wù)器服務(wù)器(B/S)是三層是三層C/S風格的一種實現(xiàn)方式。風格的一種實現(xiàn)方式。 表現(xiàn)層:瀏覽器 邏輯層: Web服務(wù)器 應(yīng)用服務(wù)器 數(shù)據(jù)層:數(shù)據(jù)庫服務(wù)器客戶端/服務(wù)器體系結(jié)構(gòu) 瀏覽器瀏覽器/服務(wù)器服務(wù)器(Browser/Server Architecture) J2EE平臺典型平臺典型B/S結(jié)構(gòu)的實現(xiàn)
44、方式結(jié)構(gòu)的實現(xiàn)方式客戶端/服務(wù)器體系結(jié)構(gòu) B/S架構(gòu)的優(yōu)點架構(gòu)的優(yōu)點 基于基于B/S體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護全在服務(wù)器端體系結(jié)構(gòu)的軟件,系統(tǒng)安裝、修改和維護全在服務(wù)器端解決,解決,系統(tǒng)維護成本低系統(tǒng)維護成本低: 客戶端無任何業(yè)務(wù)邏輯,用戶在使用系統(tǒng)時,僅僅需要一個瀏覽器就可運行全部的模塊,真正達到了“零客戶端”的功能,很容易在運行時自動升級。 良好的靈活性和可擴展性:對于環(huán)境和應(yīng)用條件經(jīng)常變動的情況,只要對業(yè)務(wù)邏輯層實施相應(yīng)的改變,就能夠達到目的。 三層模式成為真正意義上的三層模式成為真正意義上的“瘦客戶端瘦客戶端”,從而具備了很高的穩(wěn),從而具備了很高的穩(wěn)定性、延展性和執(zhí)行效率。定性、延展性和執(zhí)行效率。 三層模式可以將服務(wù)集中在一起
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 糧食除雜課課程設(shè)計
- 觸發(fā)計數(shù)器課程設(shè)計
- 漏水自動報警課程設(shè)計
- 門鈴課程設(shè)計序言
- 雕刻美麗形體課程設(shè)計
- 創(chuàng)業(yè)空間的市場營銷與品牌建設(shè)考核試卷
- 電氣機械工程中的數(shù)據(jù)存儲與處理技術(shù)考核試卷
- 鐵合金冶煉中的尾氣處理與凈化技術(shù)考核試卷
- 數(shù)據(jù)驅(qū)動的目視化管理戰(zhàn)略與規(guī)劃考核試卷
- 創(chuàng)業(yè)精神培養(yǎng)與創(chuàng)新管理的企業(yè)教育培訓(xùn)考核試卷
- 科技改變生活英語作文三年級
- 考研真題:《英語二》2023年考試真題與參考答案
- 盤扣腳手架搭設(shè)方案及交底
- 酒精戒斷綜合癥的護理
- (高清版)TDT 1037-2013 土地整治重大項目可行性研究報告編制規(guī)程
- 山東省青島市市南區(qū)2023-2024學(xué)年九年級上學(xué)期期中數(shù)學(xué)試題
- 愛國衛(wèi)生工作培訓(xùn)課件
- 與某地政府醫(yī)療領(lǐng)域合作框架協(xié)議
- 外賣騎手勞動權(quán)益保障機制
- 卵巢癌腹腔化療方案
- 雙層罐改造施工方案
評論
0/150
提交評論