我的位置: 首頁(yè) > 學(xué)習(xí)專區(qū) > .NET技術(shù) > ASP.NET MVC

ASP.NET MVC

2013-05-17 10:02:51
來(lái)源:
[導(dǎo)讀] 模型-視圖-控制器 (MVC) 體系結(jié)構(gòu)模式將應(yīng)用程序分成三個(gè)主要組件:模型、視圖和控制器。 ASP NET MVC 框架提供用于創(chuàng)建 Web 應(yīng)用程

模型-視圖-控制器 (MVC) 體系結(jié)構(gòu)模式將應(yīng)用程序分成三個(gè)主要組件:模型、視圖和控制器。 ASP.NET MVC 框架提供用于創(chuàng)建 Web 應(yīng)用程序的 ASP.NET Web 窗體模式的替代模式。 ASP.NET MVC 框架是一個(gè)可測(cè)試性非常高的輕型演示框架,(與基于 Web 窗體的應(yīng)用程序一樣)它集成了現(xiàn)有的 ASP.NET 功能,如母版頁(yè)和基于成員資格的身份驗(yàn)證。 MVC 框架在 System.Web.Mvc 程序集中定義。

MVC 設(shè)計(jì)模式

MVC 是許多開(kāi)發(fā)人員熟悉的標(biāo)準(zhǔn)設(shè)計(jì)模式。 一些類型的 Web 應(yīng)用程序?qū)⒌靡嬗?MVC 框架。 一些類型將繼續(xù)使用基于 Web 窗體和回發(fā)的傳統(tǒng) ASP.NET 應(yīng)用程序模式。 其他類型的 Web 應(yīng)用程序?qū)⒔Y(jié)合這兩種方法;這兩種方法彼此互不包含。

MVC 框架包括以下組件:

模型。 模型對(duì)象是實(shí)現(xiàn)應(yīng)用程序數(shù)據(jù)域邏輯的應(yīng)用程序部件。 通常,模型對(duì)象會(huì)檢索模型狀態(tài)并將其存儲(chǔ)在數(shù)據(jù)庫(kù)中。 例如,Product 對(duì)象可能會(huì)從數(shù)據(jù)庫(kù)中檢索信息,操作該信息,然后將更新的信息寫(xiě)回到 SQL Server 數(shù)據(jù)庫(kù)內(nèi)的 Products 表中。

在小型應(yīng)用程序中,模型通常是概念上的分離,而不是實(shí)際分離。 例如,如果應(yīng)用程序僅讀取數(shù)據(jù)集并將其發(fā)送到視圖,則該應(yīng)用程序沒(méi)有物理模型層和關(guān)聯(lián)的類。 在這種情況下,數(shù)據(jù)集擔(dān)當(dāng)模型對(duì)象的作用。

視圖。 視圖是顯示應(yīng)用程序用戶界面 (UI) 的組件。 通常,此 UI 是用模型數(shù)據(jù)創(chuàng)建的。 Products 表的編輯視圖便是一個(gè)視圖示例,該視圖基于 Product 對(duì)象的當(dāng)前狀態(tài)顯示文本框、下拉列表和復(fù)選框。

控制器。 控制器是處理用戶交互、使用模型并最終選擇要呈現(xiàn)的視圖來(lái)顯示 UI 的組件。 在 MVC 應(yīng)用程序中,視圖僅顯示信息;控制器則用于處理和響應(yīng)用戶輸入和交互。 例如,控制器處理查詢字符串值,并將這些值傳遞給模型,而模型可能會(huì)使用這些值來(lái)查詢數(shù)據(jù)庫(kù)。

MVC 模式可以幫助您創(chuàng)建使應(yīng)用程序的不同方面(輸入邏輯、業(yè)務(wù)邏輯和 UI 邏輯)分離的應(yīng)用程序,同時(shí)可在這些元素之間提供松散耦合。 該模式指定每種邏輯在應(yīng)用程序中應(yīng)處的位置。 UI 邏輯位于視圖中。 輸入邏輯位于控制器中。 業(yè)務(wù)邏輯位于模型中。 在您生成應(yīng)用程序時(shí),通過(guò)使用這種分離方式,可以幫助您化繁為簡(jiǎn),因?yàn)樗梢允鼓鷤?cè)重于一次實(shí)現(xiàn)應(yīng)用程序的一個(gè)方面。 例如,您可以側(cè)重于獨(dú)立于業(yè)務(wù)邏輯的視圖。

