軟件體系結(jié)構(gòu)與設(shè)計(jì)模式_第1頁(yè)
軟件體系結(jié)構(gòu)與設(shè)計(jì)模式_第2頁(yè)
軟件體系結(jié)構(gòu)與設(shè)計(jì)模式_第3頁(yè)
軟件體系結(jié)構(gòu)與設(shè)計(jì)模式_第4頁(yè)
軟件體系結(jié)構(gòu)與設(shè)計(jì)模式_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第8章軟件體系結(jié)構(gòu)與設(shè)計(jì)模式本章目標(biāo)

了解軟件體系結(jié)構(gòu)的定義和建模方法熟悉常見(jiàn)的軟件體系結(jié)構(gòu)風(fēng)格了解軟件的質(zhì)量屬性

了解體系結(jié)構(gòu)框架了解軟件系統(tǒng)的設(shè)計(jì)模式8.1軟件體系結(jié)構(gòu)的概念

8.1.1什么是軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)是系統(tǒng)的一個(gè)或多個(gè)結(jié)構(gòu),它包括:1)軟件的組成元素(組件);2)這些(組件)元素的外部可見(jiàn)特性;3)這些元素(組件)之間的相互關(guān)系。軟件體系結(jié)構(gòu)不僅指定了系統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu),也顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的對(duì)應(yīng)關(guān)系,提供了一些設(shè)計(jì)決策的基本原理。8.1軟件體系結(jié)構(gòu)的概念

軟件體系結(jié)構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。它由功能各異、相互作用的部件按照層次構(gòu)成,包含了系統(tǒng)的基礎(chǔ)構(gòu)成單元、單元之間的相互作用關(guān)系、在構(gòu)成系統(tǒng)時(shí)它們的合成方法以及對(duì)合成約束的描述。具體來(lái)說(shuō),部件包括客戶端、服務(wù)器、數(shù)據(jù)庫(kù)、程序包、過(guò)程、子程序等一切軟件的組成部分。相互作用的關(guān)系可以是過(guò)程調(diào)用、消息傳遞、共享內(nèi)存變量、客戶端/服務(wù)器的訪問(wèn)協(xié)議、數(shù)據(jù)庫(kù)的訪問(wèn)協(xié)議等。8.1軟件體系結(jié)構(gòu)的概念

8.1.2軟件體系結(jié)構(gòu)建模根據(jù)建模的側(cè)重點(diǎn)的不同,可以將軟件體系結(jié)構(gòu)的模型分為結(jié)構(gòu)模型、框架模型、動(dòng)態(tài)模型、過(guò)程模型和功能模型5種。1)結(jié)構(gòu)模型這是一個(gè)最直觀、最普遍的建模方法。這種方法以體系結(jié)構(gòu)的構(gòu)件、連接件和其他概念來(lái)刻畫(huà)結(jié)構(gòu),并力圖通過(guò)結(jié)構(gòu)來(lái)反映系統(tǒng)的重要語(yǔ)義內(nèi)容,包括系統(tǒng)的配置、約束、隱含的假設(shè)條件、風(fēng)格、性質(zhì)。研究結(jié)構(gòu)模型的核心是體系結(jié)構(gòu)描述語(yǔ)言。2)框架模型框架模型與結(jié)構(gòu)模型類似,但它不太側(cè)重描述結(jié)構(gòu)的細(xì)節(jié)而更側(cè)重于整體的結(jié)構(gòu)。框架模型主要以一些特殊的問(wèn)題為目標(biāo)建立只針對(duì)和適應(yīng)該問(wèn)題的結(jié)構(gòu)。8.1軟件體系結(jié)構(gòu)的概念

3)動(dòng)態(tài)模型動(dòng)態(tài)模型是對(duì)結(jié)構(gòu)模型或框架模型的補(bǔ)充,研究系統(tǒng)的"大顆粒"的行為性質(zhì)。例如,描述系統(tǒng)的重新配置或演化。動(dòng)態(tài)可能指系統(tǒng)總體結(jié)構(gòu)的配置、建立或拆除通信通道或計(jì)算的過(guò)程。這類系統(tǒng)常是激勵(lì)型的。4)過(guò)程模型過(guò)程模型研究構(gòu)造系統(tǒng)的步驟和過(guò)程,因此結(jié)構(gòu)是遵循某些過(guò)程腳本的結(jié)果。5)功能模型該模型認(rèn)為體系結(jié)構(gòu)是由一組功能構(gòu)件按層次組成,下層向上層提供服務(wù)。它可以看作是一種特殊的框架模型。8.1軟件體系結(jié)構(gòu)的概念

