版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件體系結構 軟件體系結構的基本概念軟件體系結構的基本概念 典型的軟件體系結構風格典型的軟件體系結構風格 基于網絡的軟件體系結構基于網絡的軟件體系結構模式分類 低層模式:慣用法低層模式:慣用法(idiom) 中層模式:設計模式中層模式:設計模式(design pattern) 高層模式:體系結構模式高層模式:體系結構模式(architecture pattern)慣用法 慣用法的特點:慣用法的特點: 是與具體語言密切相關的編程經驗的總結是與具體語言密切相關的編程經驗的總結 描述如何使用給定的語言特征來實現(xiàn)構件的特描述如何使用給定的語言特征來實現(xiàn)構件的特定方面及其關系定方面及其關系 代表最底層的
2、模式代表最底層的模式 慣用法更關注設計的實現(xiàn)慣用法更關注設計的實現(xiàn) 可能是一種特定設計模式的具體實現(xiàn)可能是一種特定設計模式的具體實現(xiàn)設計模式范圍范圍目的目的創(chuàng)建型模式創(chuàng)建型模式結構型模式結構型模式行為型模式行為型模式類模式類模式工廠方法模式(類)適配器模式解釋器模式模板方法模式對象模式對象模式抽象工廠模式建造者模式原型模式單例模式(對象)適配器模式橋接模式組合模式裝飾模式外觀模式享元模式代理模式職責鏈模式命令模式迭代器模式中介者模式備忘錄模式觀察者模式狀態(tài)模式策略模式訪問者模式基本概念 什么是體系結構什么是體系結構目前還沒有一個公認的關于軟件體系結構的定義,許多專家目前還沒有一個公認的關于軟件
3、體系結構的定義,許多專家學者從不同角度對軟件體系結構進行了描述。學者從不同角度對軟件體系結構進行了描述。Bass、Clements和和Kazman給出了如下定義:給出了如下定義:“一個程序或計算機一個程序或計算機系統(tǒng)的軟件體系結構是指系統(tǒng)的軟件體系結構是指系統(tǒng)的一個或者多個結構。結構中系統(tǒng)的一個或者多個結構。結構中包括軟件的構件、構件的外部可見屬性以及它們之間的相互包括軟件的構件、構件的外部可見屬性以及它們之間的相互關系。外部可見屬性則是指軟件構件提供的服務、性能、使關系。外部可見屬性則是指軟件構件提供的服務、性能、使用特性、錯誤處理、共享資源使用等用特性、錯誤處理、共享資源使用等?!边@一定義
4、強調在任一體系結構表述中這一定義強調在任一體系結構表述中“軟件構件軟件構件”的角色。的角色。 Dewayne Perry和和A1exander Wo1f曾這樣定義:曾這樣定義:“軟件軟件體系結構是具有一定形式的結構化元素,即構件的集合,包體系結構是具有一定形式的結構化元素,即構件的集合,包括處理構件、數(shù)據(jù)構件和連接構件。處理構件負責對數(shù)據(jù)進括處理構件、數(shù)據(jù)構件和連接構件。處理構件負責對數(shù)據(jù)進行加工,數(shù)據(jù)構件是被加工的信息,連接構件把體系結構的行加工,數(shù)據(jù)構件是被加工的信息,連接構件把體系結構的不同部分組合連接起來。不同部分組合連接起來。” 基本概念基本概念框架框架 隨著應用的發(fā)展和完善,某些帶
5、有整體性的應用模式被隨著應用的發(fā)展和完善,某些帶有整體性的應用模式被逐漸固定下來,形成特定的框架,包括逐漸固定下來,形成特定的框架,包括基本構成元素基本構成元素和和關關系系??蚣芸蚣苁翘囟☉妙I域問題的體系結構模式,框架定義是特定應用領域問題的體系結構模式,框架定義了基本構成單元和關系后,開發(fā)者就可以集中精力解決業(yè)了基本構成單元和關系后,開發(fā)者就可以集中精力解決業(yè)務邏輯問題。務邏輯問題。 在組織形式上,在組織形式上,框架是一個待實例化的完整系統(tǒng)框架是一個待實例化的完整系統(tǒng),定義,定義了軟件系統(tǒng)的元素和關系,創(chuàng)建了基本的模塊,定義了涉了軟件系統(tǒng)的元素和關系,創(chuàng)建了基本的模塊,定義了涉及功能更改和
6、擴充的插件位置。典型的框架例子有及功能更改和擴充的插件位置。典型的框架例子有MFC框框架架和和Struts框架框架。 體系結構的重要作用體現(xiàn)在以下三個方面體系結構的重要作用體現(xiàn)在以下三個方面 :(1)體系結構的表示有助于風險承擔者(項目干系)體系結構的表示有助于風險承擔者(項目干系 人)進行人)進行交流交流。 (2)體系結構突出了早期設計決策。)體系結構突出了早期設計決策。 (3)軟件體系結構是可傳遞和可復用的)軟件體系結構是可傳遞和可復用的模型模型。 基本概念 體系結構的重要作用體系結構的重要作用體系結構風格 傳統(tǒng)的體系結構傳統(tǒng)的體系結構數(shù)據(jù)流風格數(shù)據(jù)流風格 (Dataflow):批處理序列
7、、管道過濾器風格批處理序列、管道過濾器風格 (Pipe-and-Filter)調用調用/返回風格返回風格:主程序主程序/子程序、面向對象風格子程序、面向對象風格 (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軟件體系結構軟件體系結構體系結構風格 基于網絡的體系結構基于網絡的體系結構客戶端(服務器)客戶端(服務器)/服務器體系結構服務器體系結構:一層一層/兩層兩層/三層結構、三層結構、Java EEP2P軟件體系結構軟件體系結構
8、網格計算體系結構網格計算體系結構SOA與與Web Services云計算體系結構云計算體系結構當輸入數(shù)據(jù)經過一系列的計算和操作構件的變換形成輸當輸入數(shù)據(jù)經過一系列的計算和操作構件的變換形成輸出數(shù)據(jù)時,可以應用這種體系結構。出數(shù)據(jù)時,可以應用這種體系結構。管道管道/ /過濾器過濾器、批處理序列批處理序列都屬于數(shù)據(jù)流風格。都屬于數(shù)據(jù)流風格。管道管道/ /過濾器結構如下圖所示:過濾器結構如下圖所示:數(shù)據(jù)流風格 數(shù)據(jù)流風格數(shù)據(jù)流風格 管道管道/ /過濾器結構過濾器結構 Linux系統(tǒng)中的命令序列堆疊的數(shù)據(jù)過程(圖像處理) 從上圖可看出,管道從上圖可看出,管道/過濾器結構擁有一組被稱為過濾器結構擁有一組
9、被稱為過濾過濾器器(filter)的構件,這些構件通過)的構件,這些構件通過管道管道(pipe)連接,管)連接,管道將數(shù)據(jù)從一個構件傳送到下一個構件。道將數(shù)據(jù)從一個構件傳送到下一個構件。 每個過濾器獨立于其上游和下游的構件而工作,過濾器每個過濾器獨立于其上游和下游的構件而工作,過濾器的設計要針對某種形式的數(shù)據(jù)輸入,并且產生某種特定形的設計要針對某種形式的數(shù)據(jù)輸入,并且產生某種特定形式的數(shù)據(jù)輸出。式的數(shù)據(jù)輸出。 如果數(shù)據(jù)流退化成為單線的變換,則稱為如果數(shù)據(jù)流退化成為單線的變換,則稱為批處理序列批處理序列(batch sequential)。這種結構接收一批數(shù)據(jù),然后應)。這種結構接收一批數(shù)據(jù),然
10、后應用一系列連續(xù)的構件(過濾器)變換它。用一系列連續(xù)的構件(過濾器)變換它。數(shù)據(jù)流風格管道管道/ /過濾器風格具有以下過濾器風格具有以下優(yōu)點優(yōu)點:(1 1)使得軟構件具有良好的隱蔽性和高內聚、低耦合的特)使得軟構件具有良好的隱蔽性和高內聚、低耦合的特 點。點。(2 2)允許設計者將整個系統(tǒng)的輸入)允許設計者將整個系統(tǒng)的輸入/ /輸出行為看成是輸出行為看成是多個過多個過 濾器的行為的簡單合成濾器的行為的簡單合成。 (3 3)支持軟件復用支持軟件復用。只要提供適合在兩個過濾器之間傳送。只要提供適合在兩個過濾器之間傳送 的數(shù)據(jù),任何兩個過濾器都可被連接起來。的數(shù)據(jù),任何兩個過濾器都可被連接起來。(4
11、 4)系統(tǒng)維護和增強系統(tǒng)性能簡單。)系統(tǒng)維護和增強系統(tǒng)性能簡單。新的過濾器新的過濾器可以添加可以添加 到現(xiàn)有系統(tǒng)中來;到現(xiàn)有系統(tǒng)中來;舊的舊的可以被改進的過濾器替換掉。可以被改進的過濾器替換掉。(5 5)允許對一些如吞吐量、死鎖等屬性的分析。)允許對一些如吞吐量、死鎖等屬性的分析。(6 6)支持并行執(zhí)行支持并行執(zhí)行。每個過濾器是作為一個單獨的任務完。每個過濾器是作為一個單獨的任務完 成,因此可與其他任務并行執(zhí)行。成,因此可與其他任務并行執(zhí)行。數(shù)據(jù)流風格管道管道/過濾器風格主要過濾器風格主要缺點缺點如下:如下:(1)通常導致進程成為批處理的結構。這是因為雖然過濾)通常導致進程成為批處理的結構。這
12、是因為雖然過濾器可增量式地處理數(shù)據(jù),但它們是獨立的,所以設計者必須器可增量式地處理數(shù)據(jù),但它們是獨立的,所以設計者必須將每個過濾器看成一個完整的從輸入到輸出的轉換。將每個過濾器看成一個完整的從輸入到輸出的轉換。(2)不適合處理交互不適合處理交互 的應用。當需要增量地顯示改變時,的應用。當需要增量地顯示改變時,這個問題尤為嚴重。這個問題尤為嚴重。(3)因為在數(shù)據(jù)傳輸上沒有通用的標準,每個過濾器都)因為在數(shù)據(jù)傳輸上沒有通用的標準,每個過濾器都增增加了解析和合成數(shù)據(jù)的工作加了解析和合成數(shù)據(jù)的工作,這樣就導致了系統(tǒng)性能下降,這樣就導致了系統(tǒng)性能下降,并增加了編寫過濾器的復雜性。并增加了編寫過濾器的復雜
13、性。數(shù)據(jù)流風格在此類體系結構中,存在以下在此類體系結構中,存在以下3種子風格種子風格。 主程序主程序/子程序體系結構子程序體系結構(C語言?)語言?) 這種傳統(tǒng)的程序結構將功能分解為一個控制層次,其這種傳統(tǒng)的程序結構將功能分解為一個控制層次,其中中“主主”程序調用一組程序構件,這些程序構件又去調用別程序調用一組程序構件,這些程序構件又去調用別的程序構件,如下圖所示。這種結構總體上為樹狀結的程序構件,如下圖所示。這種結構總體上為樹狀結構,可以在底層存在公共模塊。構,可以在底層存在公共模塊。調用返回風格 調用調用返回風格返回風格(常見,發(fā)揮主要作用)(常見,發(fā)揮主要作用) 主程序主程序/子程序體系
14、結構的子程序體系結構的優(yōu)點優(yōu)點如下如下:(1)可以使用)可以使用自頂向下自頂向下,逐步分解逐步分解的方法得到體系結構的方法得到體系結構圖,典型的拓撲結構為樹狀結構?;诙x圖,典型的拓撲結構為樹狀結構?;诙x使用關系對子使用關系對子程序進行分解,使用過程調用作為程序之間的交互機制。程序進行分解,使用過程調用作為程序之間的交互機制。(2)采用程序設計語言支持的單線程控制。)采用程序設計語言支持的單線程控制。其主要其主要缺點缺點如下如下:(1)子程序的正確性難于判斷。需要運用層次推理來判斷)子程序的正確性難于判斷。需要運用層次推理來判斷子程序的正確性,因為子程序的正確性取決于它調用的子程子程序的
15、正確性,因為子程序的正確性取決于它調用的子程序的正確性。序的正確性。(2)子系統(tǒng)的結構不清晰。通??梢詫⒍鄠€子程序合成為)子系統(tǒng)的結構不清晰。通??梢詫⒍鄠€子程序合成為模塊。模塊。調用返回風格 面向對象的調用面向對象的調用返回風格返回風格 系統(tǒng)的構件系統(tǒng)的構件(類類/對象對象)封裝了數(shù)據(jù)和必須應用到該數(shù)據(jù)上的操封裝了數(shù)據(jù)和必須應用到該數(shù)據(jù)上的操作,構件間通過消息傳遞進行通信與合作。與主程序作,構件間通過消息傳遞進行通信與合作。與主程序/子程子程序的體系結構相比,面向對象風格中的對象交互會復雜一序的體系結構相比,面向對象風格中的對象交互會復雜一些。面向對象風格與網絡應用的需求在分布性、自治性、些
16、。面向對象風格與網絡應用的需求在分布性、自治性、協(xié)作性、演化性等方面具有內在的一致性。協(xié)作性、演化性等方面具有內在的一致性。 面向對象風格具有以下面向對象風格具有以下優(yōu)點優(yōu)點: :(1 1)因為對象對其他對象隱藏它的表示,所以可以改變一)因為對象對其他對象隱藏它的表示,所以可以改變一 個對象的表示,而不影響其他對象。個對象的表示,而不影響其他對象。(2 2)設計者可將一些數(shù)據(jù)存取操作的問題分解成一些交互)設計者可將一些數(shù)據(jù)存取操作的問題分解成一些交互 的代理程序的集合。的代理程序的集合。調用返回風格其其缺點缺點如下如下:(1)為了使一個對象和另一個對象通過過程調用等進行)為了使一個對象和另一個
17、對象通過過程調用等進行 交互,必須知道對象的標識。只要一個對象的標識交互,必須知道對象的標識。只要一個對象的標識 改變了,就必須修改所有其他明確調用它的對象。改變了,就必須修改所有其他明確調用它的對象。(2)必須修改所有顯式調用它的其他對象,并消除由此)必須修改所有顯式調用它的其他對象,并消除由此 帶來的一些副作用。例如,如果帶來的一些副作用。例如,如果A使用了對象使用了對象B,C 也使用了對象也使用了對象B,那么,那么,C對對B的使用所造成的對的使用所造成的對A 的影響可能是料想不到的。的影響可能是料想不到的。 調用返回風格 層次結構層次結構 層次結構的基本結構如下圖所示。在這種體系結構中,
18、整層次結構的基本結構如下圖所示。在這種體系結構中,整個系統(tǒng)被組織成一個分層結構,每一層為上層提供服務,并個系統(tǒng)被組織成一個分層結構,每一層為上層提供服務,并作為下一層的客戶。作為下一層的客戶。調用返回風格 各種構件 過程調用 各類網絡協(xié)議棧層級之間的調用-返回避免復雜性 這種風格支持基于可增加抽象層的設計。允許將復雜問這種風格支持基于可增加抽象層的設計。允許將復雜問題分解成一個增量步驟序列的實現(xiàn)。題分解成一個增量步驟序列的實現(xiàn)。由于每一層最多只影響由于每一層最多只影響兩層兩層,同時只要給相鄰層提供,同時只要給相鄰層提供相同的接口相同的接口,允許每層用不同,允許每層用不同的方法實現(xiàn),同樣為軟件復
19、用提供了強大的支持。的方法實現(xiàn),同樣為軟件復用提供了強大的支持。 調用返回風格調用返回風格調用返回風格765網絡層網絡層321應用層應用層表示層表示層會話層會話層報文流報文流報文流報文流報文流報文流應用層應用層表示層表示層會話層會話層4傳輸層傳輸層段流段流傳輸層傳輸層轉接節(jié)點轉接節(jié)點網絡層網絡層網絡層網絡層 網絡層網絡層協(xié)議協(xié)議鏈路層鏈路層 鏈路層鏈路層 鏈路層鏈路層協(xié)議協(xié)議轉接節(jié)點轉接節(jié)點分組流分組流子子 網絡層網絡層網網內內 鏈路層鏈路層 幀流幀流 鏈路層鏈路層部部物理層物理層物理層物理層協(xié)議協(xié)議協(xié)協(xié)物理層物理層 議議 物理層物理層通信子網通信子網比特流比特流物理層物理層分層系統(tǒng)實例:分層
20、系統(tǒng)實例: ISO/OSI網絡的分層模型網絡的分層模型調用返回風格用戶用戶Shell解釋運行解釋運行語言處理、系統(tǒng)工具、系統(tǒng)應用程序語言處理、系統(tǒng)工具、系統(tǒng)應用程序系統(tǒng)調用系統(tǒng)調用操作系統(tǒng)內核操作系統(tǒng)內核(System kernel)基本輸入輸出基本輸入輸出(BIOS)計算機硬件計算機硬件(CPU、存儲器、存儲器、I/O等等)分層系統(tǒng)實例:計算機操作系統(tǒng)分層系統(tǒng)實例:計算機操作系統(tǒng)(OS)的層次結構的層次結構層次結構具有以下層次結構具有以下優(yōu)點優(yōu)點:(1)支持基于抽象程度遞增的系統(tǒng)設計,使設計者可以把)支持基于抽象程度遞增的系統(tǒng)設計,使設計者可以把 一個復雜系統(tǒng)按遞增的步驟進行分解。一個復雜系
21、統(tǒng)按遞增的步驟進行分解。 (2)支持功能增強,因為每一層至多和相鄰的上下層交)支持功能增強,因為每一層至多和相鄰的上下層交 互,因此,功能的改變最多影響相鄰的內外層。互,因此,功能的改變最多影響相鄰的內外層。(3)支持復用。支持復用。只要提供的服務接口定義不變,同一層的只要提供的服務接口定義不變,同一層的 不同實現(xiàn)可以交換使用。這樣,就可以定義一組標準不同實現(xiàn)可以交換使用。這樣,就可以定義一組標準 的接口,從而允許各種不同的實現(xiàn)方法。的接口,從而允許各種不同的實現(xiàn)方法。調用返回風格其其缺點缺點如下如下:(1)并不是)并不是每個系統(tǒng)都可以很容易地劃分為分層的模式每個系統(tǒng)都可以很容易地劃分為分層的
22、模式, 甚至即使一個系統(tǒng)的邏輯結構是層次化的,出于對系甚至即使一個系統(tǒng)的邏輯結構是層次化的,出于對系 統(tǒng)性能的考慮,系統(tǒng)設計師不得不把一些低級或高級統(tǒng)性能的考慮,系統(tǒng)設計師不得不把一些低級或高級 的功能綜合起來。的功能綜合起來。(2)很難找到一個合適的、正確的層次抽象方法。)很難找到一個合適的、正確的層次抽象方法。調用返回風格數(shù)據(jù)流與調用-返回事件系統(tǒng)風格 事件系統(tǒng)風格(獨立構件)事件系統(tǒng)風格(獨立構件) GUI編程 Windows操作系統(tǒng)中Hook機制 Jquery中的回調事件系統(tǒng)風格事件系統(tǒng)風格 事件系統(tǒng)風格事件系統(tǒng)風格 典型的體系結構風格事件系統(tǒng)風格事件系統(tǒng)風格為何稱為為何稱為“獨立構件
23、獨立構件”風格?風格? 這種風格的主要特點是:這種風格的主要特點是:事件的觸發(fā)者并不知道哪事件的觸發(fā)者并不知道哪些構件會被這些事件影響,相互保持獨立些構件會被這些事件影響,相互保持獨立。這樣不能假定構件的處理順序,甚至不知道哪些過程會被調用;各個構件之間彼此之間無連接關系,各自獨立存在,通過對事件的發(fā)布和注冊實現(xiàn)關聯(lián)對事件的發(fā)布和注冊實現(xiàn)關聯(lián);事件系統(tǒng)風格遇到斷點,編輯器將源代碼滾動到斷點處,變量監(jiān)測器則更新當前變量值遇到斷點,編輯器將源代碼滾動到斷點處,變量監(jiān)測器則更新當前變量值并顯示出來。并顯示出來。如何完成如何完成 ?事件系統(tǒng)風格事件系統(tǒng)的基本構成與工作原理事件系統(tǒng)的基本構成與工作原理事
24、件系統(tǒng)風格 EventSource: debugger (調試器調試器) EventHandler: editor and variable monitor (編輯器與變量監(jiān)視器編輯器與變量監(jiān)視器) EventManager: IDE (集成開發(fā)環(huán)境集成開發(fā)環(huán)境) 編輯器與變量監(jiān)視器向調試器注冊,接收編輯器與變量監(jiān)視器向調試器注冊,接收“斷點事件斷點事件”; 一旦遇到斷點,調試器發(fā)布事件,從而觸發(fā)一旦遇到斷點,調試器發(fā)布事件,從而觸發(fā)“編輯器編輯器”與與“變量監(jiān)測變量監(jiān)測器器” ; 編輯器將源代碼滾動到斷點處,變量監(jiān)測器則更新當前變量值并顯示編輯器將源代碼滾動到斷點處,變量監(jiān)測器則更新當前變量
25、值并顯示出來出來。其他的例子?Windows本身就是事件驅動的事件系統(tǒng)風格事件分發(fā)的策略事件分發(fā)的策略事件系統(tǒng)風格無獨立的事件派遣模塊無獨立的事件派遣模塊 通過通過“觀察者模式觀察者模式”實現(xiàn)實現(xiàn) 模塊向事件發(fā)送模塊注冊某些消息模塊向事件發(fā)送模塊注冊某些消息 當某一模塊發(fā)出某一事件時,它自動將這些事件發(fā)布給那些曾經當某一模塊發(fā)出某一事件時,它自動將這些事件發(fā)布給那些曾經向自己注冊過此事件的模塊向自己注冊過此事件的模塊有獨立的事件派遣模塊有獨立的事件派遣模塊 廣播式廣播式(All broadcasting) :派遣模塊將事件廣播到所有的模塊,:派遣模塊將事件廣播到所有的模塊,但只有感興趣的模塊才
26、去取事件并觸發(fā)自身的行為;但只有感興趣的模塊才去取事件并觸發(fā)自身的行為; 選擇廣播式選擇廣播式(Selected broadcasting) :派遣模塊將事件送到那些:派遣模塊將事件送到那些已經注冊了的模塊中。已經注冊了的模塊中。事件系統(tǒng)風格我對此事件感興趣,觸發(fā)我的行為我對此事件不感興趣,不觸發(fā)我的行為我們都得到了事件廣播式事件派遣廣播式事件派遣事件系統(tǒng)風格選擇廣播式事件派遣選擇廣播式事件派遣WIN32 Event HandlingApplications call the OS API(應用程應用程序調用操作系統(tǒng)的序調用操作系統(tǒng)的API 注冊自身及事件注冊自身及事件處理方法處理方法)OS
27、creates events to notify the applications (操作系統(tǒng)根據(jù)應用系統(tǒng)的操作系統(tǒng)根據(jù)應用系統(tǒng)的行為,創(chuàng)建事件并通知其他已注冊的應行為,創(chuàng)建事件并通知其他已注冊的應用程序用程序)user input occurred (mouse, keyboard)messages from the network arrived, .time-out happened, .application opened, system will be shut down, .WIN32 Event Handling應用程序1 的消息循環(huán): 循環(huán)接收屬于應用程序1的消息Windows
28、系統(tǒng)的消息循環(huán): 循環(huán)接收屬于操作系統(tǒng)的消息消息1消息2消息m應用程序2 的消息循環(huán): 循環(huán)接收屬于應用程序2的消息消息1消息2消息m應用程序n 的消息循環(huán): 循環(huán)接收屬于應用程序n的消息消息1消息2消息m用戶產生的事件或其他應用程序發(fā)出的消息依據(jù)應用程序隊列和消息確定向哪個應用程序發(fā)送消息1消息2消息m依據(jù)消息和對象控制序列找到對應該消息的對象程序執(zhí)行之對象2對象n對象1對象2對象n對象1對象2對象n對象11342567數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)、超文本系統(tǒng)超文本系統(tǒng)和和黑板系統(tǒng)黑板系統(tǒng)都屬于倉庫風都屬于倉庫風格。在這種風格中,格。在這種風格中,數(shù)據(jù)數(shù)據(jù)倉庫(如文件或數(shù)據(jù)庫)倉庫(如文件或數(shù)據(jù)庫)
29、位于這種體系結構的中心位于這種體系結構的中心,其他構件會經常訪問該數(shù)其他構件會經常訪問該數(shù)據(jù)倉庫,并對倉庫中的數(shù)據(jù)倉庫,并對倉庫中的數(shù)據(jù)進行增加、修改或刪除據(jù)進行增加、修改或刪除操作。右圖為一個典型的操作。右圖為一個典型的倉庫風格的體系結構。倉庫風格的體系結構。倉庫風格 倉庫風格倉庫風格 倉庫風格 倉庫風格實例倉庫風格實例注冊表注冊表 倉庫風格 倉庫風格實例倉庫風格實例注冊表注冊表 倉庫風格 倉庫風格實例倉庫風格實例剪貼板剪貼板倉庫風格 倉庫風格實例倉庫風格實例剪貼板剪貼板倉庫風格 倉庫風格的連接件倉庫風格的連接件 黑板構件負責協(xié)調信息在客戶間的傳遞黑板構件負責協(xié)調信息在客戶間的傳遞,當用戶感
30、興趣的,當用戶感興趣的數(shù)據(jù)發(fā)生變化時,它將數(shù)據(jù)發(fā)生變化時,它將通知客戶軟件通知客戶軟件。 黑板系統(tǒng)的組成如下圖所示:黑板系統(tǒng)的組成如下圖所示:倉庫風格 黑板結構黑板結構 模型:包含核心功能和數(shù)據(jù)模型:包含核心功能和數(shù)據(jù) (核心業(yè)務邏輯)(核心業(yè)務邏輯) 視圖:向用戶顯示信息視圖:向用戶顯示信息 控制器:處理用戶輸入控制器:處理用戶輸入MVC風格 MVC(Model-View-Controller)的組成)的組成MVC風格 將將人機交互人機交互從核心功能中從核心功能中分離分離出來出來(M) 模型對用戶來說是透明的,用戶只需要觀察視圖模型對用戶來說是透明的,用戶只需要觀察視圖(V) 用戶與模型的交
31、互通過控制器提供的安全方法來實現(xiàn)用戶與模型的交互通過控制器提供的安全方法來實現(xiàn)(C) MVC的目的的目的 具有靈活人具有靈活人-機界面的交互式應用程序機界面的交互式應用程序 可以靈活選擇不同的信息顯示方式 可以靈活選擇用戶的輸入方式 針對不同的用戶角色,提供不同的用戶界面針對不同的用戶角色,提供不同的用戶界面 不同用戶具有不同權限,操作的方式也有所不同 MVC的應用領域的應用領域 封裝了內核功能和數(shù)據(jù)封裝了內核功能和數(shù)據(jù) 業(yè)務邏輯(軟件的核心) 數(shù)據(jù)以及訪問它們的函數(shù)(視圖組件使用) 執(zhí)行特定應用程序處理的過程(控制器代表用戶調用) 模型對于用戶來說是不可見的模型對于用戶來說是不可見的(M與與
32、V獨立獨立) 模型獨立于特定輸出表示或者輸入方式模型獨立于特定輸出表示或者輸入方式(M與與C獨立獨立) 用戶只能通過控制器操作模型用戶只能通過控制器操作模型(C是是M與與V之間的橋梁之間的橋梁)MVC風格 模型(模型(Model) 向用戶顯示信息向用戶顯示信息 不同的視圖使用不同的方法呈現(xiàn)信息 每個視圖組件都有一個更新函數(shù),這個函數(shù)被模型變更通知激活 這個函數(shù)被激活(此時模型已經改變)后,將使得視圖重新和模型一致 在初始化階段,視圖向模型登記請求變更通知(表) 從模型獲得數(shù)據(jù)從模型獲得數(shù)據(jù) 通過狀態(tài)查詢函數(shù)實現(xiàn) 例如:定時刷新MVC風格 視圖(視圖(View)每個視圖有一個相關的控制器組件每個
33、視圖有一個相關的控制器組件(一一對應一一對應) 控制器組件接受控制器組件接受事件事件,并翻譯成輸入,并翻譯成輸入 事件如何發(fā)送到控制器由用戶界面平臺決定 事件被翻譯成為對模型或者視圖的請求 如果控制器的行為依賴于模型的狀態(tài),那么控制器也需要向模型登記請求變更通知 例如:用戶點擊按鈕,按鈕的事件響應函數(shù)將采取相應的措施處理用戶要求 用戶僅僅通過控制器與系統(tǒng)交互用戶僅僅通過控制器與系統(tǒng)交互MVC風格 控制器(控制器(Controller) 一個模型可對應多個視圖一個模型可對應多個視圖 如果用戶通過一個視圖的控制器改變了模型中的數(shù)據(jù),那么依賴于該數(shù)據(jù)的其他視圖也應該反映出這樣的變化 一旦模型的數(shù)據(jù)發(fā)
34、生了變化,模型需要通知所有相關的視圖做出相應的變化 工作原理:工作原理: 模型維護了一個表 所有視圖還有一些控制器在這個表中登記了對變更通知的需求 模型狀態(tài)的改變將觸發(fā)變更-傳播機制,每個在表中登記的視圖和控制器都會收到變更通知MVC風格 變更變更-傳播機制傳播機制觀察者模式?觀察者模式?事件架構?事件架構? MVC是一種體系結構是一種體系結構 通過各類技術的組合來實現(xiàn) 通過各類框架實現(xiàn)(struts等) 最終實現(xiàn):前臺頁面設計與核心業(yè)務邏輯分離。MVC風格 MVC的實現(xiàn)的實現(xiàn)體系結構風格 基于網絡的體系結構基于網絡的體系結構客戶端(瀏覽器)客戶端(瀏覽器)/服務器體系結構服務器體系結構:一層
35、一層/兩層兩層/三層結構、三層結構、Java EESOA與與Web Services云計算體系結構云計算體系結構 1965-1985:以大型機為核心的:以大型機為核心的集中式處理模式集中式處理模式; 1986-1990:以:以PC/文件服務器文件服務器為核心的為核心的文件共享計算模式文件共享計算模式; 1990-1996:以:以C/S結構結構為主流的為主流的分布式計算模式分布式計算模式; 1996- :以:以Web為核心、為核心、B/S結構結構為主流的為主流的分布式計算模式分布式計算模式; 2000- :以各類移動設備為核心的:以各類移動設備為核心的普適計算模式;普適計算模式; 2005- :
36、以:以Grid、P2P、Web2.0等為核心的等為核心的分布式計算模式分布式計算模式;客戶端/服務器體系結構 計算模式經歷了以下六代:計算模式經歷了以下六代: 一個應用系統(tǒng)被分為兩個邏輯上分離的部分,每一部分充當不同的角色、完成不同的功能,多臺計算機共同完成統(tǒng)一的任務。 客戶機客戶機(前端,前端,front-end):業(yè)務邏輯、與服務器通訊的接口; 服務器服務器(后端:后端:back-end):與客戶機通訊的接口、業(yè)務邏輯、數(shù)據(jù)管理。 一般的:一般的: 客戶機為完成特定的工作向服務器發(fā)出請求;客戶機為完成特定的工作向服務器發(fā)出請求; 服務器處理客戶機的請求并返回結果。服務器處理客戶機的請求并返
37、回結果??蛻舳?服務器體系結構 客戶機客戶機/服務器服務器 (Client-Server Architecture) 兩層C/S 三層C/S 多層C/S客戶端/服務器體系結構 C/S結構發(fā)展歷程結構發(fā)展歷程客戶界面數(shù)據(jù)庫服務器客戶界面數(shù)據(jù)庫服務器業(yè)務邏輯服務器客戶界面數(shù)據(jù)庫服務器業(yè)務邏輯服務器Web服務器客戶端/服務器體系結構 兩層兩層C/S用戶1用戶2用戶3用戶4用戶5Print ServerLink/RxLPT1LPT2COMPower/TXPWROKWIC0ACT/CH0ACT/CH1WIC0ACT/CH0ACT/CH1ETHACTCOL其他公用設備打印機調制解調器InternetInt
38、ranet數(shù)據(jù)庫服務器客戶端/服務器體系結構 兩層兩層C/SClientServer客戶端/服務器體系結構 兩層兩層C/S 基本構件:基本構件: 數(shù)據(jù)庫服務器:存放數(shù)據(jù)的數(shù)據(jù)庫、負責數(shù)據(jù)處理的業(yè)務邏輯; 客戶機應用程序: GUI:用戶界面 業(yè)務邏輯:利用客戶機上的應用程序對數(shù)據(jù)進行處理; 連接件:連接件:經由網絡的調用經由網絡的調用-返回機制或隱式調用機制。返回機制或隱式調用機制。 客戶機服務器:客戶機向服務器發(fā)送請求,并接收返回結果??蛻舳?服務器體系結構 兩層兩層C/S 業(yè)務邏輯的劃分比重:業(yè)務邏輯的劃分比重:在客戶端多一些還是在服務器端多一些?在客戶端多一些還是在服務器端多一些? (胖客
39、戶端:客戶端執(zhí)行大部分的數(shù)據(jù)處理操作) (瘦客戶端:客戶端具有很少或沒有業(yè)務邏輯)客戶端/服務器體系結構 兩層兩層C/S應用應用 兩兩層層C/S架構通常被用在那些管理與操作不太復雜的非實時的信息架構通常被用在那些管理與操作不太復雜的非實時的信息處理系統(tǒng)處理系統(tǒng) 適合于輕量級事務適合于輕量級事務 客戶機對服務器的請求少,數(shù)據(jù)傳輸量少客戶機對服務器的請求少,數(shù)據(jù)傳輸量少 當業(yè)務邏輯較少變化以及用戶數(shù)當業(yè)務邏輯較少變化以及用戶數(shù)少于少于100時,兩層時,兩層C/S架構架構的性能的性能較好較好客戶端/服務器體系結構 三層三層C/S 在客戶端與數(shù)據(jù)庫服務器之間增加了一個中間層在客戶端與數(shù)據(jù)庫服務器之間增
40、加了一個中間層 中間層可能為:事務處理監(jiān)控服務器、消息服務器、應用服務器中間層可能為:事務處理監(jiān)控服務器、消息服務器、應用服務器 中間層負責消息排隊、業(yè)務邏輯執(zhí)行、數(shù)據(jù)傳輸?shù)裙δ苤虚g層負責消息排隊、業(yè)務邏輯執(zhí)行、數(shù)據(jù)傳輸?shù)裙δ芸蛻舳?服務器體系結構 三層三層C/S應用應用輸入數(shù)據(jù)輸出數(shù)據(jù)請求按鈕表示層業(yè)務處理開始SQL 請求結束SQL 請求開始業(yè)務處理結束數(shù)據(jù)存取請求業(yè)務處理程序業(yè)務處理請求和業(yè)務處理所需的全部輸入數(shù)據(jù)全部處理結束DBMS 執(zhí)行SQL數(shù)據(jù)層業(yè)務處理開始數(shù)據(jù)存取請求業(yè)務處理結束數(shù)據(jù)存取程序數(shù)據(jù)登錄/更新/讀取的請求數(shù)據(jù)登錄/更新/讀取的結果功能層客戶端/服務器體系結構 三層三層C
41、/S 表示層表示層: 用戶接口部分,擔負著用戶與應用之間的對話功能;用戶接口部分,擔負著用戶與應用之間的對話功能; 檢查用戶的輸入,顯示應用的輸出;檢查用戶的輸入,顯示應用的輸出; 通常使用通常使用GUI; 在變更時,只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響在變更時,只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他層;其他層; 不包含或包含一部分業(yè)務邏輯。不包含或包含一部分業(yè)務邏輯??蛻舳?服務器體系結構 三層三層C/S 表示層表示層: 用戶接口部分,擔負著用戶與應用之間的對話功能;用戶接口部分,擔負著用戶與應用之間的對話功能; 檢查用戶的輸入,顯示應用的輸出;檢查用戶的輸入,顯示應用的輸出;
42、 通常使用通常使用GUI; 在變更時,只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響在變更時,只需要改寫顯示控制和數(shù)據(jù)檢查程序,而不影響其他層;其他層; 不包含或包含一部分業(yè)務邏輯。不包含或包含一部分業(yè)務邏輯??蛻舳?服務器體系結構 三層三層C/S 功能層功能層: 應用系統(tǒng)的主體,包括大部分業(yè)務處理邏輯應用系統(tǒng)的主體,包括大部分業(yè)務處理邏輯 (通常以業(yè)務構件通常以業(yè)務構件的形式存在,如的形式存在,如JavaBean/EJB/COM等等); 從表示層獲取用戶的輸入數(shù)據(jù)并加以處理;從表示層獲取用戶的輸入數(shù)據(jù)并加以處理; 處理過程中需要從數(shù)據(jù)層獲取數(shù)據(jù)或向數(shù)據(jù)層更新數(shù)據(jù);處理過程中需要從數(shù)據(jù)層獲取數(shù)據(jù)或
43、向數(shù)據(jù)層更新數(shù)據(jù); 處理結果返回給表示層。處理結果返回給表示層。客戶端/服務器體系結構 三層三層C/S 數(shù)據(jù)層數(shù)據(jù)層: DMBS; 接受功能層的數(shù)據(jù)查詢請求,執(zhí)行請求,并將查詢結果返回接受功能層的數(shù)據(jù)查詢請求,執(zhí)行請求,并將查詢結果返回給功能層;給功能層; 從功能層接受數(shù)據(jù)存取請求,并將數(shù)據(jù)寫入數(shù)據(jù)庫;從功能層接受數(shù)據(jù)存取請求,并將數(shù)據(jù)寫入數(shù)據(jù)庫; 請求的執(zhí)行結果也要返回給功能層。請求的執(zhí)行結果也要返回給功能層??蛻舳?服務器體系結構 三層三層C/S結構的物理結構結構的物理結構 兩層兩層C/S已經將數(shù)據(jù)層分離出來已經將數(shù)據(jù)層分離出來 三層三層C/S則要將則要將表示層與功能層分離開來表示層與功能
44、層分離開來,形成獨立的程序,并,形成獨立的程序,并使二者之間的接口簡潔明了。使二者之間的接口簡潔明了。 問題:這三個層次在物理上是如何分布的?問題:這三個層次在物理上是如何分布的?客戶端/服務器體系結構 基于集群基于集群(Cluster)的的C/S物理分布物理分布 事實上,功能層通常事實上,功能層通常不是只駐留在同一臺服務器上不是只駐留在同一臺服務器上,數(shù)據(jù)層也是,數(shù)據(jù)層也是如此;如此; 如果如果功能層功能層(或數(shù)據(jù)層或數(shù)據(jù)層)分布在多臺服務器上分布在多臺服務器上,那么就形成了基于,那么就形成了基于集群集群(Cluster)的的C/S物理分布模式。物理分布模式。客戶端/服務器體系結構 三層三層
45、C/S結構的優(yōu)點結構的優(yōu)點 在用戶數(shù)目較多的情況下,三層在用戶數(shù)目較多的情況下,三層C/S結構將結構將極大改善性能與靈活極大改善性能與靈活性性(通??芍С謹?shù)百并發(fā)用戶,通過集群可達數(shù)萬并發(fā)用戶通常可支持數(shù)百并發(fā)用戶,通過集群可達數(shù)萬并發(fā)用戶); 允許合理地劃分三層結構的功能,使之在邏輯上保持相對獨立性,允許合理地劃分三層結構的功能,使之在邏輯上保持相對獨立性,能能提高系統(tǒng)和軟件的可維護性和可擴展性提高系統(tǒng)和軟件的可維護性和可擴展性 允許更靈活有效地選用相應的平臺和硬件系統(tǒng),并且這些平臺和允許更靈活有效地選用相應的平臺和硬件系統(tǒng),并且這些平臺和各個組成部分可以具有各個組成部分可以具有良好的可升級
46、性和開放性良好的可升級性和開放性。客戶端/服務器體系結構 瀏覽器瀏覽器/服務器服務器(Browser/Server Architecture) 瀏覽器瀏覽器/服務器服務器(B/S)是三層是三層C/S風格的一種實現(xiàn)方式。風格的一種實現(xiàn)方式。 表現(xiàn)層:瀏覽器 邏輯層: Web服務器 應用服務器 數(shù)據(jù)層:數(shù)據(jù)庫服務器客戶端/服務器體系結構 瀏覽器瀏覽器/服務器服務器(Browser/Server Architecture) J2EE平臺典型平臺典型B/S結構的實現(xiàn)方式結構的實現(xiàn)方式客戶端/服務器體系結構 B/S架構的優(yōu)點架構的優(yōu)點 基于基于B/S體系結構的軟件,系統(tǒng)安裝、修改和維護全在服務器端體系結構的軟件,系統(tǒng)安裝、修改和維護全在服務器端解決,解決,系統(tǒng)維護成本低系統(tǒng)維護成本低: 客戶端無任何業(yè)務邏輯,用戶在使用系統(tǒng)時,僅僅需要一個瀏覽器就可運行全部的模塊,真正達到了“零客戶端”的功能,很容易在運行時自動升級。 良好的靈活性和可擴展性:對于環(huán)境和應用條件經常變動的情況,只要對業(yè)務邏輯層實施相應的改變,就能夠達到目的。 三層
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國機器人用立體攝像頭行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國油藏模擬軟件行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國電子保險絲芯片行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025-2030全球中低牌號無取向硅鋼行業(yè)調研及趨勢分析報告
- 2025年全球及中國特殊需求三輪車行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國超精密非球面磨床行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025-2030全球軟件工程智能平臺行業(yè)調研及趨勢分析報告
- 2025-2030全球1P儲能鋰電池行業(yè)調研及趨勢分析報告
- 2025年全球及中國漫畫書出版商行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年全球及中國自動血壓脈搏測試儀行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 涉詐風險賬戶審查表
- 2023年大學英語四級考試模擬真題及答案
- 四年級數(shù)學上冊口算天天練4
- 蘇教版二年級數(shù)學寒假輔導提高班課件 第1講 眼花繚亂的數(shù)據(jù)(66張PPT)
- 水利水電工程監(jiān)理平行檢測表部分
- 分部分項工程質量檢驗計劃表
- 社區(qū)衛(wèi)生服務中心醫(yī)療服務推薦病-2023版1-4-10
- HY/T 266-2018外壓中空纖維超濾膜表面親水性的測試接觸角法
- 【英文原版小說】the things they carried《負荷》
- 領導干部如何管理壓力與情緒課件
- 2022-2023年度神農中華農業(yè)科技獎科研和科普類推薦書和摘要表(樣本)
評論
0/150
提交評論