偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

有關(guān)ASP.NET MVC框架的一些基礎(chǔ)知識

開發(fā) 后端
長時間以來,MVC是一種為眾多開發(fā)人員所熟悉的標(biāo)準(zhǔn)設(shè)計模式。本文介紹有關(guān)ASP.NET MVC框架的一些基礎(chǔ)知識,針對ASP.NET 3.5。

MVC(模型—視圖—控制器)結(jié)構(gòu)模式把一個應(yīng)用程序拆分成三個主要組件:模型、視圖和控制器。在創(chuàng)建基于MVC框架的Web應(yīng)用程序時,你可以把ASP.NET MVC框架作為ASP.NET Web表單模式方案的一種重要候選。較之于基于Web表單的應(yīng)用程序,ASP.NET MVC框架是一個輕量級的、測試性強的描述框架,它能夠與現(xiàn)有ASP.NET特征(例如母版頁面和基于成員身份的認證)緊密集成。MVC框架定義于System.Web.Mvc命名空間中。

長時間以來,MVC是一種為眾多開發(fā)人員所熟悉的標(biāo)準(zhǔn)設(shè)計模式。一些類型的Web應(yīng)用程序受益于MVC框架,而另一些將繼續(xù)使用基于Web表單與回寄技術(shù)的傳統(tǒng)型ASP.NET應(yīng)用程序模式,還有一些類型的Web應(yīng)用程序則有可能把這兩種模式結(jié)合到一起使用??傊?,MVC框架方案與Web表單方案并非相互排斥的。

總體來看,MVC框架包括下列組件:

(一)模型。模型對象是實現(xiàn)應(yīng)用程序數(shù)據(jù)域邏輯的部分。經(jīng)常情況下,模型對象還負責(zé)從數(shù)據(jù)庫中檢索和存儲模型狀態(tài)。例如,一個產(chǎn)品對象有可能從一個數(shù)據(jù)庫中檢索信息,操作其中的數(shù)據(jù),然后把更新信息寫回SQL Server數(shù)據(jù)庫中的某一個產(chǎn)品表格內(nèi)。

【提示】在小型應(yīng)用程序中,模型經(jīng)常是一個概念上的分離而不是一個物理概念。例如,如果應(yīng)用程序僅讀取一個數(shù)據(jù)集并且要把它發(fā)送到視圖中,那么應(yīng)用程序就不必專門創(chuàng)建一個物理模型層和相關(guān)聯(lián)的類。在這種情況下,數(shù)據(jù)就直接承擔(dān)了一個模型對象的角色。

(二)視圖。視圖是負責(zé)顯示應(yīng)用程序的用戶接口(UI)的組件。典型情況下,這個UI是基于模型數(shù)據(jù)創(chuàng)建的。一個典型的示例就是一個產(chǎn)品表格的編輯視圖。在此視圖中,可以基于一個產(chǎn)品對象的當(dāng)前狀態(tài)顯示文本框、下拉列表框和復(fù)選框等控件。

(三)控制器。控制器組件的作用是負責(zé)處理用戶交互,操作模型,并且最終選擇一個要顯示UI的視圖并生成之。在一個MVC應(yīng)用程序中,視圖僅僅負責(zé)顯示信息,而由控制器負責(zé)處理和響應(yīng)用戶輸入與交互。例如,由控制器來處理查詢字符串值,并且把這些值傳遞到模型,然后在模型中使用該值進行數(shù)據(jù)庫查詢。

MVC模式在幫助你把應(yīng)用程序的不同方面(輸入邏輯,業(yè)務(wù)邏輯和UI邏輯)分離開來的同時,提供了這些元素之間的松耦合。MVC模式要求每一種不同的邏輯應(yīng)該存在于應(yīng)用程序中的特定位置。例如,UI邏輯隸屬于視圖,而輸入邏輯隸屬于控制器,業(yè)務(wù)邏輯則隸屬于模型。這種分離有助于你在構(gòu)建一個應(yīng)用程序管理復(fù)雜性,因為它能夠使你在某一時刻僅專注于實現(xiàn)的一個方面。例如,你可以專注于視圖而不去關(guān)心業(yè)務(wù)邏輯。

除了管理復(fù)雜性外,較于測試一個傳統(tǒng)型ASP.NET Web應(yīng)用程序,基于MVC模式進行開發(fā)使得測試應(yīng)用程序更加容易。例如,在一個傳統(tǒng)型ASP.NET Web應(yīng)用程序中,單個的類既用于顯示輸出也用于響應(yīng)用戶輸入。因此,為傳統(tǒng)型ASP.NET應(yīng)用程序編寫自動化測試可能非常復(fù)雜,因為為了測試單個頁面,你必須實例化頁面類,它所有的子控件以及應(yīng)用程序中的其他依賴類。總之,你需要實例化大量的類才能夠運行該頁面,所以這種情況下要比針對應(yīng)用程序的單個部件編寫測試?yán)щy得多。于是,針對傳統(tǒng)型ASP.NET應(yīng)用程序的測試很可能比實現(xiàn)一個使用MVC框架開發(fā)的應(yīng)用程序的測試要復(fù)雜和艱難得多。而且,一個傳統(tǒng)型ASP.NET應(yīng)用程序在測試時還需要使用一個Web服務(wù)器。相比之下,MVC框架把組件分離開來并且大量地使用接口,這使得有可能獨立于框架的其他部分而較容易地單獨測試單個組件。