軟件體系結(jié)構(gòu)建??煞譃?個(gè)層次。1)軟件體系結(jié)構(gòu)核心元模型:軟件體系結(jié)構(gòu)模型由哪些元素組成,這些組成元素之間按照何種原則組織;2)軟件體系結(jié)構(gòu)模型的多視圖表示:從不同的視角描述特定系統(tǒng)的體系結(jié)構(gòu),從而得到多個(gè)視圖,并將這些視圖組織起來(lái)以描述整體的軟件體系結(jié)構(gòu)模型;3)軟件體系結(jié)構(gòu)描述語(yǔ)言:在軟件體系結(jié)構(gòu)基本概念的基礎(chǔ)上,選取適當(dāng)?shù)男问交虬胄问交姆椒▉?lái)描述一個(gè)特定的體系結(jié)構(gòu);4)軟件體系結(jié)構(gòu)文檔化:記錄和整理上述3個(gè)層次的描述內(nèi)容。8.1軟件體系結(jié)構(gòu)的概念

8.1.3軟件體系結(jié)構(gòu)的分層模型計(jì)算機(jī)硬件層是軟件實(shí)現(xiàn)的物質(zhì)基礎(chǔ),比如存儲(chǔ)器、時(shí)鐘、高速緩存等。軟件硬件層實(shí)現(xiàn)了軟件與硬件的分離,既是對(duì)軟件實(shí)現(xiàn)的最底層的描述,也是對(duì)硬件實(shí)現(xiàn)的操作和控制的描述?;A(chǔ)控制描述層、資源和管理調(diào)度層是體系結(jié)構(gòu)構(gòu)件和連接的內(nèi)在構(gòu)成模型。系統(tǒng)結(jié)構(gòu)模式層是軟件的上層體系結(jié)構(gòu),它是最高層次的軟件結(jié)構(gòu)概念,其涉及的概念通常有客戶端/服務(wù)器、解釋器、編譯器、框架等。應(yīng)用層是建立在軟件概念之上的領(lǐng)域問(wèn)題描述,它是基于純粹的應(yīng)用領(lǐng)域的。8.1軟件體系結(jié)構(gòu)的概念

8.1.4軟件體系結(jié)構(gòu)的作用設(shè)計(jì)軟件的體系結(jié)構(gòu)在設(shè)計(jì)階段非常重要。軟件體系結(jié)構(gòu)就好比軟件系統(tǒng)的骨骼,如果骨骼確定了,那么軟件系統(tǒng)的框架就確定了。軟件體系結(jié)構(gòu)在軟件開(kāi)發(fā)過(guò)程中的作用如下。1)規(guī)范軟件開(kāi)發(fā)的基本架構(gòu)2)便于開(kāi)發(fā)人員與用戶的溝通3)模塊化、層次化設(shè)計(jì),有利于減少返工,提高效率4)便于系統(tǒng)開(kāi)發(fā)前、后期的籌備與服務(wù)8.1軟件體系結(jié)構(gòu)的概念

兩種常用的軟件體系結(jié)構(gòu)如圖所示。樹(shù)形結(jié)構(gòu)網(wǎng)狀結(jié)構(gòu)8.2典型的軟件體系結(jié)構(gòu)風(fēng)格

所謂軟件體系結(jié)構(gòu)風(fēng)格,是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式。軟件體系結(jié)構(gòu)風(fēng)格包含4個(gè)關(guān)鍵要素:1)提供一個(gè)詞匯表;2)定義一套配置規(guī)則;3)定義一套語(yǔ)義解釋規(guī)則;4)定義對(duì)基于這種風(fēng)格的系統(tǒng)進(jìn)行的分析。

根據(jù)以上4要素框架,Garlan和Shaw對(duì)通用軟件體系結(jié)構(gòu)風(fēng)格的進(jìn)行分類,每種體系結(jié)構(gòu)風(fēng)格有各自的應(yīng)用領(lǐng)域和優(yōu)缺點(diǎn)。8.2典型的軟件體系結(jié)構(gòu)風(fēng)格

