兩種典型的mvc模式的對比分析_第1頁
兩種典型的mvc模式的對比分析_第2頁
兩種典型的mvc模式的對比分析_第3頁
兩種典型的mvc模式的對比分析_第4頁
全文預覽已結(jié)束

下載本文檔

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

文檔簡介

兩種典型的mvc模式的對比分析

在應用開發(fā)人員的過程中,每個問題都需要根據(jù)實際應用找到解決方案。為了提高開發(fā)效率,并增加應用系統(tǒng)的靈活性、安全性、實用性等,采用好的設計模式變得相當重要。隨著Internet的迅速發(fā)展,Web應用程序開發(fā)技術(shù)已經(jīng)發(fā)展到基于J2EE、CORBA、.NET等分布式應用技術(shù)方面。面對新的更復雜的應用,迫切需要更好的設計模式指導Web應用程序開發(fā)過程。Model-View-Controller(MVC)設計模式被證明是有效的開發(fā)模式之一,它將訪問和數(shù)據(jù)的表現(xiàn)進行了分離。通過MVC模式,可以開發(fā)具有伸縮性、便于擴展、便于整個流程維護的應用軟件。但由于MVC在不同的程序邏輯之間要保持清晰的界限,因此,在不同層次之間的通信會有性能上的損失,交換客戶與服務器之間的回路信息會消耗大量的系統(tǒng)資源。且每個控制器直接與業(yè)務邏輯相關(guān),當業(yè)務邏輯改變時,所有與此邏輯相關(guān)的控制器都要改變。為克服MVC模式的以上缺點,本文提出對MVC模式進行改進。其核心思想是,MVC模式里加入Facade模式成為MVCF模式,并進一步加入Delegate模式成為MVCDF模式,從而減少通信信息量,并增加應用程序開發(fā)的靈活性。本文把MVCDF模式應用于基于J2EE架構(gòu)的供應鏈管理系統(tǒng)(SCM),表明這種設計模式的改進是行之有效的。1ccf模式1的改進之一1.1基于專網(wǎng)的會話ejb為了減少客戶端與服務器之間通信的頻繁度,我們將MVC模式和Facade模式相結(jié)合成為MVCF模式。Facade模式的特點是:為子系統(tǒng)中的若干接口提供了一個統(tǒng)一的接口,它定義了一個更高層次的接口,使子系統(tǒng)更容易使用。SessionFacade采取的是會話EJB的形式,通過SessionBean可以把構(gòu)成子系統(tǒng)的一套業(yè)務對象“包裝”在SessionBean中。這樣,SessionFacade作為客戶端訪問業(yè)務對象的攔截器,屏蔽了業(yè)務對象。控制器通過訪問SessionBean來訪問業(yè)務對象。當控制器需要調(diào)用多個業(yè)務對象的方法時,它只需要進行一次粗粒度的遠程方法調(diào)用,將請求送給SessionFacade,再由SessionFacade通過本地方法調(diào)用,調(diào)用相應的業(yè)務對象,執(zhí)行其方法。這樣減少了客戶端和業(yè)務對象之間的耦合度,同時客戶端也不必管理事務的細節(jié),減輕了網(wǎng)絡負載,提高了系統(tǒng)性能。并且當業(yè)務對象的方法改動時,只需要修改SessionBean,而客戶端可以保持不變,從而使應用系統(tǒng)更容易維護、升級。1.2facade模式在MVC的Web應用模型基礎上,在業(yè)務層和業(yè)務實現(xiàn)層(EJB)之間加入Facade層,此時Web應用程序模型如圖1所示。SessionFa?ade起到屏蔽了業(yè)務對象的作用??蛻舳送ㄟ^訪問Facade來訪問業(yè)務對象。當EJB客戶端調(diào)用多個業(yè)務對象方法時,它只需要進行一次粗粒度的遠程方法調(diào)用,將請求送給Facade,再由Fa?ade用本地方法調(diào)用相應的業(yè)務對象,執(zhí)行其方法。顯然當業(yè)務對象的方法改動時,只需要修改SessionBean,而客戶端可以保持不變。Facade是一個會話Bean。編寫Fa?ade會話Bean代碼時不需要實現(xiàn)業(yè)務邏輯,只提供接口供客戶端調(diào)用。MVC模式中引入Facade模式具有如下優(yōu)點:(1)嚴格分離了業(yè)務邏輯和表示層,降低系統(tǒng)的耦合度,提高可管理性。(2)提供了粗粒度的訪問,在分布式環(huán)境下,可降低網(wǎng)絡開銷,提高系統(tǒng)性能。2mvdf模式改進2.1基于web-w最終的應用程序?qū)崿F(xiàn)MVCDF模式即在MVCF模式的基礎上加上BusinessDelegate業(yè)務委派模式。一個業(yè)務委派是一個完全的Java類,它起到客戶層和服務層的媒介的作用??蛻魧泳植康卣{(diào)用業(yè)務委派的方法。創(chuàng)建一個業(yè)務委派層就能實現(xiàn)用Java類隱藏EJBAPI的復雜性,通過概括代碼請求來顯露、委派和恢復來自會話和消息FacadeEJB層的訪問。應用程序規(guī)劃中復雜的問題之一是業(yè)務層和實現(xiàn)層之間的必要分隔。人們一直關(guān)心將應用和表示邏輯與業(yè)務邏輯分隔開。BusinessDelegate可以作為一個業(yè)務服務的客戶方抽象使用。它可以潛在地直接與各業(yè)務組件協(xié)同工作,或者可以作為一個SessionFacade的網(wǎng)關(guān)供客戶方使用。業(yè)務委派可以負責所有的專門EJB交互,為客戶提供一個本地接口。并可以把遠程異常映射到有意義的應用程序異常。BusinessDelegate是執(zhí)行客戶方業(yè)務信息緩沖存儲的邏輯位置,可以處理值對象或者重試失敗的調(diào)用以及對不同服務器的故障恢復。2.2基于業(yè)務先進的管理技術(shù)在上面的MVCF的Web應用模型基礎上,在業(yè)務層和Facade層之間加入一個Delegate層,就得到MVCDF模式的Web應用模型(如圖2所示)。這樣,可以除去應用程序Web層上的所有技術(shù)相關(guān)性,便于形成更清晰的應用程序代碼,而且還對應用程序進行了屏蔽,使得更簡便地實現(xiàn)系統(tǒng)的更改。例如,如果需要從使用EJB技術(shù)移植到使用純JDBC類,那么可以簡單地用新的JDBC類來重寫業(yè)務委派,此時Web層并不知道發(fā)生了變化,也不需要重新編譯。業(yè)務委派是一個輔助類,它處理連接到EJB容器,獲取所需資源及按需釋放某些資源的細節(jié)。業(yè)務委派類有如下的特點:(1)其構(gòu)造方法實現(xiàn)對EJB的查找和實例化。(2)類中每個方法都對應著EJB對象的一個方法。下面給出Delegate類的例子代碼:在MVCF模式的基礎上引入Delegate模式有以下好處:(1)嚴格分離了業(yè)務邏輯和表示層,降低系統(tǒng)的耦合度,提高可管理性。(2)提供了粗粒度的訪問;在分布式環(huán)境下降低網(wǎng)絡開銷,提高系統(tǒng)性能。(3)使客戶端代碼變得簡單,減少客戶端和服務器之間的依賴,從而能縮短開發(fā)周期。(4)允許客戶層開發(fā)者和EJB小組相對獨立地編寫、編譯和測試各自的代碼。2.3次訂單申請下面介紹如何運用MVCDF模式開發(fā)SCM系統(tǒng)訂單管理子系統(tǒng)的訂單申請模塊。本系統(tǒng)中視圖由JSP來實現(xiàn),負責與用戶交互。訂單申請模塊中所有的View共用一個Controller??刂破饔蒘ervlet來實現(xiàn)??刂破鹘邮芨鞣N業(yè)務請求,調(diào)用Delegate類進行各種請求的處理。Delegate類調(diào)用Facade會話Bean處理請求。Facade會話Bean根據(jù)請求的內(nèi)容調(diào)用相應的EJB完成各種業(yè)務處理。訂單申請流程描述如下:業(yè)務委派對象調(diào)用OrderFacadeBean對象的FindMaterial方法查找物資,返回物資的詳細信息。用戶選擇一種物資同時填寫采購信息。業(yè)務委派對象調(diào)用OrderFacadeBean對象的CreateOrder方法完成訂單生成過程。OrderFacadeBean對象調(diào)用StockEntityBean對象的CheckStock方法查看庫存量:庫存足夠,OrderFacadeBean對象調(diào)用ClaimEntityBean對象的CreateClaim方法新增一條領(lǐng)用單;庫存不足,OrderFacadeBean對象調(diào)用OrderEntityBean對象的CreateOrder方法新增一條訂單。圖3的順序?qū)崿F(xiàn)了用戶訂單申請的過程。當使用傳統(tǒng)的MVC模式時,業(yè)務JavaBean必須直接與StockEntityBean、ClaimEntityBean和OrderEntityBean對象交互。當它們作為業(yè)務對象放在服務器環(huán)境時,每次客戶端的訪問都是遠程調(diào)用。而使用MVCDF模式后,除了業(yè)務JavaBean與OrderFacadeBean對象交互是遠程調(diào)用之外,EJB對象之間都是本地調(diào)用。這就極大地減少遠程調(diào)用,降低網(wǎng)絡開銷。本例中進行一次訂單申請,使用傳統(tǒng)的MVC模式開發(fā)進行一次訂單申請需要2次遠程調(diào)用,而使用MVCDF模式開發(fā)時則需要1次遠程調(diào)用。而使用業(yè)務委派對象進一步實現(xiàn)了業(yè)務層和業(yè)務實現(xiàn)層的隔離,使Web層與EnterpriseJavaBeans組件保持松散耦合;使程序開發(fā)適應性更強,并且提供更清晰的異常錯誤處理。3應用廣泛復雜應用系統(tǒng)將BusinessDelegate和SessionFacade模式加入傳統(tǒng)的MVC模式,使

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論