MVC 應(yīng)用程序的這三個(gè)主要組件之間的松散耦合也可促進(jìn)并行開(kāi)發(fā)。 例如,一個(gè)開(kāi)發(fā)人員可以從事視圖方面的工作,第二個(gè)開(kāi)發(fā)人員可以從事控制器邏輯方面的工作,第三個(gè)開(kāi)發(fā)人員可以側(cè)重于模型中的業(yè)務(wù)邏輯。

對(duì)測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)的支持

使用 MVC 模式除了可以化繁為簡(jiǎn)外,還可以使應(yīng)用程序的測(cè)試工作比基于 Web 窗體的 ASP.NET Web 應(yīng)用程序的測(cè)試工作更加輕松。 例如,在基于 Web 窗體的 ASP.NET Web 應(yīng)用程序中,單一類既用于顯示輸出又用于響應(yīng)用戶輸入。 為基于 Web 窗體的 ASP.NET 應(yīng)用程序編寫(xiě)自動(dòng)化測(cè)試可能是一項(xiàng)復(fù)雜的工作,因?yàn)槿粢獪y(cè)試單個(gè)頁(yè)面,您必須實(shí)例化應(yīng)用程序中的頁(yè)類、其所有子控件以及其他相關(guān)類。 因?yàn)闉檫\(yùn)行頁(yè)面而實(shí)例化的類如此之多,所以可能難以編寫(xiě)專門側(cè)重于應(yīng)用程序單個(gè)部件的測(cè)試。 因此,與 MVC 應(yīng)用程序測(cè)試相比,基于 Web 窗體的 ASP.NET 應(yīng)用程序的測(cè)試更加難以實(shí)現(xiàn)。 而且,基于 Web 窗體的 ASP.NET 應(yīng)用程序的測(cè)試需要 Web 服務(wù)器。 MVC 框架可使組件分離并大量使用接口,這樣,便可以將單個(gè)組件與框架的其余部分分開(kāi)進(jìn)行測(cè)試。

何時(shí)創(chuàng)建 MVC 應(yīng)用程序

您必須仔細(xì)考慮是使用 ASP.NET MVC 框架還是使用 ASP.NET Web 窗體模型來(lái)實(shí)現(xiàn) Web 應(yīng)用程序。 MVC 框架未取代 Web 窗體模型;您可以對(duì) Web 應(yīng)用程序使用任一框架。 (如果您具有現(xiàn)有的基于 Web 窗體的應(yīng)用程序,則這些應(yīng)用程序?qū)⑼耆凑账鼈円回灥姆绞嚼^續(xù)工作。)

在決定對(duì)特定網(wǎng)站使用 MVC 框架或 Web 窗體模型之前,請(qǐng)權(quán)衡各種方法的優(yōu)點(diǎn)。

基于 MVC 的 Web 應(yīng)用程序的優(yōu)點(diǎn)

ASP.NET MVC 框架具有以下優(yōu)點(diǎn):

通過(guò)將應(yīng)用程序分為模型、視圖和控制器,化繁為簡(jiǎn)的工作更加輕松。

它不使用視圖狀態(tài)或基于服務(wù)器的窗體。 這使得 MVC 框架特別適合想要完全控制應(yīng)用程序行為的開(kāi)發(fā)人員。

它使用一種通過(guò)單一控制器處理 Web 應(yīng)用程序請(qǐng)求的前端控制器模式。 這使您可以設(shè)計(jì)一個(gè)支持豐富路由基礎(chǔ)結(jié)構(gòu)的應(yīng)用程序。它為測(cè)試驅(qū)動(dòng)的開(kāi)發(fā) (TDD) 提供了更好的支持。

它非常適合大型開(kāi)發(fā)人員團(tuán)隊(duì)支持的 Web 應(yīng)用程序,以及需要對(duì)應(yīng)用程序行為進(jìn)行極度控制的 Web 設(shè)計(jì)人員。

基于 Web 窗體的 Web 應(yīng)用程序的優(yōu)點(diǎn)

基于 Web 窗體的框架具有以下優(yōu)點(diǎn):