8.2.1數(shù)據(jù)流風(fēng)格數(shù)據(jù)到達(dá)即被激活處理工作,無(wú)數(shù)據(jù)時(shí)不工作。一般來(lái)說(shuō),數(shù)據(jù)的流向是有序的。在純數(shù)據(jù)流系統(tǒng)中,處理之間除了數(shù)據(jù)交換,沒(méi)有任何其他的交互。主要研究近似線性的數(shù)據(jù)流,或在限度內(nèi)的循環(huán)數(shù)據(jù)流。其中包括批處理序列、管道/過(guò)濾器。8.2典型的軟件體系結(jié)構(gòu)風(fēng)格

8.2.2調(diào)用∕返回風(fēng)格

各個(gè)構(gòu)件通過(guò)調(diào)用其他構(gòu)件和獲得返回參數(shù)來(lái)進(jìn)行交互,配合完成功能。包括主程序/子程序、面向?qū)ο箫L(fēng)格、層次結(jié)構(gòu)。8.2典型的軟件體系結(jié)構(gòu)風(fēng)格

8.2.3獨(dú)立構(gòu)件風(fēng)格這種風(fēng)格的主要特點(diǎn)是:事件的觸發(fā)者并不知道哪些構(gòu)件會(huì)被這些事件影響,相互保持獨(dú)立,這樣不能假定構(gòu)件的處理順序,甚至不知道哪些過(guò)程會(huì)被調(diào)用;各個(gè)構(gòu)件之間彼此無(wú)連接關(guān)系,各自獨(dú)立存在,通過(guò)對(duì)事件的發(fā)布和注冊(cè)實(shí)現(xiàn)關(guān)聯(lián),其中包括進(jìn)程通訊、事件系統(tǒng)。8.2典型的軟件體系結(jié)構(gòu)風(fēng)格

8.2.4虛擬機(jī)風(fēng)格它創(chuàng)建了一種虛擬的環(huán)境,將用戶與底層平臺(tái)隔離開(kāi)來(lái),或者將高層抽象和底層實(shí)現(xiàn)隔離開(kāi)來(lái)。其中包括解釋器、基于規(guī)則的系統(tǒng)。8.2典型的軟件體系結(jié)構(gòu)風(fēng)格

8.2.5倉(cāng)庫(kù)風(fēng)格倉(cāng)庫(kù)是存儲(chǔ)和維護(hù)數(shù)據(jù)的中心場(chǎng)所。在倉(cāng)庫(kù)風(fēng)格中存在兩類構(gòu)件,表示當(dāng)前數(shù)據(jù)的狀態(tài)的中心數(shù)據(jù)結(jié)構(gòu)和一組對(duì)中心數(shù)據(jù)進(jìn)行操作的獨(dú)立構(gòu)件。其中包括數(shù)據(jù)庫(kù)系統(tǒng)、超文本系統(tǒng)、黑板系統(tǒng)。8.3軟件質(zhì)量屬性

軟件質(zhì)量屬性是指軟件系統(tǒng)在其生存周期過(guò)程中所表現(xiàn)出的各種特征。質(zhì)量屬性既和軟件體系結(jié)構(gòu)有關(guān),也和具體實(shí)現(xiàn)有關(guān)。但軟件設(shè)計(jì)是保證軟件質(zhì)量的重要階段,而軟件體系結(jié)構(gòu)是獲取許多質(zhì)量屬性的基礎(chǔ),因此在軟件體系結(jié)構(gòu)設(shè)計(jì)時(shí)就應(yīng)考慮到這些質(zhì)量屬性,并在軟件體系結(jié)構(gòu)層次上進(jìn)行評(píng)估。質(zhì)量屬性可以分為3類:系統(tǒng)屬性、商業(yè)屬性和構(gòu)架屬性。8.3軟件質(zhì)量屬性

系統(tǒng)屬性按運(yùn)行時(shí)是否可見(jiàn)又分為:運(yùn)行時(shí)可觀察到的:包括性能、安全性、可用性、易用性;運(yùn)行時(shí)不可觀察的:包括可修改性、可移植性、可測(cè)試性、可集成性、可重用性。

商業(yè)屬性包括投放市場(chǎng)時(shí)間、成本和預(yù)計(jì)的系統(tǒng)生命周期長(zhǎng)短。

