亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ASP.NET下MVC設計模式的實現

2019-11-18 19:43:08
字體:
來源:轉載
供稿:網友

  摘要:本文從視圖、控制器、模型三個方面簡要介紹了在asp.net環境下,經典MVC設計模式的實現,并討論了MVC設計模式的擴展,最后對MVC的優點及不足之處進行了分析。

  關鍵詞:設計模式、視圖、控制器、模型

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

  1 MVC設計模式簡介

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

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

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

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

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

  2 MVC設計模式的實現

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

  2.1 視圖

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

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

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

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

  2.2 控制器

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

  用控制器提供一個控制和處理請求的集中入口點,它負責接收、截取并處理用戶請求;并將請求委托給分發者類,根據當前狀態和業務操作的結果決定向客戶呈現的視圖。在這一部分主要定義了HttPReqDispatcher(分發者類)、HttpCapture(請求捕獲者類)、Controller(控制器類)等,它們相互配合來完成控制器的功能。請求捕獲者類捕獲HTTP請求并轉發給控制器類??刂破黝愂窍到y中處理所有請求的最初入口點??刂破魍瓿梢恍┍匾奶幚砗蟀颜埱笪薪o分發者類;分發者類分發者負責視圖的管理和導航,它管理將選擇哪個視圖提供給用戶,并提供給分發資源控制。在這一部分分別采用了分發者、策略、工廠方法、適配器等設計模式。

  為了使請求捕獲者類自動捕獲用戶請求并進行處理,ASP.NET 提供低級別的請求/響應 API,使開發人員能夠使用 .NET 框架類為傳入的 HTTP 請求提供服務。為此,必須創作支持 System.Web.IHTTPHandler 接口和實現 ProcessRequest() 方法的類即:請求捕獲者類,并在web.config 的 <httphandlers> 節中添加類。ASP.NET 收到的每個傳入 HTTP 請求最終由實現 IHTTPHandler 的類的特定實例來處理。IHttpHandlerFactory 提供了處理 IHttpHandler 實例 URL 請求的實際解析的結構。HTTP 處理程序和工廠在 ASP.NET 配置中聲明為 web.config 文件的一部分。ASP.NET 定義了一個 <httphandlers> 配置節,在其中可以添加和移除處理程序和工廠。子目錄繼承 HttpHandlerFactory 和 HttpHandler 的設置。 HTTP 處理程序和工廠是 ASP.NET 頁框架的主體。工廠將每個請求分配給一個處理程序,后者處理該請求。 例如,在全局 machine.config 文件中,ASP.NET 將所有對 ASPx 文件的請求映射到 HttpCapture類:

<httphandlers>
...
<add verb="*" path="*.ASPx" type="Sys.UI.HttpCapture, Sys.UI"/>
...
</httphandlers>

  2.3 模型

  MVC系統中的模型從概念上可以分為兩類――系統的內部狀態和改變系統狀態的動作。模型是你所有的商業邏輯代碼片段所在。本文為模型提供了業務實體對象和業務處理對象:所有的業務處理對象都是從ProcessBase類派生的子類。業務處理對象封裝了具體的處理邏輯,調用業務邏輯模型,并且把響應提交到合適的視圖組件以產生響應。業務實體對象可以通過定義屬性描述客戶端表單數據。所有業務實體對象都EntityBase派生子類對象,業務處理對象可以直接對它進行讀寫,而不再需要和request、response對象進行數據交互。通過業務實體對象實現了對視圖和模型之間交互的支持。實現時把"做什么"(業務處理)和"如何做"(業務實體)分離。這樣可以實現業務邏輯的重用。由于各個應用的具體業務是不同的,這里不再列舉其具體代碼實例。
  3 MVC設計模式的擴展

  通過在ASP.NET中的MVC模式編寫的,具有極其良好的可擴展性。它可以輕松實現以下功能:

 ?、賹崿F一個模型的多個視圖;

  ②采用多個控制器;

 ?、郛斈P透淖儠r,所有視圖將自動刷新;

 ?、芩械目刂破鲗⑾嗷オ毩⒐ぷ?。

  這就是MVC模式的好處,只需在以前的程序上稍作修改或增加新的類,即可輕松增加許多程序功能。以前開發的許多類可以重用,而程序結構根本不再需要改變,各類之間相互獨立,便于團體開發,提高開發效率。下面討論如何實現一個模型、兩個視圖和一個控制器的程序。其中模型類及視圖類根本不需要改變,與前面的完全一樣,這就是面向對象編程的好處。對于控制器中的類,只需要增加另一個視圖,并與模型發生關聯即可。該模式下視圖、控制器、模型三者之間的示意圖如圖2所示。

