版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件的架構與設計模式之什么是架構2005-06-0714:18作者:閻宏出處:天極網責任編輯:方舟什么是軟件系統(tǒng)的架構(Architecture)?般而言,架構有兩個要素:它是一個軟件系統(tǒng)從整體到部分的最高層次的劃分。一個系統(tǒng)通常是由元件組成的,而這些元件如何形成、相互之間如何發(fā)生作用,則是關于這個系統(tǒng)本身結構的重要信息。詳細地說,就是要包括架構元件(ArchitectureComponent)、聯(lián)結器(Connector)、任務流(Task-flow)。所謂架構元素,也就是組成系統(tǒng)的核心磚瓦,而聯(lián)結器則描述這些元件之間通訊的路徑、通訊的機制、通訊的預期結果,任務流則描述系統(tǒng)如何使用這些元件和
2、聯(lián)結器完成某一項需求。建造一個系統(tǒng)所作出的最高層次的、以后難以更改的,商業(yè)的和技術的決定。在建造一個系統(tǒng)之前會有很多的重要決定需要事先作出,而一旦系統(tǒng)開始進行詳細設計甚至建造,這些決定就很難更改甚至無法更改。顯然,這樣的決定必定是有關系統(tǒng)設計成敗的最重要決定,必須經過非常慎重的研究和考察。計算機軟件的歷史開始于五十年代,歷史非常短暫,而相比之下建筑工程則從石器時代就開始了,人類在幾千年的建筑設計實踐中積累了大量的經驗和教訓。建筑設計基本上包含兩點,一是建筑風格,二是建筑模式。獨特的建筑風格和恰當選擇的建筑模式,可以使一個獨一無二。下面的照片顯示了中美洲古代瑪雅建筑,Chichen-Itza大金
3、字塔,九個巨大的石級堆壘而上,九十一級臺階(象征著四季的天數)奪路而出,塔頂的神殿聳入云天。所有的數字都如日歷般嚴謹,風格雄渾。難以想象這是石器時代的建筑物。圖1、位于墨西哥Chichen-ltza(在瑪雅語中chi意為嘴chen意為井)的古瑪雅建筑。(攝影:作者)軟件與人類的關系是架構師必須面對的核心問題,也是自從軟件進入歷史舞臺之后就出現(xiàn)的問題。與此類似地,自從有了建筑以來,建筑與人類的關系就一直是建筑設計師必須面對的核心問題。英國首相丘吉爾說,我們構造建筑物,然后建筑物構造我們(Weshapeourbuildings,andafterwardsourbuildingsshapeus)。英
4、國下議院的會議廳較狹窄,無法使所有的下議院議員面向同一個方向入座,而必須分成兩側入座。丘吉爾認為,議員們入座的時候自然會選擇與自己政見相同的人同時入座,而這就是英國政黨制的起源。Party這個詞的原意就是方、面。政黨起源的關鍵就是建筑物對人的影響。在軟件設計界曾經有很多人認為功能是最為重要的,形式必須服從功能。與此類似地,在建筑學界,現(xiàn)代主義建筑流派的開創(chuàng)人之一LouisSullivan也認為形式應當服從于功能(Formsfollowsfunction)o幾乎所有的軟件設計理念都可以在浩如煙海的建筑學歷史中找到更為遙遠的歷史回響。最為著名的,當然就是模式理論和XP理論。架構的目標是什么正如同軟
5、件本身有其要達到的目標一樣,架構設計要達到的目標是什么呢?一般而言,軟件架構設計要達到如下的目標:可靠性(Reliable)。軟件系統(tǒng)對于用戶的商業(yè)經營和管理來說極為重要,因此軟件系統(tǒng)必須非常可靠。安全行(Secure)。軟件系統(tǒng)所承擔的交易的商業(yè)價值極高,系統(tǒng)的安全性非常重要??蓴U展性(Scalable)。軟件必須能夠在用戶的使用率、用戶的數目增加很快的情況下,保持合理的性能。只有這樣,才能適應用戶的市場擴展得可能性。訶定制化(Customizable)。同樣的一套軟件,可以根據客戶群的不同和市場需求的變化進行調整??蓴U展性(Extensible)o在新技術出現(xiàn)的時候,一個軟件系統(tǒng)應當允許導
6、入新技術,從而對現(xiàn)有系統(tǒng)進行功能和性能的擴展訶維護性(Maintainable)。軟件系統(tǒng)的維護包括兩方面,一是排除現(xiàn)有的錯逞一二是將新的軟件需求反映到現(xiàn)有系統(tǒng)中去。一個易于維護的系統(tǒng)可以有效地降低技術支持的花費客戶體驗(CustomerExperience)。軟件系統(tǒng)必須易于使用。市場時機(TimetoMarket)。軟件用戶要面臨同業(yè)競爭,軟件提供商也要面臨同業(yè)競爭。以最快的速度爭奪市場先機非常重要。架構的種類根據我們關注的角度不同,可以將架構分成三種:邏輯架構、軟件系統(tǒng)中元件之間的關系,比如用戶界面,數據庫,外部系統(tǒng)接口,商業(yè)邏輯元件,等比如下面就是筆者親身經歷過的一個軟件系統(tǒng)的邏輯架構
7、圖磴時眼務登最侵看ESO服務ApplicationServerTrinsparl(Emflil,HTTPS)巍沖爾務去疑啟挹庫DataAcces-sUserPF&ferene&圖2、一個邏輯架構的例子從上面這張圖中可以看出,此系統(tǒng)被劃分成三個邏輯層次,即表象層次,商業(yè)層次和數據持久層次。每一個層次都含有多個邏輯元件。比如WEB服務器層次中有HTML服務元件、Session服務元件、安全服務元件、系統(tǒng)管理元件等。物理架構、軟件元件是怎樣放到硬件上的。比如下面這張物理架構圖描述了一個分布于北京和上海的分布式系統(tǒng)的物理架構,圖中所有的元件都是物理設備,包括網絡分流器、代理服務器、WEB服務器、應用服
8、務器、報表服務器、整合服務器、存儲服務器、主機等等。且AB|丄由內網主機CMAW-hkvHfcafLOC單口rwdo*ffrtHrw0SttbEMnadci-2用戶IMPUiKkr*TNMdhni1ftUlj-rUAU5區(qū)iHTnflUNIX北京媲圖3、一個物理架構的例子11K*DtSCKrim系統(tǒng)架構、系統(tǒng)的非功能性特征,如可擴展性、可靠性、強壯性、靈活性、性能等。系統(tǒng)架構的設計要求架構師具備軟件和硬件的功能和性能的過硬知識,這一工作無疑是架構設計工作中最為困難的工作。此外,從每一個角度上看,都可以看到架構的兩要素:元件劃分和設計決定。首先,一個軟件系統(tǒng)中的元件首先是邏輯元件。這些邏輯元件如
9、何放到硬件上,以及這些元件如何為整個系統(tǒng)的可擴展性、可靠性、強壯性、靈活性、性能等做出貢獻,是非常重要的信息。其次,進行軟件設計需要做出的決定中,必然會包括邏輯結構、物理結構,以及它們如何影響到系統(tǒng)的所有非功能性特征。這些決定中會有很多是一旦作出,就很難更改的。根據作者的經驗,一個基于數據庫的系統(tǒng)架構,有多少個數據表,就會有多少頁的架構設計文檔。比如一個中等的數據庫應用系統(tǒng)通常含有一百個左右的數據表,這樣的一個系統(tǒng)設計通常需要有一百頁左右的架構設計文檔。架構師軟體設計師中有一些技術水平較高、經驗較為豐富的人,他們需要承擔軟件系統(tǒng)的架構設計,也就是需要設計系統(tǒng)的元件如何劃分、元件之間如何發(fā)生相互
10、作用,以及系統(tǒng)中邏輯的、物理的、系統(tǒng)的重要決定的作出。這樣的人就是所謂的架構師(Architect)。在很多公司中,架構師不是一個專門的和正式的職務。通常在一個開發(fā)小組中,最有經驗的程序員會負責一些架構方面的工作。在一個部門中,最有經驗的項目經理會負責一些架構方面的工作。但是,越來越多的公司體認到架構工作的重要性,并且在不同的組織層次上設置專門的架構師位置,由他們負責不同層次上的邏輯架構、物理架構、系統(tǒng)架構的設計、配置、維護等工作。軟件的架構與設計模式之模式的種類2005-06-0714:35作者:閻宏出處:天極網責任編輯:方舟由于GOF95是論述軟件模式的著作的第一本,也是00設計理論著作中
11、最流行的一本,因此有些人常常使用設計模式(DesignPattern)一詞來指所有直接處理軟件的架構、設計、程序實現(xiàn)的任何種類的模式。另外一些人則強調要劃分三種不同層次的模式:架構模式(ArchitecturalPattern)、設計模式(DesignPattern)、成例(Idiom)。成例有時稱為代碼模式(CodingPattern)o這三者之間的區(qū)別在于三種不同的模式存在于它們各自的抽象層次和具體層次上。架構模式是一個系統(tǒng)的高層次策略,涉及到大尺度的組件以及整體性質和力學。架構模式的好壞可以影響到總體布局和框架性結構。設計模式是中等尺度的結構策略。這些中等尺度的結構實現(xiàn)了一些大尺度組件的
12、行為和它們之間的關系。模式的好壞不會影響到系統(tǒng)的總體布局和總體框架。設計模式定義出子系統(tǒng)或組件的微觀結構。代碼模式(或成例)是特定的范例和與特定語言有關的編程技巧。代碼模式的好壞會影響到一個中等尺度組件的內部、外部的結構或行為的底層細節(jié),但不會影響到一個部件或子系統(tǒng)的中等尺度的結構,更不會影響到系統(tǒng)的總體布局和大尺度框架。代碼模式或成例(CodingPattern或Idiom)代碼模式(或成例)是較低層次的模式,并與編程語言密切相關。代碼模式描述怎樣利用一個特定的編程語言的特點來實現(xiàn)一個組件的某些特定的方面或關系。較為著名的代碼模式的例子包括雙檢鎖(Double-CheckLocking)模式
13、等。設計模式(DesignPattern)一個設計模式提供一種提煉子系統(tǒng)或軟件系統(tǒng)中的組件的,或者它們之間的關系的綱要設計。設計模式描述普遍存在的在相互通訊的組件中重復出現(xiàn)的結構,這種結構解決在一定的背景中的具有一般性的設計問題。設計模式常常劃分成不同的種類,常見的種類有:創(chuàng)建型設計模式,如工廠方法(FactoryMethod)模式、抽象工廠(AbstractFactory)模式、原型(Prototype)模式、單例(Singleton)模式,建造(Builder)模式等結構型設計模式,如合成(Composite)模式、裝飾(Decorator)模式、代理(Proxy)模式、享元(Flywei
14、ght)模式、門面(Facade)模式、橋梁(Bridge)模式等行為型模式,如模版方法(TemplateMethod)模式、觀察者(Observer)模式、迭代子(Iterator)模式、責任鏈(ChainofResponsibility)模式、備忘錄(Memento)模式、命令(Command)模式、狀態(tài)(State)模式、訪問者(Visitor)模式等等。以上是三種經典類型,實際上還有很多其他的類型,比如Fundamental型、Partition型,Relation型等等設計模式在特定的編程語言中實現(xiàn)的時候,常常會用到代碼模式。比如單例(Singleton)模式的實現(xiàn)常常涉及到雙檢鎖(
15、Double-CheckLocking)模式等。架構模式(ArchitecturalPattern)一個架構模式描述軟件系統(tǒng)里的基本的結構組織或綱要。架構模式提供一些事先定義好的子系統(tǒng),指定它們的責任,并給出把它們組織在一起的法則和指南。有些作者把這種架構模式叫做系統(tǒng)模式STELTING02。一個架構模式常常可以分解成很多個設計模式的聯(lián)合使用。顯然,MVC模式就是屬于這一種模式。MVC模式常常包括調停者(Mediator)模式、策略(Strategy)模式、合成(Composite)模式、觀察者(Observer)模式等。此外,常見的架構模式還有:Layers(分層)模式,有時也稱Tiers模
16、式Blackboard(黑板)模式Broker(中介)模式DistributedProcess(分散過程)模式Microkernel(微核)模式架構模式常常劃分成如下的幾種:一、FromMudtoStructure型。幫助架構師將系統(tǒng)合理劃分,避免形成一個對象的海洋(Aseaofobjects)。包括Layers(分層)模式、Blackboard(黑板)模式、Pipes/Filters(管道/過濾器)模式等。二、分散系統(tǒng)(DistributedSystems)型。為分散式系統(tǒng)提供完整的架構設計,包括像Broker(中介)模式等。三、人機互動(InteractiveSystems)型,支持包含有
17、人機互動介面的系統(tǒng)的架構設計,例子包括MVC(Model-View-Controller)模式、PAC(Presentation-Abstraction-Control)模式等。四、AdaptableSystems型,支持應用系統(tǒng)適應技術的變化、軟件功能需求的變化。如Reflection(反射)模式、Microkernel(微核)模式等軟件的架構與模式之經典架構模式簡介2005-06-0714:42作者:閻宏出處:天極網責任編輯:方舟根據LindaRising的PatternAlmanac一書,已知的架構模式有七十多種。這是一個只多不少的統(tǒng)計,其中包括了很多通常認為是設計模式的模式,比如Bri
18、dge,F(xiàn)acade,Interpreter,Mediator等模式通常認為是設計模式,但是在許多情況下,也可以作為架構模式出現(xiàn),因此也常常被當作架構模式。Layers架構模式在收集到用戶對軟件的要求之后,架構設計就開始了。架構設計一個主要的目的,就是把系統(tǒng)劃分成為很多板塊。劃分的方式通常有兩種,一種是橫向的劃分,一種是縱向劃分。橫向劃分將系統(tǒng)按照商業(yè)目的劃分。比如一個書店的管理系統(tǒng)可以劃分成為進貨、銷售、庫存管理、員工管理等等??v向劃分則不同,它按照抽象層次的高低,將系統(tǒng)劃分成層”,或叫Layer。比如一個公司的內網管理系統(tǒng)通常可以劃分成為下面的幾個Layer:一、網頁,也就是用戶界面,負責
19、顯示數據、接受用戶輸入;二、領域層,包括JavaBean或者COM對象、B2B服務等,封裝了必要的商業(yè)邏輯,負責根據商業(yè)邏輯決定顯示什么數據、以及如何根據用戶輸入的數據進行計算;三、數據庫,負責存儲數據,按照查詢要求提供所存儲的數據。四、操作系統(tǒng)層,比如WindowsNT或者Solaris等五、硬件層,比如SUNE450服務器等有人把這種Layer叫做Tier,但是Tier多帶有物理含義,不同的Tier往往位于不同的計算機上,由網絡連接起來,而Layer是純粹邏輯的概念,與物理劃分無關。Layers架構模式的好處是:第一、任何一層的變化都可以很好地局限于這一層,而不會影響到其他各層。第二、更容
20、易容納新的技術和變化。Layers架構模式容許任何一層變更所使用的技術Fa?ade架構模式外部與一個子系統(tǒng)的通訊必須通過一個統(tǒng)一的門面(Facade)對象進行,這就是Facade模式?,F(xiàn)代的軟件系統(tǒng)都是比較復雜的,設計模式的任務就是協(xié)助設計師處理復雜系統(tǒng)的設計。設計師處理復雜系統(tǒng)的一個常見方法便是將其分而治之,把一個系統(tǒng)劃分為幾個較小的子系統(tǒng)。但是這樣做了以后,設計師往往仍然會發(fā)現(xiàn)一個子系統(tǒng)內仍然有太多的類型要處理。而使用一個子系統(tǒng)的使用端往往只關注一些特定的功能,卻要同時與子系統(tǒng)內部的許多對象打交道后才能達到目的,請見下面的對象圖。圖4、Facade架構模式的結構圖。這就是一種不便,它使得系
21、統(tǒng)的邏輯變得不必要的復雜,維護成本提高,復用率降低。用一個范例說明,中國大陸的醫(yī)院便是一個子系統(tǒng),按照部門職能,這個系統(tǒng)可以劃分為掛號、門診、劃價、化驗、收銀、取藥等??床〉牟∪艘c這些部門打交道,就如同一個子系統(tǒng)的使用端與一個子系統(tǒng)的各個類型打交道一樣,不是一件容易的事情。首先病人必須先掛號,然后門診。如果醫(yī)生要求化驗,病人必須首先劃價,然后繳款,才能到化驗部門做化驗?;灪螅倩氐介T診室,請見下面的對象圖。圖5、描述病人在醫(yī)院里的體驗。圖中的方框代表醫(yī)院。解決這種不便的方法便是引進Facade模式。仍然通過醫(yī)院的范例說明,可以設置一個接待員的位置,由接待員負責代為掛號、劃價、繳費、取藥等。
22、這個接待員就是Facade模式的體現(xiàn),病人只接觸接待員,由接待員負責與醫(yī)院的各個部門打交道,請見下面的對象圖。J5A接待員/圖6、描述經過Facade模式的改裝后,病人在醫(yī)院里的體驗。圖中的方框代表醫(yī)院。Facade模式要求一個子系統(tǒng)的外部與其內部的通訊必須通過一個統(tǒng)一的門面(Facade)對象進行oFacade模式提供一個高等級的接口,使得子系統(tǒng)更易于使用。使用了Facade模式之后,本章的第一個圖中所描述的一個子系統(tǒng)的使用端對象所面對的復雜關系就可以簡化為下面這個樣子。描述經過Facade模式的改裝后,一個子系統(tǒng)的使用端與子系統(tǒng)的關系。圖中的大方框代表一個子系統(tǒng)。就如同醫(yī)院的接待員一樣,F(xiàn)
23、acade模式的門面類型將使用端與子系統(tǒng)的內部復雜性分隔開,使得使用端只需要與門面對象打交道,而不需要與子系統(tǒng)內部的很多對象打交道。Mediator架構模式Mediator模式包裝了一系列對象相互作用的方式,使得這些對象不必互相明顯參照;從而使它們可以較松散地耦合。當這些對象中的某些對象之間的相互作用發(fā)生改變時,不會立即影響到其它的一些對象之間的相互作用;從而可以保證這些相互作用可以彼此獨立地變化。在下面的示意圖中有大量的對象,這些對象既會影響別的對象,又會被別的對象所影響,因此常常叫做同事(Colleague)對象。這些同事對象通過彼此的相互作用形成系統(tǒng)的行為。從圖中可以看出軟件的架構與設計
24、模式之層次原則2005-06-0714:49作者:閻宏出處:天極網責任編輯:方舟計算機軟件工業(yè)是一個年輕的工業(yè),它誕生于1950年,至今不過五十幾年的歷史。相比之下,建筑設計則可以追溯到幾千年前埃及金字塔時代,甚至更早。因此,計算機軟件設計師可以從建筑設計師那里學習到非常之多的經驗和教訓。計算機軟件系統(tǒng)的設計和建筑設計有很明顯的相似之處。如果讀者到過紐約華爾街附近的話,會發(fā)現(xiàn)那里大量的古老雄偉的地標性建筑群中散布著一些超豪華住宅建筑,十分不和諧。其實這些建筑本是昂貴的辦公大樓,建筑結構極為牢固,只是因為大樓的設計老舊,無法適應架設計算機通訊設備、以及電梯改造等等需求,而不得不改造為住宅。這一波
25、發(fā)生在八十年代的IT設備革新的浪潮導致了大量的建筑物被拆毀重建,這些被改造為住宅的僅僅是其中少數幸存下來的。著名的建筑設計學家StewardBrand考察了上千所古今建筑物,特別是它們在落成和投入使用之后所發(fā)生的事情。他發(fā)現(xiàn)在建筑物的設計中,層次的概念是基本的原則。StewardBrand說,好的建筑都是為變化而設計的(BuiltforChange),從古至今,人類所建造的千千萬萬的建筑物,其成功與失敗全在于是否能夠適應需求的變化。但是怎么做到這一點呢?StewardBrand說:一個好的架構應當將變化的與不變的層次分開,也就是按照可變性的不同,將建筑物劃分成為不同的變化層。圖10、Stewa
26、rdBrand所提出的六個S原則,描述建筑物的設計。六個S英國建筑學院院長FrankDuffy說,我們的基本觀點是根本就不存在一棟建筑這樣的概念。為什么這樣說呢?一棟建筑是一個固體的概念;而作為一個固體的建筑物并不存在,真正存在的是一個流體,它處在不斷的流動和變化之中,本身可以按照流速劃分成幾個不同的層次。在文獻BRAND94中,StewardBrand進一步發(fā)展了這個概念。他指出,建筑物可以劃分成為六個層次:Ste(地點)、建筑物所在的地理位置,建筑用地的形狀如何等。建筑用地上面的建筑每過幾十年的時間就會被推倒重來,但是建筑用地會長久存在。Structure(結構)、建筑的基礎結構部分非常難
27、以改變,改變起來也非常昂貴。一般而言,基礎結構的生命就是建筑物本身的生命?;A結構的生命通常可以長達三土年到三百年,當然由于其他的原因,很少有建筑物壽命超過六十年的。顯然,建筑物的主體結構的穩(wěn)固性僅次于地點的穩(wěn)固性。無論是鋼結構的還是混凝土結構建筑,其主體結構都是非常難以改變的,即便較小的改變所需代價都大得難以承受。Windows操作系統(tǒng)從9x版本不斷升級到XP版本,其內部的變化就如同建筑物的主體結構變化一樣,是非常昂貴的變化。Skin(外表)、這就是建筑物的外表。因為時尚、信仰、技術革命、大規(guī)模整修等原因,一般建筑物的外表每過二十年左右就會發(fā)生一次變化。比如最近對節(jié)省能源的關注導致建筑物外表
28、更加密閉和絕緣。顯然,建筑物外表的穩(wěn)固刑部能夠與建筑物的主體結構相比。在建筑物的主體結構不變的情況下,外表可以發(fā)生適當的變化。熟悉Windows操作系統(tǒng)的讀者都目睹了從Windows3.x到Windows9x以及Window/s2000的圖形用戶界面所發(fā)生的變化,一個早期開發(fā)的應用程序,在不需要修改的情況下,就可以變臉。Service(服務)、這是建筑物的五臟六腑:通訊電纜、電源線、排水、供暖、通氣和空調等,以及建筑物內部的可動部分,比如電梯、自動樓梯等。每過7到15年這些部分就磨損了。很多情況下,這些容易磨損的部分非常緊密地嵌入到建筑物的結構中,以至于無法簡單地更換它們,就只好將建筑物推倒重
29、來。因此,建筑物的設計必須允許服務部分進行不斷的更新,以便為建筑物的住戶或者商家提供與時具進的服務。SpacePlan(空間規(guī)劃)、建筑物內部的墻、天花板、地板、門等如何分布。商業(yè)空間的規(guī)劃常常會因為部門重組而發(fā)生變化,一般每三年就改變一次;而住宅空間有時每三十年才發(fā)生變化。顯然,空間的規(guī)劃受制于建筑物的基本結構和服務。Stuff(擺設)、這是一些大家都非常熟悉的物品,比如辦公室里面的文件、電話、盆景、廢紙簍,家庭的床、洗漱間、照片、廚房設施、燈、發(fā)梳等,這些東西每月、每周、每日、每時都會變化。這些裝飾物的使用取決于建筑物的內部空間規(guī)劃,而不是相反。圖11、StewardBrand所提出的六個
30、S原則,描述建筑物的設計。這就是建筑學的層次設計原則,其關鍵就是按照結構的穩(wěn)固度對建筑物的結構進行劃分。穩(wěn)固度的反面就是變化的可能性;這一設計原則按照變化的難易程度將結構分割成不同層次,位于最底部的是最穩(wěn)固、最難以改變的結構,越往上就是穩(wěn)固性越低、變化越容易的結構。因此FrankDuffy說,作為一個設計師,你應當避免為一個五分鐘的問題提供一個五十年的解決方案,也不要為一個五十年的問題提供一個五分鐘的解決方案。建筑設計師、服務工程師、空間計劃師、室內裝修師應當解決不同時間尺度上的問題。軟件的架構與設計模式之Layers模式2005-06-0714:53作者:閻宏出處:天極網責任編輯:方舟建筑學
31、的設計原則也應當成為軟件系統(tǒng)設計的指導原則。第一種情況這也就是最為熟知的情況。客戶端向第N層發(fā)出請求,而第N層不能獨立完成請求,需要調用第N-1層所提供的服務,第N-1層同樣需要他的下級,也就是N-2層所提供的服務。如此往復,直到第2層和第1層。第1層可以獨立完成自己的任務,它將執(zhí)行的結果返還給第2層。第2層得到第1層的結果之后,便能夠繼續(xù)完成自己的任務了,它會把執(zhí)行的結果繼續(xù)向上,也就是第3層傳遞。如此反復,一直到第N-1層和第N層。圖12、在有N個層次的架構中,請求(Request)沿著層次自上向下傳遞,結果(Result)自下向上傳遞。系統(tǒng)的客戶端只知道第N層,它向第N層發(fā)出請求,并且從
32、第N層接到結果,客戶端并不知道其他層次的存在。參見下圖。RequestResult圖13、客戶端只知道第N層,而不知道其他層次。第二種情況這第二種情況代表了自下至上的通訊,稱為通知(Notification)。這一系列的行為開始于第1層,這一層通過處理后,將通知向上傳給第2層,繼續(xù)向上傳遞到第3層,一直到第N-1層和第N層為止。參見下圖。NoldbCmtiM圖14、在有N個層次的架構中,Notification沿著層次自下向上傳遞。使用過USB設備的讀者知道,一旦把USB設備插入到計算機中的時候,USB驅動軟件立刻就會發(fā)現(xiàn)設備被激活,并通知設備的設備操作軟件,設備操作軟件便會啟動。這一系列的行
33、為就是Notification自下向上傳遞的過程。在第一種情況中,請求首先向下傳遞,然后結果逆向傳遞,形成一個環(huán)形。在第二種情況中,Notification的傳遞是單向的。第三種情況這一種情況與第一種情況相似,只是僅涉及到一部分的層次而已。首先客戶端向第N層發(fā)出請求,而第N層不能獨立完成請求,需要調用第N-1層所提供的服務,第N-1層同樣需要他的下級,也就是N-2層所提供的服務。如此往復,直到第J層為止。第J層可以獨立完成自己的任務,而不再需要J-1層。它將執(zhí)行的結果返還給第J+1層。第J+1層得到第J層的結果之后,便能夠繼續(xù)完成自己的任務了,它會把執(zhí)行的結果繼續(xù)向上,也就是第J+2層傳遞。如此反復,一直到第N-1層和第N層。參見下圖。RequestResult圖15、在有N個層次的架構中,Request向上傳遞到某個中間層次就停止了,Result從那里向下傳遞。同樣,客戶端只知道第N
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考物理總復習專題十一交變電流第1講交變電流的產生和描述練習含答案
- 清算風險管理協(xié)議
- 油漆購銷合同范例
- 九年級道德與法治上冊 第一單元 富強與創(chuàng)新 第一課 踏上強國之路 第2框走向共同富裕教案1 新人教版
- 二年級品德與生活上冊 玩中有發(fā)現(xiàn)教案1 首師大版
- 2024-2025學年新教材高中生物 第四章 生物的變異 第一節(jié) 基因突變可能引起性狀改變教案(2)浙科版必修2
- 2024-2025學年高中歷史 第一單元 第1課 第一次世界大戰(zhàn)的爆發(fā)教案1 新人教版選修3
- 2024-2025學年高中地理 第二章 中國的主要自然災害 2.1 自然資源利用中存在的問題教案 中圖版選修6
- 廣東省佛山市順德區(qū)江義初級中學九年級化學上冊 3.1 分子和原子教案3 (新版)新人教版
- 2023七年級語文下冊 第四單元 寫作 怎樣選材配套教案 新人教版
- 各種型鋼理論截面積、理論表面積、理論重量對照表
- GIS安裝施工方案
- 礦區(qū)基本情況(簡介)
- 部門服務滿意度評分表
- 第十章銷售團隊的激勵機制
- 《螞蟻做操》說課稿
- 《危險駕駛罪》PPT課件.ppt
- (完整版)PD、QC有限快充的知識講解
- 習慣一積極主動
- 張礦集團人才發(fā)展規(guī)劃
- 初中美術板報設計1ppt課件
評論
0/150
提交評論