構(gòu)架屬性包括軟件體系結(jié)構(gòu)本身的概念完整性、正確性和可構(gòu)建性。

我們?cè)谲浖w系結(jié)構(gòu)設(shè)計(jì)時(shí)除了考慮到系統(tǒng)要實(shí)現(xiàn)的功能外,還應(yīng)充分考慮到系統(tǒng)所要求的各類質(zhì)量屬性。8.4 分布式系統(tǒng)結(jié)構(gòu)

8.4.1多處理器體系結(jié)構(gòu)多處理器系統(tǒng)是分布式系統(tǒng)的最簡(jiǎn)單模型,系統(tǒng)同時(shí)運(yùn)行許多進(jìn)程,這些進(jìn)程分布在不同的處理器上,可以極大地提高系統(tǒng)的性能。由于大型實(shí)時(shí)系統(tǒng)對(duì)響應(yīng)時(shí)間要求很高,多采用這種模型。大型實(shí)時(shí)系統(tǒng)需要實(shí)時(shí)采集信息,并利用采集到的信息進(jìn)行決策,然后發(fā)送信號(hào)給執(zhí)行機(jī)構(gòu)。雖然,信息采集、決策和執(zhí)行可以在一個(gè)處理器上統(tǒng)一調(diào)度完成,但多處理器的并行計(jì)算比單處理器的分時(shí)片計(jì)算能夠極大地提高系統(tǒng)的性能,而且可靠度也相對(duì)較高。8.4 分布式系統(tǒng)結(jié)構(gòu)

8.4.2客戶機(jī)/服務(wù)器體系結(jié)構(gòu)客戶機(jī)/服務(wù)器(Client/Server,簡(jiǎn)稱C/S)體系結(jié)構(gòu)是為了共享不對(duì)等的資源而提出來(lái)的,是20世紀(jì)90年代成熟起來(lái)的技術(shù),C/S體系結(jié)構(gòu)定義了客戶機(jī)如何與服務(wù)器連接,以將數(shù)據(jù)和應(yīng)用系統(tǒng)分部到多個(gè)處理機(jī)上。C/S體系結(jié)構(gòu)有3個(gè)主要的組成部分。服務(wù)器。負(fù)責(zé)給其子系統(tǒng)提供服務(wù),如數(shù)據(jù)庫(kù)服務(wù)器提供數(shù)據(jù)存儲(chǔ)和管理服務(wù),文件服務(wù)器提供文件管理服務(wù),搜索服務(wù)器提供數(shù)據(jù)檢索等。客戶機(jī)。通常是獨(dú)立的子系統(tǒng),通過(guò)向服務(wù)器請(qǐng)求約定的資源獲取數(shù)據(jù)。一臺(tái)服務(wù)器可以同時(shí)為許多客戶機(jī)提供服務(wù)。網(wǎng)絡(luò)。連接服務(wù)器和客戶機(jī)。有時(shí)客戶機(jī)和服務(wù)器位于同一臺(tái)物理主機(jī)上,但多數(shù)情況下它們分布在不同主機(jī)上。網(wǎng)絡(luò)可以有各種形式,包括有線和無(wú)線等。8.4 分布式系統(tǒng)結(jié)構(gòu)

C/S系統(tǒng)的設(shè)計(jì)必須考慮應(yīng)用系統(tǒng)的邏輯結(jié)構(gòu)。在邏輯上,我們通常將應(yīng)用系統(tǒng)劃分為3層,即數(shù)據(jù)管理層、應(yīng)用邏輯層和表示層。數(shù)據(jù)管理層主要處理數(shù)據(jù)存儲(chǔ)和管理操作。應(yīng)用邏輯層處理與業(yè)務(wù)相關(guān)的邏輯。表示層處理用戶界面以及用戶的交互。在集中式系統(tǒng)中,不需要將這些清楚地分離,但在分布式系統(tǒng)中,不同層常常被部署在不同的主機(jī)上,因此必須嚴(yán)格地分離不同層。C/S體系結(jié)構(gòu)通常有兩層或三層,也可根據(jù)需要?jiǎng)澐譃楦鄬?。兩層C/S結(jié)構(gòu)一般有兩種形態(tài)。瘦客戶機(jī)模型。在瘦客戶機(jī)模型中,數(shù)據(jù)管理和應(yīng)用邏輯都在服務(wù)器端執(zhí)行,客戶機(jī)只負(fù)責(zé)表示部分。胖客戶機(jī)模型。在這種模型中,服務(wù)器只負(fù)責(zé)對(duì)數(shù)據(jù)的管理??蛻魴C(jī)上的軟件實(shí)現(xiàn)應(yīng)用邏輯以及與系統(tǒng)的交互。8.4 分布式系統(tǒng)結(jié)構(gòu)