圖 2 視圖、控制器、模型三者之間關系的示意圖

  同樣也可以實現其它形式的MVC例如:一個模型、兩個視圖和兩個控制器。從上面可以看出,通過MVC模式實現的應用程序具有極其良好的可擴展性,是ASP.NET面向對象編程的未來方向。
  4 MVC設計模式的優點及不足之處

  4.1 MVC的優點

  MVC的優點體現在以下幾個方面:

 ?。?) 可以為一個模型在運行時同時建立和使用多個視圖。變化-傳播機制可以確保所有相關的視圖及時得到模型數據變化,從而使所有關聯的視圖和控制器做到行為同步。

 ?。?) 視圖與控制器的可接插性,允許更換視圖和控制器對象,而且可以根據需求動態的打開或關閉、甚至在運行期間進行對象替換。

 ?。?) 模型的可移植性。因為模型是獨立于視圖的,所以可以把一個模型獨立地移植到新的平臺工作。需要做的只是在新平臺上對視圖和控制器進行新的修改。

 ?。?) 潛在的框架結構??梢曰诖四P徒贸绦蚩蚣?,不僅僅是用在設計界面的設計中。

  4.2 MVC的不足之處

  MVC的不足體現在以下幾個方面:

 ?。?)增加了系統結構和實現的復雜性。對于簡單的界面,嚴格遵循MVC,使模型、視圖與控制器分離,會增加結構的復雜性,并可能產生過多的更新操作,降低運行效率。

 ?。?)視圖與控制器間的過于緊密的連接。視圖與控制器是相互分離,但確實聯系緊密的部件,視圖沒有控制器的存在,其應用是很有限的,反之亦然,這樣就妨礙了他們的獨立重用。

 ?。?)視圖對模型數據的低效率訪問。依據模型操作接口的不同,視圖可能需要多次調用才能獲得足夠的顯示數據。對未變化數據的不必要的頻繁訪問,也將損害操作性能。

 ?。?) 目前,一般高級的界面工具或構造器不支持MVC模式。改造這些工具以適應MVC需要和建立分離的部件的代價是很高的,從而造成使用MVC的困難。

  5 結束語

  與軟件所處理問題的內在模型相比較,用戶界面是需要經常發生變化的,采用MVC設計模式可以在滿足對界面要求的同時,使軟件的計算模型獨立于界面的構成。也可以基于此模型建立大型分布式應用程序框架。本文介紹了MVC設計模式的原理;MVC設計模式三個組成構件(模型部件、視圖部件和控制部件)以及在ASP.NET環境下實現基于MVC的應用需要完成的工作;MVC設計模式的擴展;最后對MVC的優點及不足之處進行了分析。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产在线拍偷自揄拍精品| 亚洲色图35p| 97在线视频免费| 日韩美女免费观看| 国产精品九九久久久久久久| 亚洲丝袜在线视频| 亚洲国产又黄又爽女人高潮的| 91av中文字幕| 国产精品久久99久久| 九九视频这里只有精品| 欧美精品精品精品精品免费| 亚洲理论电影网| 国产欧美亚洲精品| 美日韩精品免费观看视频| 欧美日韩在线视频一区二区| 久久精品国产一区| 91国自产精品中文字幕亚洲| 日韩久久精品成人| 日本高清视频一区| 精品成人69xx.xyz| 日韩免费在线观看视频| 777777777亚洲妇女| 日韩精品亚洲元码| 亚洲美女又黄又爽在线观看| 91视频九色网站| 欧美日韩精品中文字幕| 亚洲国产日韩欧美在线动漫| 亚洲国产精品免费| 国产主播在线一区| 亚洲性xxxx| 欧美成人亚洲成人日韩成人| 精品福利在线看| 91av在线网站| 欧美日韩精品在线| 国产精品视频永久免费播放| 欧美大荫蒂xxx| 一本久久综合亚洲鲁鲁| 国产综合久久久久| 亚洲欧洲自拍偷拍| 亚洲爱爱爱爱爱| 亚洲国产精品久久91精品| 国产成人精品免费视频| 久久久久国产精品免费| 一本色道久久88综合亚洲精品ⅰ| 国产精品久久一区| 亚洲第五色综合网| 国产精品免费福利| 欧美在线欧美在线| 91香蕉亚洲精品| 欧美在线一区二区三区四| 欧美成年人视频网站| 欧美成人精品三级在线观看| 亚洲精品www久久久| 5566成人精品视频免费| 这里只有精品视频在线| 国产精品自在线| 日韩**中文字幕毛片| 久热99视频在线观看| 最新国产成人av网站网址麻豆| 亚洲乱码av中文一区二区| 日韩电影免费观看在线| 92裸体在线视频网站| 精品福利在线观看| 91sao在线观看国产| 精品中文字幕视频| 亚洲欧美另类在线观看| 国产精品手机播放| 国产精品户外野外| 亚洲视频免费一区| 欧美性生活大片免费观看网址| 中文字幕日韩欧美| 欧美在线免费观看| 日本精品久久中文字幕佐佐木| 亚洲影院高清在线| 欧洲成人在线视频| 色综合久久88色综合天天看泰| 欧美精品久久久久久久免费观看| 视频直播国产精品| 久久精品99久久久久久久久| 久久夜精品香蕉| 亚洲精品99久久久久中文字幕| 久久精品国产欧美亚洲人人爽| 久久理论片午夜琪琪电影网| 55夜色66夜色国产精品视频| 国产99久久久欧美黑人| 欧美激情一级欧美精品| 国产999在线观看| 国产免费一区二区三区在线能观看| 亲子乱一区二区三区电影| 国内精品久久久久久久| 亚洲www永久成人夜色| 亚洲精品久久久久久久久久久| 久久伊人91精品综合网站| 亚洲第一网中文字幕| 国产激情久久久| 国产视频丨精品|在线观看| 久久久久国产精品www| 伊人久久久久久久久久久久久| 这里精品视频免费| 久久国产精品免费视频| 欧美日韩亚洲精品内裤| 欧美成人一区二区三区电影| 色777狠狠综合秋免鲁丝| 正在播放亚洲1区| 8090成年在线看片午夜| 国产在线视频91| 青青a在线精品免费观看| 丁香五六月婷婷久久激情| 午夜精品久久久久久99热软件| 国产九九精品视频| 国内精品久久久久伊人av| 精品久久久久久久久久ntr影视| 欧美在线视频网| 国模视频一区二区三区| 久久久精品久久| 日韩福利在线播放| 国产日韩中文字幕| 国产美女精品视频免费观看| 亚洲欧洲激情在线| 国产成人免费91av在线| 久久人人爽人人爽爽久久| 亚洲成人亚洲激情| 亚洲欧洲美洲在线综合| 欧美性猛交xxxx免费看| 伊人久久精品视频| 亚洲视频在线观看视频| 国产精品激情av电影在线观看| 日韩女优人人人人射在线视频| 久久精品这里热有精品| 亚洲最大成人网色| 亚洲男女性事视频| 亚洲伊人第一页| 日韩视频在线免费| 黑人巨大精品欧美一区二区免费| 中文字幕欧美日韩| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲人成网7777777国产| 在线中文字幕日韩| 欧美视频一二三| 在线播放国产一区二区三区| 欧洲精品久久久| 欧美在线视频在线播放完整版免费观看| 国产一区二区三区视频在线观看| 国外成人性视频| 国产精品国产三级国产专播精品人| 亚洲韩国青草视频| 日韩精品在线观看视频| 亚洲新声在线观看| 国产精品91一区| 日本欧美国产在线| 久久久精品久久久| 麻豆一区二区在线观看| 欧美精品久久久久久久久| 亚洲综合国产精品| 伊人久久久久久久久久久久久| 午夜精品一区二区三区在线视频| 日韩精品视频在线观看网址| 久久久久久久久久久人体| 国外成人在线播放| 欧美一级免费看| 国产精品日韩欧美综合| 国产精品视频区| 国产精品亚洲自拍| 97在线视频免费观看|