熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

淺談ASP.NET開發下的MVC設計模式的實現

2013-11-13 10:26:47  來源: .NET編程 
     ASPNET是微軟最新推出的新型體系結構NET框架的一部分它為構造新一代動態網站和基於網絡的分布式應用提供了強有力的支持與以前的 Web 開發模型相比ASPNET 提供了許多重要的優點例如: 簡易性安全性可管理性等而且與基於過程的ASP頁面技術相比面向對象技術在ASPNET中得到了完全實現用傳統ASP技術建立的Web應用實例中在頁面中同時實現顯示業務邏輯和流程控制這從工程化的角度考慮它有許多不足之處用戶界面承擔著向用戶顯示問題模型和與用戶進行操作和I/O交互的作用用戶希望保持交互操作界面的相對穩定但更希望根據需要改變和調整顯示的內容和形式NET框架下ASPNET技術結合MVC設計模式很好地解決了上述問題

   MVC設計模式簡介

  MVC由Trygve Reenskaug提出首先被應用在SmallTalk環境中是許多交互和界面系統的構成基礎MVC結構是為那些需要為同樣的數據提供多個視圖的應用程序而設計的它很好的實現了數據層與表示層的分離MVC作為一種開發模型通常用於分布式應用系統的設計和分析中以及用於確定系統各部分間的組織關系對於界面設計可變性的需求MVC(ModelViewController)把交互系統的組成分解成模型視圖控制器三種部件

  視圖部件把表示模型數據及邏輯關系和狀態的信息以特定形式展示給用戶它從模型獲得顯示信息對於相同的信息可以有多個不同的顯示形式或視圖

  控制器部件是處理用戶與軟件的交互操作的其職責是控制提供模型中任何變化的傳播確保用戶界面於模型間的對應聯系它接受用戶的輸入將輸入反饋給模型進而實現對模型的計算控制是使模型和視圖協調工作的部件

  模型部件保存由視圖顯示由控制器控制的數據它封裝了問題的核心數據邏輯和功能的計算關系它獨立於具體的界面表達和I/O操作

  模型視圖與控制器的分離使得一個模型可以具有多個顯示視圖如果用戶通過某個視圖的控制器改變了模型的數據所有其它依賴於這些數據的視圖都應反映到這些變化因此無論何時發生了何種數據變化控制器都會將變化通知所有的視圖導致顯示的更新這實際上是一種模型的變化傳播機制模型視圖控制器三者之間的關系和各自的主要功能如圖所示

  

   MVC設計模式的實現

  ASPNET提供了一個很好的實現這種經典設計模式的類似環境開發者通過在ASPX頁面中開發用戶接口來實現視圖控制器的功能在邏輯功能代碼(cs)中實現模型通常對應應用系統的業務部分在ASPNET中實現這種設計而提供的一個多層系統較經典的ASP結構實現的系統來說有明顯的優點將用戶顯示(視圖)從動作(控制器)中分離出來提高了代碼的重用性將數據(模型)從對其操作的動作(控制器)分離出來可以讓你設計一個與後台存儲數據無關的系統就MVC結構的本質而言它是一種解決耦合系統問題的方法

   視圖

  視圖是模型的表示它提供用戶交互界面使用多個包含單顯示頁面的用戶部件復雜的Web頁面可以展示來自多個數據源的內容並且網頁人員美工能獨自參與這些Web頁面的開發和維護

  在ASPNET下視圖的實現很簡單可以像開發WINDOWS界面一樣直接在集成開發環境下通過拖動控件來完成頁面開發本本文中介紹每一個頁面都采用復合視圖的形式即一個頁面由多個子視圖(用戶部件)組成子視圖可以是最簡單HTML 控件服務器控件或多個控件嵌套構而成的Web自定義控件頁面都由模板定義模板定義了頁面的布局用戶部件的標簽和數目用戶指定一個模板平台根據這些信息自動創建頁面針對靜態的模板內容如頁面上的站點導航菜單友好鏈接這些使用缺省的模板內容配置針對動態的模板內容(主要是業務內容)由於用戶的請求不同只能使用後期綁定並且針對用戶的不同用戶部件的顯示內容進行過濾使用由用戶部件根據模板配置組成的組合頁面它增強了可重用性並原型化了站點的布局

  視圖部分大致處理流程如下首先頁面模板定義了頁面的布局頁面配置文件定義視圖標簽的具體內容(用戶部件)然後由頁面布局策略類初始化並加載頁面每個用戶部件根據它自己的配置進行初始化加載校驗器並設置參數以及事件的委托等用戶提交後通過了表示層的校驗用戶部件把數據自動提交給業務實體即模型

  這一部分主要定義了WEB頁面基類PageBase頁面布局策略類PageLayout完成頁面布局用於加載用戶部件到頁面用戶部件基類UserControlBase即用戶部件框架用於動態加載檢驗部件以及實現用戶部件的個性化為了實現WEB應用的靈活性視圖部分也用到了許多配置文件例如置文件有模板配置頁面配置路徑配置驗證配置等

   控制器

  為了能夠控制和協調每個用戶跨越多個請求的處理控制機制應該以集中的方式進行管理因此為了達到集中管理的目的引入了控制器應用程序的控制器集中從客戶端接收請求(典型情況下是一個運行浏覽器的用戶)決定執行什麼商業邏輯功能然後將產生下一步用戶界面的責任委派給一個適當的視圖組件

  用控制器提供一個控制和處理請求的集中入口點它負責接收截取並處理用戶請求並將請求委托給分發者類根據當前狀態和業務操作的結果決定向客戶呈現的視圖在這一部分主要定義了HttpReqDispatcher(分發者類)HttpCapture(請求捕獲者類)Controller(控制器類)等它們相互配合來完成控制器的功能請求捕獲者類捕獲HTTP請求並轉發給控制器類控制器類是系統中處理所有請求的最初入口點控制器完成一些必要的處理後把請求委托給分發者類分發者類分發者負責視圖的管理和導航它管理將選擇哪個視圖提供給用戶並提供給分發資源控制在這一部分分別采用了分發者策略工廠方法適配器等設計模式

  為了使請求捕獲者類自動捕獲用戶請求並進行處理ASPNET 提供低級別的請求/響應 API使開發人員能夠使用 NET 框架類為傳入的 HTTP 請求提供服務為此必須創作支持 SystemWebIHTTPHandler 接口和實現 ProcessRequest() 方法的類即請求捕獲者類並在nfig 的 <httphandlers> 節中添加類
From:http://tw.wingwit.com/Article/program/net/201311/13649.html

    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.