三層C/S結(jié)構(gòu)就避免了這個(gè)問(wèn)題,將數(shù)據(jù)管理層和應(yīng)用邏輯層分別放在兩個(gè)物理層或物理主機(jī)上,客戶端仍然保留在客戶機(jī)上。對(duì)于三層C/S結(jié)構(gòu),各層的功能或指責(zé)如下:表示層。表示層是應(yīng)用系統(tǒng)的用戶界面部分,擔(dān)負(fù)著用戶與應(yīng)用程序之間的對(duì)話功能。通常采用圖形界面的方式呈現(xiàn)。應(yīng)用邏輯層。應(yīng)用邏輯層為應(yīng)用系統(tǒng)的主體,包含全部的業(yè)務(wù)邏輯。比如數(shù)據(jù)處理,用戶管理,與其他系統(tǒng)交互,以及記錄系統(tǒng)日志等。通常是應(yīng)用服務(wù)器。數(shù)據(jù)層。數(shù)據(jù)層一般只負(fù)責(zé)數(shù)據(jù)的存取、管理和維護(hù)(如備份等),通常是關(guān)系型數(shù)據(jù)庫(kù)服務(wù)器。瀏覽器/服務(wù)器(Browser/Server,簡(jiǎn)稱B/S)結(jié)構(gòu)是三層應(yīng)用結(jié)構(gòu)的一種實(shí)現(xiàn),其具體結(jié)構(gòu)為瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器。8.4 分布式系統(tǒng)結(jié)構(gòu)

8.4.3分布式對(duì)象體系結(jié)構(gòu)分布式系統(tǒng)設(shè)計(jì)的更一般方法是去掉客戶機(jī)與服務(wù)器之間的差異,用分布式對(duì)象體系結(jié)構(gòu)來(lái)設(shè)計(jì)系統(tǒng)。分布式對(duì)象的實(shí)質(zhì)是在分布式異構(gòu)環(huán)境下建立應(yīng)用程序系統(tǒng)框架和對(duì)象構(gòu)件,將應(yīng)用服務(wù)分割成功能獨(dú)立的構(gòu)件,各個(gè)構(gòu)件可以放在同一臺(tái)或不同的多臺(tái)服務(wù)器上運(yùn)行。構(gòu)件之間的通信最通常的設(shè)計(jì)方法是通過(guò)一個(gè)中間件通信,類似計(jì)算機(jī)中主板上的數(shù)據(jù)總線。中間件一般稱為軟件總線或?qū)ο笳?qǐng)求代理,它的作用是在對(duì)象之間提供一個(gè)無(wú)縫接口。分布式對(duì)象技術(shù)的應(yīng)用目的主要是為了降低服務(wù)器負(fù)荷、共享網(wǎng)絡(luò)的資源、平衡分配計(jì)算任務(wù)到不同的主機(jī),提高系統(tǒng)的協(xié)同處理能力。8.4 分布式系統(tǒng)結(jié)構(gòu)

8.4.4對(duì)等端體系結(jié)構(gòu)對(duì)等端體系結(jié)構(gòu)可以視為客戶端/服務(wù)器體系結(jié)構(gòu)和分布式對(duì)象體系結(jié)構(gòu)的融合。它沒(méi)有嚴(yán)格的客戶機(jī)、服務(wù)器劃分,所有的分布的對(duì)等端根據(jù)需要既能充當(dāng)服務(wù)器,又能充當(dāng)客戶端。但有些情況下,對(duì)等端體系結(jié)構(gòu)仍然需要設(shè)計(jì)一個(gè)端節(jié)點(diǎn)服務(wù)器,用于存儲(chǔ)端節(jié)點(diǎn)信息。在通信之時(shí),對(duì)等端首先連接到端節(jié)點(diǎn)服務(wù)器上,下載可用的對(duì)等端節(jié)點(diǎn)信息。之后的通信就是根據(jù)這些端節(jié)點(diǎn)信息連接到其他對(duì)等端請(qǐng)求信息,這時(shí),該節(jié)點(diǎn)常常充當(dāng)客戶端,其它被請(qǐng)求的端充當(dāng)服務(wù)器。對(duì)等端體系結(jié)構(gòu)常常用于數(shù)據(jù)共享類系統(tǒng)的設(shè)計(jì)。8.4 分布式系統(tǒng)結(jié)構(gòu)