它支持通過(guò) HTTP 保留狀態(tài)的事件模型,這有益于開(kāi)發(fā)業(yè)務(wù)線 Web 應(yīng)用程序。 基于 Web 窗體的應(yīng)用程序提供了在數(shù)百個(gè)服務(wù)器控件中受支持的許多事件。

它使用頁(yè)面控制器模式向單個(gè)頁(yè)面添加功能。它針對(duì)基于服務(wù)器的窗體使用視圖狀態(tài),這使得管理狀態(tài)信息更加輕松。

它非常適合想要利用大量組件快速開(kāi)發(fā)應(yīng)用程序的 Web 開(kāi)發(fā)人員和設(shè)計(jì)人員的小型團(tuán)隊(duì)。

通常,對(duì)于應(yīng)用程序開(kāi)發(fā)而言,它比較簡(jiǎn)單,這是因?yàn)榻M件(Page 類、控件等)緊密集成并且通常需要比 MVC 模型更少的代碼。

ASP.NET MVC 框架的功能

ASP.NET MVC 框架具有以下功能:

應(yīng)用程序任務(wù)(輸入邏輯、業(yè)務(wù)邏輯和 UI 邏輯)的分離、可測(cè)試性和測(cè)試驅(qū)動(dòng)的開(kāi)發(fā) (TDD)。 MVC 框架中的所有核心協(xié)定都基于接口并且可使用 mock 對(duì)象進(jìn)行測(cè)試,mock 對(duì)象是模仿應(yīng)用程序中實(shí)際對(duì)象的行為的模擬對(duì)象。 您可以對(duì)應(yīng)用程序進(jìn)行單元測(cè)試,而不必在 ASP.NET 進(jìn)程中運(yùn)行控制器,這使得單元測(cè)試既快速又靈活。 您可以使用任何與 .NET Framework 兼容的單元測(cè)試框架。

可擴(kuò)展和可插入的框架。 設(shè)計(jì) ASP.NET MVC 框架的組件的目的是為了可以輕松地替換或自定義它們。 您可以插入自己的視圖引擎、URL 路由策略、操作方法參數(shù)序列化以及其他組件。 ASP.NET MVC 框架還支持使用依賴項(xiàng)注入 (DI) 和控制反轉(zhuǎn) (IOC) 容器模型。 DI 使您能夠?qū)?duì)象注入到類中,而不是依靠類來(lái)創(chuàng)建對(duì)象本身。 IOC 指定某個(gè)對(duì)象是否需要其他對(duì)象,第一個(gè)對(duì)象應(yīng)該從配置文件之類的外部源中獲取第二個(gè)對(duì)象。 這樣,測(cè)試會(huì)更加輕松。

廣泛支持 ASP.NET 路由,ASP.NET 路由是一個(gè)功能強(qiáng)大的 URL 映射組件,它允許您生成具有易于理解和可搜索的 URL 的應(yīng)用程序。 URL 未必包含文件擴(kuò)展名,并且旨在支持非常適合搜索引擎優(yōu)化 (SEO) 和具象狀態(tài)傳輸 (REST) 尋址的 URL 命名模式。

支持將現(xiàn)有 ASP.NET 頁(yè)面(.aspx 文件)、用戶控件(.ascx 文件)和母版頁(yè)(.master 文件)標(biāo)記文件中的標(biāo)記用作視圖模板。 您可以將諸如嵌套母版頁(yè)、內(nèi)聯(lián)表達(dá)式(<%= %>)、聲明性服務(wù)器控件、模板、數(shù)據(jù)綁定、本地化等現(xiàn)有 ASP.NET 功能與 ASP.NET MVC 框架結(jié)合使用。

支持現(xiàn)有 ASP.NET 功能。 ASP.NET MVC 允許您使用一些功能,如 Forms 身份驗(yàn)證和 Windows 身份驗(yàn)證、URL 授權(quán)、成員資格和角色、輸出和數(shù)據(jù)緩存、會(huì)話和配置文件狀態(tài)管理、運(yùn)行狀況監(jiān)視、配置系統(tǒng)以及提供程序體系結(jié)構(gòu)。

深圳北大青鳥(niǎo)嘉華校區(qū)

評(píng)論
熱點(diǎn)專題
>>
相關(guān)文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲精品动漫卡通在线观看 | 天天综合色一区二区三区 | 中文字幕在线手机一区 | 无遮挡国产精品网站 | 一本色道久久综合网 | 亚洲欧美卡通在线另类 |