此外,一個MVC應(yīng)用程序的三個主要組件之間的松耦合特征還推動了平行開發(fā)。例如,一名開發(fā)人員可以開發(fā)視圖,而另一名開發(fā)人員則在開發(fā)控制器邏輯,第三名程序員則可以專注于模型部分的業(yè)務(wù)邏輯的開發(fā)。

基于MVC框架Web應(yīng)用程序的優(yōu)點

歸納來看,ASP.NET MVC框架主要提供了下列優(yōu)點:

通過把一個應(yīng)用程序分離成相互獨立的模型、視圖和控制器三部分而進一步提高了應(yīng)用程序復(fù)雜性的管理。

不再使用視圖狀態(tài)或基于服務(wù)器的表單技術(shù)。這使得MVC框架特別有利于想全面控制一個應(yīng)用程序的行為的開發(fā)人員。

使用一種前端控制器(Front Controller)模式并通過單一的控制器來處理Web應(yīng)用程序請求。這一特征使你有可能設(shè)計出一個支持極其豐富的路由基礎(chǔ)結(jié)構(gòu)的應(yīng)用程序。有關(guān)于前端控制器的更多的信息,請參考http://go.microsoft.com/fwlink/?LinkId=106357

提供對于測試驅(qū)動開發(fā)(TDD)的大力支持。

基于Web表單Web應(yīng)用程序的優(yōu)點

傳統(tǒng)型基于Web表單的框架能夠提供下列優(yōu)點:

支持事件模型。此模型能夠保留HTTP傳輸過程中的狀態(tài),而這十分有利于在線業(yè)務(wù)式Web應(yīng)用程序的開發(fā)?;赪eb表單的應(yīng)用程序提供大量的事件,所有這些事件都得到數(shù)以百計的服務(wù)器控件的支持。

使用一種頁面控制器(Page Controller)模式,此模式能夠把許多功能添加到單個的頁面。有關(guān)于頁面控制器的更多的信息,請參考http://msdn.microsoft.com/zh-cn/library/ms978764.aspx。

使用視圖狀態(tài)或基于服務(wù)器的表單,這使得狀態(tài)信息管理更加容易。

ASP.NET MVC框架特征

概括來看,ASP.NET MVC框架大致提供了下列重要特征:

實現(xiàn)應(yīng)用程序基本任務(wù)(輸入邏輯,業(yè)務(wù)邏輯和UI邏輯)的分離,支持測試及測試驅(qū)動開發(fā)(TDD)。MVC框架中所有的核心契約都是基于接口的,因此十分利于使用mock對象(這是一些模擬應(yīng)用程序中實際對象的模擬對象)測試工程。你可以對應(yīng)用程序進行單元測試而不必在真正的ASP.NET進程中運行控制器,這加快了單元測試的速度和靈活性。你可以使用與.NET框架相兼容的任何單元測試框架測試你的工程。

提供了一個可擴展的和可插接的框架。ASP.NET MVC框架組件的設(shè)計支持用戶十分容易地對它們進行替換或定制。你可以設(shè)計并加入你自己的視圖引擎,URL路由策略,行為方法參數(shù)串行化,以及其它組件。ASP.NET MVC框架還支持使用現(xiàn)有依賴性注入(即“Dependency Injection”,簡稱“DI”)和控制反轉(zhuǎn)(IOC)容器模型。其中,DI允許你把對象注入到一個類中,而不是依賴于類去創(chuàng)建對象本身。而IOC指定,如果一個對象要求使用另一個對象,那么第一個對象應(yīng)該從一個外部源(例如一個配置文件)得到第二個對象。這一支持極有利于對工程的測試。

實現(xiàn)了一個強有力的URL映射組件,支持你在應(yīng)用程序中構(gòu)建易于理解的可搜索的URL(而不是像諸多Web應(yīng)用URL中的那種極其復(fù)雜的表達方式)。如今,URL中不必包括文件擴展名,而且其設(shè)計還支持URL命名模式。因此,這種模式有利于搜索引擎優(yōu)化(SEO)和REST(表述性狀態(tài)轉(zhuǎn)移)尋址。

支持在現(xiàn)有ASP.NET頁面(.aspx文件)、用戶控件(.ascx文件)以及母版頁面(.master文件)標(biāo)記文件中把標(biāo)記用作視圖模板。你可以在使用ASP.NET MVC框架的過程中繼續(xù)使用現(xiàn)有ASP.NET特征,例如嵌套的母版頁面,內(nèi)聯(lián)表達式(<%=%>),聲明性服務(wù)器控件,模板,數(shù)據(jù)綁定,本地化,等等。