8.4.5代理代理可以用于構(gòu)件包含隔離組件的軟件系統(tǒng),軟件通過(guò)遠(yuǎn)程服務(wù)調(diào)用進(jìn)行交互。代理者負(fù)責(zé)協(xié)調(diào)通信,諸如轉(zhuǎn)發(fā)請(qǐng)求和傳遞結(jié)果、異常等。在ORB上有4個(gè)對(duì)象接口。對(duì)象服務(wù)。定義加入ORB的系統(tǒng)級(jí)服務(wù),如安全性、命名、事務(wù)處理,這類與應(yīng)用領(lǐng)域無(wú)關(guān)。公共設(shè)施。定義應(yīng)用程序級(jí)服務(wù)。領(lǐng)域接口。面向特定領(lǐng)域接口。應(yīng)用接口。面向指定的外界應(yīng)用,一般是供應(yīng)商或用戶借助ORB、公共對(duì)象服務(wù)以及公共設(shè)施而開(kāi)發(fā)的特定產(chǎn)品。8.5 體系結(jié)構(gòu)框架

8.5.1模型-視圖-控制器MVC(Model-View-Controller)模型由TrygveReenskaug博士在20世紀(jì)70年代提出,并最早在面向?qū)ο缶幊陶Z(yǔ)言Smalltalk-80中實(shí)現(xiàn)。MVC強(qiáng)調(diào)將用戶的輸入、數(shù)據(jù)模型和數(shù)據(jù)表示方式分開(kāi)設(shè)計(jì),一個(gè)交互式應(yīng)用系統(tǒng)由模型、視圖、控制器3部分組成,分別對(duì)應(yīng)內(nèi)部數(shù)據(jù)、數(shù)據(jù)表示和輸入/輸出控制部分。8.5 體系結(jié)構(gòu)框架

模型。模型對(duì)象代表應(yīng)用領(lǐng)域中的業(yè)務(wù)實(shí)體和業(yè)務(wù)邏輯規(guī)則,是整個(gè)模型的核心,獨(dú)立于外在的顯示內(nèi)容和顯示形式。模型對(duì)象的變化通過(guò)事件通知視圖和控制器對(duì)象。采用了發(fā)布者/訂閱者方式,模型是發(fā)布者,視圖和控制器是訂閱者。對(duì)于模型來(lái)說(shuō),并不知道自己對(duì)應(yīng)的視圖控制器;但控制器可以通過(guò)模型提供的接口改變模型對(duì)象,接口內(nèi)封裝了業(yè)務(wù)數(shù)據(jù)和行為。視圖。視圖對(duì)象代表GUI對(duì)象,以用戶熟悉和需要的格式表現(xiàn)模型信息,是系統(tǒng)與外界的交互接口。視圖訂閱模型可以感知模型的數(shù)據(jù)變化,并更新自己的顯示。視圖對(duì)象也可以包含子視圖,用于顯示模型的不同部分。在多數(shù)的MVC實(shí)現(xiàn)技術(shù)中,視圖和控制器常常是一一對(duì)應(yīng)的??刂破鳌?刂破鲗?duì)象處理用戶的輸入,并給模型發(fā)送業(yè)務(wù)事件,再將業(yè)務(wù)事件解析為模型應(yīng)執(zhí)行的動(dòng)作;同時(shí),模型的更新與修改也將通過(guò)控制器來(lái)通知視圖,保持視圖與模型的一致。8.5 體系結(jié)構(gòu)框架

MVC的整個(gè)處理流程為:系統(tǒng)攔截到用戶請(qǐng)求,根據(jù)相應(yīng)規(guī)則(多數(shù)采用路由技術(shù)),將用戶請(qǐng)求交給控制器,控制器決定哪個(gè)模型來(lái)處理用戶的請(qǐng)求;模型根據(jù)業(yè)務(wù)邏輯處理完畢后將結(jié)果返回給控制器;然后控制器將數(shù)據(jù)提交給視圖;視圖把數(shù)據(jù)組裝之后,呈現(xiàn)給用戶。其中,模型處理所有的業(yè)務(wù)邏輯和規(guī)則,視圖只負(fù)責(zé)顯示數(shù)據(jù),控制器負(fù)責(zé)用戶的請(qǐng)求,這樣將業(yè)務(wù)和表現(xiàn)層分離,以便業(yè)務(wù)代碼可以被用于任何相似的業(yè)務(wù)中,視圖代碼也可以根據(jù)需要隨意替換。8.5 體系結(jié)構(gòu)框架

8.5.2模型-視圖-表示器模型-視圖-表示器(Model-View-Presenter,簡(jiǎn)稱MVP)是近年來(lái)流行起來(lái)的一種體系結(jié)構(gòu)。從名字上就可以看出,MVP與MVC十分類似,事實(shí)也確實(shí)如此。甚至有程序員開(kāi)玩笑說(shuō)MVP不過(guò)是將MVC中的C換成了字母P,這種說(shuō)法一定程度上確實(shí)有其道理。MVP與MVC的的主要差異體現(xiàn)在“請(qǐng)求在何處訪問(wèn)系統(tǒng)”以及“各部分如何聯(lián)系在一起”。MVP中的視圖比MVC中的視圖更加“被動(dòng)”,視圖引發(fā)事件,但是由表示器讀取并設(shè)置UI的值。事實(shí)上,MVP模式設(shè)計(jì)的目的就是為了增強(qiáng)MVC模式,以嘗試使視圖更加被動(dòng),以便更換視圖更加容易。8.5 體系結(jié)構(gòu)框架

MVP的處理流程如圖所示。

用戶直接與視圖進(jìn)行交互(圖中步驟1)。視圖通過(guò)引發(fā)一個(gè)事件,通知表示器有事件發(fā)生(步驟2),然后表示器訪問(wèn)視圖通過(guò)其IView接口公開(kāi)的屬性(步驟3)。這些屬性是視圖實(shí)際UI元素的包裝器。此后表示器調(diào)用模型(步驟4),再返回結(jié)果(步驟5)。表示器轉(zhuǎn)換數(shù)據(jù),然后設(shè)置UI的值,該操作通過(guò)IView接口完成(步驟6)。視圖將最終頁(yè)面顯示給用戶。8.5 體系結(jié)構(gòu)框架

8.5.3J2EE體系結(jié)構(gòu)框架MVC是很多現(xiàn)代體系結(jié)構(gòu)框架的基礎(chǔ),主要應(yīng)用于企業(yè)和電子商務(wù)系統(tǒng)中。J2EE的核心體系結(jié)構(gòu)就是在MVC框架的基礎(chǔ)上進(jìn)行擴(kuò)展得到的,如圖所示。J2EE模型是分層結(jié)構(gòu),中間是3層(表示層、業(yè)務(wù)層和集成層)包含應(yīng)用構(gòu)件,客戶層和資源層處于應(yīng)用的外圍。8.5 體系結(jié)構(gòu)框架

8.5.4

PCMEF框架表示-控制-中介-實(shí)體-基礎(chǔ)(Presentation-Control-Mediator-Entity-Foundation,簡(jiǎn)稱PCMEF)是一個(gè)垂直層次的分層體系結(jié)構(gòu)框架。每一層是可以包含子包的包。PCMEF框架包含4層:表示層、控制層、領(lǐng)域?qū)雍突A(chǔ)層。領(lǐng)域?qū)影瑑蓚€(gè)預(yù)定義的包:實(shí)體(Entity)和中介(Mediator)。參考MVC框架,表示層對(duì)應(yīng)MVC中的視圖,控制層對(duì)應(yīng)MVC中的控制器,領(lǐng)域?qū)拥膶?shí)體對(duì)應(yīng)MVC中的模型。MVC中沒(méi)有與中介和基礎(chǔ)層對(duì)應(yīng)的部分,因?yàn)镸VC本身只是上層框架,中介和基礎(chǔ)層多使用底層框架實(shí)現(xiàn)。PCMEF框架中包的依賴性主要是向下依賴。表示層依賴于控制層,控制層依賴于領(lǐng)域?qū)樱薪閷右蕾囉趯?shí)體和基礎(chǔ)層。8.5 體系結(jié)構(gòu)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論