支持現(xiàn)有ASP.NET特征。ASP.NET MVC框架支持你使用例如表單和Windows認證,URL授權(quán),會員和角色,輸出緩沖和數(shù)據(jù)緩沖,會話和配置狀態(tài)管理,健康監(jiān)視,配置系統(tǒng),提供者架構(gòu),以及其它ASP.NET特征。

URL映射

典型情況下,在一個ASP.NET網(wǎng)站中,URL會被映射到存儲在磁盤上的文件(主要是指.aspx文件)。這些.aspx文件中將包括針對客戶端發(fā)出的請求要處理的代碼或標(biāo)記。

ASP.NET MVC框架以不同于ASP.NET網(wǎng)站應(yīng)用程序的方式把URL映射到服務(wù)器代碼。MVC框架不是把URL映射到ASP.NET頁面或HTTP處理器程序,而是直接把URL映射到特定的控制器類。然后,由控制器類負責(zé)處理發(fā)來的請求,例如用戶輸入與交互,以及基于用戶輸入執(zhí)行適當(dāng)?shù)膽?yīng)用程序及數(shù)據(jù)邏輯。典型地,一個控制器類調(diào)用一個單獨的視圖組件來生成相應(yīng)的HTML輸出作為對客戶端發(fā)出請求的響應(yīng)。

在ASP.NET MVC框架中,模型、視圖和控制器組件被分離開來。典型地,模型組件主要負責(zé)維護數(shù)據(jù)庫中持久數(shù)據(jù)的狀態(tài),而視圖組件則由控制器進行選擇并最終在客戶端生成相應(yīng)的UI。默認情況下,ASP.NET MVC框架使用現(xiàn)有ASP.NET頁面(.aspx),母版頁面(.master)和用戶控件(.ascx)類型作為在瀏覽器端的輸出形式。控制器組件將定位控制器中適當(dāng)?shù)男袨榉椒?,取得用作行為方法的參?shù)值,處理執(zhí)行行為期間所有可能發(fā)生的錯誤,并生成要求的視圖。每一組組件各自存在于一個MVC Web應(yīng)用程序工程的一個單獨的文件夾下。

通過提供了一個URL映射引擎,ASP.NET MVC框架在把映射URL到控制器類方面提供了相當(dāng)?shù)撵`活性。你可以使用這種映射引擎來定義路由規(guī)則,然后ASP.NET MVC框架使用這些路由規(guī)則來計算發(fā)來的URL請求并選擇要執(zhí)行的控制器。你還可以讓路由引擎自動地分析URL中定義的變量并且使ASP.NET MVC框架把這些內(nèi)容以參數(shù)方式傳遞給控制器。

MVC框架與頁面回寄

ASP.NET MVC框架并不使用傳統(tǒng)的ASP.NET回寄模型來實現(xiàn)與服務(wù)器端的交互。代之的是,所有的終端用戶交互都被路由到一個控制器類。這有利于保持UI邏輯和業(yè)務(wù)邏輯的分離,并且有助于測試目的。結(jié)果是,ASP.NET視圖狀態(tài)和ASP.NET頁面生命周期事件并沒有與基于MVC的視圖集成到一起。

本文節(jié)選自朱先忠的博客:《ASP.NET 3.5 MVC框架深度解析》。

【編輯推薦】

  1. Scott Gu教你使用ASP.NET MVC 2新功能
  2. 微軟發(fā)布ASP.NET MVC 2預(yù)覽版 多項功能更新
  3. 13個不可不知的ASP.NET MVC擴展點
  4. 學(xué)習(xí)ASP.NET MVC的基本概念
  5. 學(xué)習(xí)ASP.NET MVC路由的使用方法
責(zé)任編輯:yangsai 來源: 朱先忠的博客
相關(guān)推薦

2009-08-21 18:05:23

ASP.NET Ses

2009-08-04 16:06:19

ASP.NET代碼分離

2009-07-24 13:20:44

MVC框架ASP.NET

2012-07-03 13:55:00

ASP.NET

2009-07-27 16:11:01

ASP.NET網(wǎng)頁模板

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-02 13:58:29

JSP和J2EE

2009-09-04 13:11:25

ASP.NET生成XM

2009-07-24 17:04:57

ASP.NET中Coo

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2010-06-23 15:44:03

ASP.NET MVC

2013-05-31 02:18:47

ASP.NET.Net

2009-12-11 14:17:36

ASP.NET Coo

2009-07-20 12:59:53

ASP.NET MVCASP.NET框架的功

2009-06-01 10:23:31

asp.net mvcasp.net mvc.net mvc框架

2009-03-13 10:58:48

ASP.NetMVC框架編程

2014-06-30 09:22:38

ASP.NETBootstrap
點贊
收藏

51CTO技術(shù)棧公眾號