ASP.NET MVC 4框架揭秘

出版時(shí)間:2013-1  出版社:電子工業(yè)出版社  作者:蔣金楠  頁數(shù):578  字?jǐn)?shù):855000  
Tag標(biāo)簽:無  

前言

ASP.NET MVC是一個(gè)建立在ASP.NET平臺(tái)上基于MVC模式的Web開發(fā)框架,它提供了一種與傳統(tǒng)Web Forms完全不同的Web應(yīng)用開發(fā)方式。ASP.NET Web Forms借鑒了Windows Forms基于控件和事件注冊(cè)的編程模式,使Web應(yīng)用的開發(fā)變得簡(jiǎn)單而快捷,但是它卻使開發(fā)人員與Web的本質(zhì)漸行漸遠(yuǎn)。ASP.NET MVC是一種回歸,它使開發(fā)人員可以真正地面向Web進(jìn)行編程,我們面對(duì)的不再是拖拉到Web頁面的控件,而是整個(gè)HTTP請(qǐng)求和響應(yīng)的流程。這不是一本ASP.NET MVC入門書籍我個(gè)人覺得掌握ASP.NET MVC具有三個(gè)層次。了解基本的編程模式,掌握Controller和View的定義方式,知道路由如何注冊(cè),以及驗(yàn)證規(guī)則如何定義,此為第一層次。第二層次要求我們對(duì)ASP.NET MVC框架本身從請(qǐng)求接收到響應(yīng)回復(fù)的整個(gè)流程具有一個(gè)清晰的認(rèn)識(shí),包括請(qǐng)求如何被路由、目標(biāo)Controller如何被激活、Model元數(shù)據(jù)如何被解析、Action方法如何被執(zhí)行、View如何呈現(xiàn)等。ASP.NET MVC本身是一個(gè)極具可擴(kuò)展的開發(fā)框架,合理利用其擴(kuò)展性可以解決很多開發(fā)中的實(shí)際問題,而掌握ASP.NET MVC的最高層次就是憑著對(duì)框架本身的運(yùn)行機(jī)制的了解準(zhǔn)確地找到相應(yīng)的擴(kuò)展點(diǎn),并創(chuàng)建相應(yīng)的擴(kuò)展來解決我們遇到的問題。本書不是一本ASP.NET MVC入門書籍,而是讓處于第一層次的讀者快速進(jìn)入第二和第三層次的書。這是一本講述ASP.NET MVC框架本質(zhì)的書很多.NET開發(fā)人員都在抱怨微軟開發(fā)技術(shù)過快的更新頻率讓他們無所適從。其實(shí)他們看到的只是單純的版本升級(jí)而已,一些本質(zhì)的東西一直是“穩(wěn)定”的。微軟推出.NET戰(zhàn)略已經(jīng)十多年了,CLR卻只有四個(gè)版本而已。最新版本的ASP.NET雖然表面上已經(jīng)看不到太多最初的影子,但是整個(gè)請(qǐng)求處理的管道一直未曾改變。對(duì)于一項(xiàng)開發(fā)技術(shù),只要我們了解了它最根本的一些東西,就不應(yīng)該懼怕其高頻率的版本更替,而應(yīng)該熱烈擁抱它。本書力求將關(guān)于ASP.NET MVC框架最根本的東西帶給大家,而不是羅列一些簡(jiǎn)單的編程技巧。這是一本實(shí)用的書可能有人覺得這本剖析ASP.NET MVC框架運(yùn)行原理的書沒有什么“實(shí)際”的意義,因?yàn)槲覀兠刻斓娜粘9ぷ骶褪蔷幊?,知道了ASP.NET MVC從請(qǐng)求接收到響應(yīng)回復(fù)之間整個(gè)處理流程并不會(huì)對(duì)我們的工作造成實(shí)質(zhì)性的改變。其實(shí)這種想法是極端錯(cuò)誤的,因?yàn)槲覀兙帉懙某绦蜃罱K是在ASP.NET MVC框架上運(yùn)行的,程序的高效性決定于它是否能夠最大限度地“迎合”框架的運(yùn)行機(jī)制,所以了解ASP.NET MVC框架的運(yùn)行原理有利于我們寫出高質(zhì)量的程序。我個(gè)人將基于ASP.NET MVC的編程分為兩類,即“面向業(yè)務(wù)編程“和“面向框架編程”。前者根據(jù)具體的業(yè)務(wù)邏輯定義Controller和設(shè)計(jì)View,這是大部分Web開發(fā)人員的主要工作;后者則是為整個(gè)Web應(yīng)用搭建一個(gè)框架,讓最終的開發(fā)人員只需要關(guān)注具體的業(yè)務(wù)邏輯,而讓框架來完成所有與業(yè)務(wù)無關(guān)的部分。對(duì)于后者,我們可以充分利用ASP.NET MVC的擴(kuò)展性,通過自定義的擴(kuò)展將非業(yè)務(wù)的功能自動(dòng)“注入”到業(yè)務(wù)邏輯的處理流程中,這樣不僅可以提高開發(fā)效率,而且還能提高開發(fā)質(zhì)量。本書在剖析ASP.NET MVC框架運(yùn)行機(jī)制過程中幾乎列出了其所有的擴(kuò)展點(diǎn),并且通過實(shí)例演示的形式提供了很多實(shí)用的擴(kuò)展??梢詫⒈緯暈橐槐尽凹軜?gòu)設(shè)計(jì)”的書在我的周圍存在這樣的一些人,他們以剛畢業(yè)一兩年的畢業(yè)生為主,他們大都工作勤奮、聰明好學(xué),手中經(jīng)常捧著GoF的《設(shè)計(jì)模式》,總是希望將書中的設(shè)計(jì)模式應(yīng)用到具體項(xiàng)目之中,或者希望通過項(xiàng)目的實(shí)踐來印證他們?cè)跁旧系脑O(shè)計(jì)模式,但是理論和實(shí)踐之間的距離總讓他們感到困惑。要從真實(shí)的項(xiàng)目或者產(chǎn)品中學(xué)習(xí)“實(shí)用”的軟件架構(gòu)設(shè)計(jì)知識(shí),先得確定目標(biāo)項(xiàng)目或者產(chǎn)品中采用的架構(gòu)思想和設(shè)計(jì)模式是正確的,而我們參與的很多項(xiàng)目其實(shí)被“架構(gòu)”得一塌糊涂。對(duì)于像ASP.NET這樣的產(chǎn)品,其基礎(chǔ)架構(gòu)能夠在很長一段時(shí)間內(nèi)保持不變,本身就證明了應(yīng)用在上面的架構(gòu)設(shè)計(jì)的正確性,它們不正是我們學(xué)習(xí)架構(gòu)設(shè)計(jì)最好的素材嗎?本書對(duì)ASP.NET MVC框架的運(yùn)行機(jī)制進(jìn)行了深入剖析,實(shí)際上是將ASP.NET MVC的整個(gè)設(shè)計(jì)展示在讀者面前,讀者朋友們也許可以將本書作為一本“架構(gòu)設(shè)計(jì)”的書來讀。本書的寫作特點(diǎn)我想本書的讀者可能很多都讀過我的《WCF全面解析》,雖然內(nèi)容不同,本書卻可能看成是它的延續(xù),因?yàn)樗鼈兓旧喜捎昧讼嗤膶懽魇址???偟貋碇v,我基本上采用“原理講述、代碼分析和實(shí)例證明”這個(gè)模式來介紹某個(gè)技術(shù)要點(diǎn),對(duì)于一個(gè)具體的知識(shí)點(diǎn),我不僅僅會(huì)告訴讀者“是什么”,還會(huì)告訴讀者“為什么”,以及“如何證明是這樣”。除此之外,如果某個(gè)知識(shí)點(diǎn)在真實(shí)的項(xiàng)目開發(fā)中具有“實(shí)用”價(jià)值,我一般會(huì)給出一個(gè)相關(guān)的實(shí)例演示。本書具有一個(gè)與其他中文原創(chuàng)或者翻譯書籍截然不同的特點(diǎn),那就是幾乎所有的術(shù)語都采用英文,比如Controller、Model和View在本書中并沒有翻譯成中文“控制器”、“模型”和“視圖”。因?yàn)槲艺J(rèn)為很多術(shù)語其實(shí)很難找到一個(gè)語義完全等同的中文詞組或短語與之對(duì)應(yīng),對(duì)于習(xí)慣了英文作為“開發(fā)語言”的讀者來說,強(qiáng)行翻譯其實(shí)是不必要的。這不是一本純理論的書,而是一本“實(shí)證型”的書,在書中提供了110個(gè)可供單獨(dú)下載的實(shí)例演示。這些實(shí)例在本書中具有不同的作用,有的是為了探測(cè)和證明對(duì)應(yīng)的論點(diǎn),有的是為了演示某種使用的編程技巧,有的直接就是一個(gè)完整的案例。本書讀者我們說《ASP.NET MVC 4框架揭秘》不是一本ASP.NET MVC入門書籍,主要是因?yàn)楸緯诘?章并沒有提供一個(gè)“Hello World”實(shí)例,關(guān)注重點(diǎn)主要落在ASP.NET MVC框架本身的運(yùn)行機(jī)制上面,但是并不是說本書的讀者需要預(yù)先對(duì)ASP.NET MVC具有多深入的認(rèn)識(shí)才行。如果讀者對(duì)ASP.NET MVC基本的編程模式具有一定的了解,讀懂這本書是完全沒有問題的。對(duì)于從未接觸過ASP.NET MVC的.NET開發(fā)人員,可以通過官方網(wǎng)站來學(xué)習(xí)ASP.NET MVC。本書結(jié)構(gòu)第1章  ASP.NET + MVCASP.NET和MVC,分別代表了ASP.NET MVC的技術(shù)平臺(tái)和設(shè)計(jì)思想。本章對(duì)MVC模式及其變體比如MVP和Model 2等作了概括性介紹,同時(shí)對(duì)ASP.NET的管道式設(shè)計(jì),以及與各種版本的IIS之間的交互機(jī)制進(jìn)行了全面講述。為了讓讀者對(duì)ASP.NET MVC框架的運(yùn)行機(jī)制具有一個(gè)大概的了解,本章按照其原理創(chuàng)建了一個(gè)“迷你版”的ASP.NET MVC。第2章  URL路由ASP.NET MVC借助于URL路由系統(tǒng)實(shí)現(xiàn)了URL模式與目標(biāo)Controller和Action的映射,以及內(nèi)嵌于URL的參數(shù)傳遞?;赨RL路由的編程主要體現(xiàn)在路由映射的注冊(cè)和基于注冊(cè)路由的URL生成上面,本章對(duì)這兩個(gè)方面作了非常詳細(xì)的介紹。URL路由最終是借助于自定義的HttpModule(UrlRoutingModule)實(shí)現(xiàn)的,它利用動(dòng)態(tài)注冊(cè)HttpHandler映射的方式提供針對(duì)URL路由的實(shí)現(xiàn),這是本章著重講述的重點(diǎn)。第3章  Controller的激活本章對(duì)以ControllerFactory為核心的Controller激活系統(tǒng),以及通過DefaultControllerFactory提供的Controller默認(rèn)激活機(jī)制進(jìn)行了詳細(xì)介紹。以IoC的方式激活Controller在實(shí)際的Web應(yīng)用開發(fā)中具有重要的意義,本章以較多的篇幅講述了如何將不同的IoC框架(Unity和Ninject)應(yīng)用到ASP.NET MVC的Controller激活系統(tǒng)中。具體來說,我們以實(shí)例演示的方式講述了三種不同的實(shí)現(xiàn)方式,包括自定義ControllerFactory、ControllerActivator和DependencyResolver。第4章  Model元數(shù)據(jù)的解析Model元數(shù)據(jù)是針對(duì)數(shù)據(jù)類型的一種描述信息,ASP.NET MVC提供了基于數(shù)據(jù)注解特性的聲明式Model元數(shù)據(jù)定義方式,本章對(duì)所有與此相關(guān)的數(shù)據(jù)注解特性,以及它們對(duì)Model元數(shù)據(jù)的影響進(jìn)行了全面的介紹。ASP.NET MVC利用Model元數(shù)據(jù)實(shí)現(xiàn)了模板化的HTML生成方式,本章重點(diǎn)講述了如何為具體的數(shù)據(jù)類型定義編輯和顯示模板,以及定義的模板在調(diào)用HtmlHelper/HtmlHelper的模板方法過程中是如何控制最終生成的HTML的。本章的最后關(guān)注于以ModelMetadataProvider為核心的Model元數(shù)據(jù)提供機(jī)制,以及如何通過自定義ModelMetadataProvider實(shí)現(xiàn)對(duì)Model元數(shù)據(jù)提供機(jī)制的定制。第5章  Model的綁定ASP.NET MVC的Model綁定旨在為目標(biāo)Action方法提供參數(shù)列表。ParameterDescriptor為Model綁定提供了相關(guān)的元數(shù)據(jù)信息,本章以介紹ParameterDescriptor以及相關(guān)的ControllerDescriptor和ActionDescriptor作為開篇。Model綁定所需的最終數(shù)據(jù)通過ValueProvider來提供,本章接下來會(huì)對(duì)實(shí)現(xiàn)在各種不同ValueProvider中的數(shù)據(jù)值提供機(jī)制,以及以ValueProviderFactory為核心的ValueProvider提供機(jī)制進(jìn)行全面而深入的介紹。本章的最后部分著重介紹以ModelBinder為核心的Model綁定系統(tǒng),以及實(shí)現(xiàn)在DefaultModelBinder中的默認(rèn)Model綁定機(jī)制。第6章  Model的驗(yàn)證Action方法在執(zhí)行之前需要通過Model驗(yàn)證機(jī)制確保提供參數(shù)的有效性。本章會(huì)著重講述以ModelValidator為核心的Model驗(yàn)證系統(tǒng),以及通過ModelValidatorProvider實(shí)現(xiàn)的ModelValidator提供機(jī)制。Model驗(yàn)證是伴隨著Model綁定進(jìn)行的,具體執(zhí)行流程的介紹也包含在本章之中。ASP.NET MVC利用ValidationAttribute特性為Model驗(yàn)證提供了一種聲明式編程方式,其背后的實(shí)現(xiàn)機(jī)制是本章重要講述的內(nèi)容。jQuery驗(yàn)證框架被默認(rèn)用于客戶端驗(yàn)證,jQuery驗(yàn)證的編程方式,以及與ASP.NET MVC驗(yàn)證系統(tǒng)的協(xié)作方式會(huì)在本章的最后一部分予以介紹。第7章  Action的執(zhí)行針對(duì)請(qǐng)求的處理最終體現(xiàn)在對(duì)目標(biāo)Action方法的執(zhí)行上面。Action方法可以以同步或者異步的方式執(zhí)行,所以本章以介紹兩種不同的異步Action編程模式作為開篇;此外,同步與異步的差異體現(xiàn)在整個(gè)請(qǐng)求的處理過程中,MvcHandler、Controller、ActionInvoker、ControllerDescriptor和ActionDescriptor等都具有同步和異步的版本,本章會(huì)對(duì)它們作一個(gè)系統(tǒng)的比較。Action的執(zhí)行還伴隨著篩選器的執(zhí)行,在本章的最后對(duì)四種篩選器的作用和執(zhí)行流程進(jìn)行單獨(dú)介紹。第8章  View的呈現(xiàn)ActionResult作為執(zhí)行Action返回的結(jié)果,實(shí)現(xiàn)了對(duì)請(qǐng)求的最終響應(yīng),本章介紹了所有預(yù)定義的ActionResult分別是如何完成針對(duì)請(qǐng)求的響應(yīng)的。作為最重要的ActionResult,ViewResult將整個(gè)預(yù)定義的View呈現(xiàn)出來,而它背后是一套完整的View引擎,View引擎的運(yùn)行機(jī)制,以及與ViewResult的協(xié)作方式是本章介紹的一個(gè)重點(diǎn)。ASP.NET MVC默認(rèn)提供了ASPX和Razor這兩種原生View引擎的支持,針對(duì)Razor引擎的深入剖析被放在本章的最后一部分。第9章  ASP.NET Web APIASP.NET Web API使我們可以很容易地定義REST服務(wù),本章會(huì)提供Web API基本編程模式的介紹。ASP.NET Web API采用了與ASP.NET MVC獨(dú)立但類似的執(zhí)行管道,對(duì)整個(gè)管道從請(qǐng)求接收到響應(yīng)回復(fù)的整個(gè)流程的介紹是本章的重點(diǎn),包括HttpController的激活與執(zhí)行、Action的選擇、Model元數(shù)據(jù)的解析、Action參數(shù)的綁定與執(zhí)行等。第10章  案例實(shí)踐本章提供了一個(gè)名為Video Mall(簡(jiǎn)稱VM)的在線電子商務(wù)購物網(wǎng)站來模擬ASP.NET MVC在真實(shí)項(xiàng)目中的應(yīng)用。VM以SQL Server作為數(shù)據(jù)存儲(chǔ),并采用Entity Framework作為ORM框架進(jìn)行數(shù)據(jù)存取。VM利用了在前面章節(jié)中定義的一系列擴(kuò)展,同時(shí)還涉及了一些架構(gòu)思想和涉及模式,比如模塊化設(shè)計(jì)、IoC、AOP以及Repository等。關(guān)于作者蔣金楠(網(wǎng)名Artech)現(xiàn)就職于某知名軟件公司擔(dān)任高級(jí)軟件顧問。連續(xù)5屆微軟MVP(最有價(jià)值專家),同時(shí)也是少數(shù)的雙料MVP(Solutions Architecture + Connected System)之一。國內(nèi)較早接觸WCF的人之一,2007年2月起在個(gè)人博客上發(fā)表超過兩百篇深入介紹WCF的文章,成為了目前國內(nèi)WCF在線資料的主要來源。致謝本書得以出版,需要感謝本書的編輯張春雨先生和葛娜小姐,你們的專業(yè)水準(zhǔn)和責(zé)任心是為本書提供的質(zhì)量保證,期待著與你們第三度合作的機(jī)會(huì)。此外,最需要感謝的是我的老婆徐妍妍,只有我知道你在本書提交給出版社之前所作的校對(duì)工作有多么重要。本書支持本書針對(duì)最新版本的ASP.NET MVC,同時(shí)涉及太多底層實(shí)現(xiàn)的內(nèi)容,所以大部分內(nèi)容是找不到任何現(xiàn)成參考資料的,這些內(nèi)容大都來自于作者對(duì)源碼的分析和試驗(yàn)的證明。本書的最初版本是根據(jù)ASP.NET MVC 4 Beta撰寫的,差不多快寫完的時(shí)候微軟發(fā)布了ASP.NET MVC 4 RC,然后我根據(jù)RC對(duì)原來的內(nèi)容作了不小的改動(dòng)。在ASP.NET MVC4正式推出之后,我第一時(shí)間聯(lián)系到了Scott Guthrie,從他們團(tuán)隊(duì)得到了一份正式版與RC之間變化的列表,并據(jù)此又作了一些修改。這些因素加上我本人能力的限制,都可能造成一些無法避免的錯(cuò)誤或者偏差,如果讀者在閱讀過程中發(fā)現(xiàn)了任何問題,希望能夠反饋給我。如果讀者遇到任何ASP.NET MVC或者是WCF的問題,也歡迎與我通過以下的方式進(jìn)行交流。

內(nèi)容概要

  針對(duì)最新版本的ASP.NET MVC
4,深入剖析底層框架從請(qǐng)求接收到響應(yīng)回復(fù)的整個(gè)處理流程(包括URL路由、Controller的激活、Model元數(shù)據(jù)的解析、Model的綁定、Model的驗(yàn)證、Action的執(zhí)行、View的呈現(xiàn)和ASP.NET
Web API等),并在此基礎(chǔ)上指導(dǎo)讀者如何通過對(duì)ASP.NET MVC框架本身的擴(kuò)展解決應(yīng)用開發(fā)中的實(shí)際問題。

作者簡(jiǎn)介

蔣金楠,網(wǎng)名Artech,高級(jí)軟件顧問。微軟6任MVP(Solutions Architecture、Connected
System與Microsoft Integration)。著《WCF全面解析》(上、下冊(cè))、《ASP.NET MVC
4框架揭秘》等。對(duì).NET Framework、C#、ASP.NET、SQL
Server、設(shè)計(jì)模式、軟件架構(gòu),以及主流的開源框架有著深入的研究。尤其是在WCF技術(shù)方面,屬國內(nèi)較早接觸WCF的人之一,同時(shí)對(duì).NET
Remoting、MSMQ通信技術(shù)有深入的理解。博客園推薦博客(目前排名第一),2012年度51CTO
IT博客大賽10佳。

書籍目錄

第1章 ASP.NET +
MVC
 1.1 傳統(tǒng)MVC模式
  1.1.1 自治視圖
  1.1.2 什么是MVC模式
 1.2 MVC的變體
  1.2.1 MVP
  1.2.2 Model
2
  1.2.3 ASP.NETMVC與Model 2
 1.3 IIS/ASP.NET管道
  1.3.1 IIS
5.x與ASP.NET
  1.3.2 IIS
6.0與ASP.NET
  1.3.3 IIS
7.0與ASP.NET
  1.3.4 ASP.NET管道
 1.4 ASP.NET
MVC是如何運(yùn)行的
  1.4.1 建立在“迷你版”ASP.NET
MVC上的Web應(yīng)用
  1.4.2 URL路由
  1.4.3
Controller的激活
  1.4.4 Action的執(zhí)行
  本章小結(jié)
第2章 URL路由
 2.1 ASP.NET路由系統(tǒng)
  2.1.1 請(qǐng)求URL與物理文件的分離
  2.1.2
實(shí)例演示:通過URL路由實(shí)現(xiàn)請(qǐng)求地址與.aspx頁面的映射(S201)
  2.1.3 Route與RouteTable
  2.1.4 路由映射
  2.1.5 根據(jù)路由規(guī)則生成URL
 2.2 ASP.NET
MVC擴(kuò)展
  2.2.1 路由映射
  2.2.2
實(shí)例演示:注冊(cè)路由映射與查看路由信息(S208)
  2.2.3 缺省URL參數(shù)
  2.2.4 基于Area的路由映射
  2.2.5 鏈接和URL的生成
 2.3 動(dòng)態(tài)HttpHandler映射
  2.3.1
UrlRoutingModule
  2.3.2 PageRouteHandler與MvcRouteHandler
  2.3.3
ASP.NET路由系統(tǒng)擴(kuò)展
  本章小結(jié)
第3章 Controller的激活
 3.1 總體設(shè)計(jì)
  3.1.1 Controller
  3.1.2
ControllerFactory
  3.1.3
ControllerBuilder
  3.1.4 Controller的激活與URL路由
 3.2 默認(rèn)實(shí)現(xiàn)
  3.2.1
Controller類型的解析
  3.2.2
Controller類型的緩存
  3.2.3
Controller的釋放和會(huì)話狀態(tài)行為的控制
 3.3 IoC的應(yīng)用
  3.3.1 從Unity來認(rèn)識(shí)IoC
  3.3.2
Controller與Model的分離
  3.3.3 基于IoC的ControllerFactory
  3.3.4 基于IoC的ControllerActivator
  3.3.5
基于IoC的DependencyResolver
  本章小結(jié)
第4章 Model元數(shù)據(jù)的解析
 4.1
Model元數(shù)據(jù)及其定制
  4.1.1 Model元數(shù)據(jù)層次化結(jié)構(gòu)
  4.1.2 基本Model元數(shù)據(jù)信息
  4.1.3 Model元數(shù)據(jù)的定制
  4.1.4
IMetadataAware接口
 4.2
Model元數(shù)據(jù)與Model模板
  4.2.1
實(shí)例演示:通過模板將布爾值顯示為RadioButton(S409)
  4.2.2
預(yù)定義模板
  4.2.3
DataTypeName與模板名稱
  4.2.4 模板的獲取與執(zhí)行
  4.2.5 實(shí)例演示:通過定制Model元數(shù)據(jù)和自定義模板
實(shí)現(xiàn)預(yù)定義列表的呈現(xiàn)(S412)
 4.3 Model元數(shù)據(jù)的提供機(jī)制
  4.3.1
再談ModelMetadata
  4.3.2 ModelMetadataProvider
  4.3.3 Model元數(shù)據(jù)提供系統(tǒng)的擴(kuò)展
  本章小結(jié)
第5章 Model的綁定
 5.1
ControllerDescriptor、ActionDescriptor與ParameterDescriptor
  5.1.1 ControllerDescriptor
  5.1.2
ActionDescriptor
  5.1.3 ParameterDescriptor
 5.2 ValueProvider
  5.2.1 NameValueCollectionValueProvider
  5.2.2
DictionaryValueProvider
  5.2.3 ValueProviderFactory
  5.2.4
ValueProviderFactories
 5.3 ModelBinder
  5.3.1
ModelBinder與ModelBinderProvider
  5.3.2
ModelState與Model綁定
  5.3.3 ModelBindingContext的創(chuàng)建
 5.4
Model綁定的默認(rèn)實(shí)現(xiàn)
  5.4.1 簡(jiǎn)單類型
  5.4.2 復(fù)雜類型
  5.4.3 數(shù)組
  5.4.4 集合
  5.4.5 字典
  本章小結(jié)
第6章 Model的驗(yàn)證
 6.1 ModelValidator與ModelValidatorProvider
  6.1.1 ModelValidator
  6.1.2
ModelValidatorProvider
  6.1.3 ModelValidatorProviders
 6.2
Model綁定與驗(yàn)證
  6.2.1 ModelState
  6.2.2
驗(yàn)證消息的呈現(xiàn)
  6.2.3 Model綁定中的驗(yàn)證
 6.3
基于數(shù)據(jù)注解特性的Model驗(yàn)證
  6.3.1 ValidationAttribute特性
  6.3.2
DataAnnotationsModelValidator
  6.3.3 DataAnnotationsModelValidatorProvider
  6.3.4
將ValidationAttribute應(yīng)用到參數(shù)上
  6.3.5 一種Model類型,多種驗(yàn)證規(guī)則
 6.4 客戶端驗(yàn)證
  6.4.1
jQuery驗(yàn)證
  6.4.2
基于jQuery的Model驗(yàn)證
  6.4.3
自定義驗(yàn)證
  本章小結(jié)
第7章 Action的執(zhí)行
 7.1
異步Action的定義
  7.1.1 基于線程池的請(qǐng)求處理機(jī)制
  7.1.2 兩種異步Action方法的定義
  7.1.3 AsyncManager
 7.2
Action方法的執(zhí)行
  7.2.1
MvcHandler對(duì)請(qǐng)求的處理
  7.2.2
Controller的執(zhí)行
  7.2.3 ActionInvoker的執(zhí)行
  7.2.4 ControllerDescriptor的同步與異步
  7.2.5 ActionDescriptor的執(zhí)行
 7.3 篩選器的執(zhí)行
  7.3.1 Filter及其提供機(jī)制
  7.3.2
AuthorizationFilter
  7.3.3 ActionFilter
  7.3.4 ExceptionFilter
  7.3.5 實(shí)例演示:集成EntLib實(shí)現(xiàn)自動(dòng)化異常處理(S713, S714,
S715)
  7.3.6 ResultFilter
  本章小結(jié)
第8章 View的呈現(xiàn)
 8.1 ActionResult
  8.1.1
EmptyResult
  8.1.2 ContentResult
  8.1.3 FileResult
  8.1.4 JavaScriptResult
  8.1.5 JsonResult
  8.1.6
HttpStatusCodeResult
  8.1.7
RedirectResult/RedirectToRouteResult
 8.2 ViewResult與ViewEngine
  8.2.1 View引擎中的View
  8.2.2 ViewEngine
  8.2.3 ViewResult的執(zhí)行
 8.3 Razor引擎
  8.3.1
View的編譯原理
  8.3.2
WebViewPage與WebViewPage
  8.3.3 RazorView
  8.3.4
RazorViewEngine
  本章小結(jié)
第9章 ASP.NET Web API
 9.1 Web、REST與Web API
  9.1.1 Web如此簡(jiǎn)單
  9.1.2
REST是什么
  9.1.3 ASP.NET Web
API
 9.2 服務(wù)端管道
  9.2.1 ASP.NET Web API管道式設(shè)計(jì)
  9.2.2 HttpMessageHandler
  9.2.3 HttpServer
  9.2.4
實(shí)例演示:自定義HttpMessageHandler實(shí)現(xiàn)HTTP方法重寫(S903)
 9.3
HttpControllerDispatcher
  9.3.1
HttpController的激活
  9.3.2
HttpController的執(zhí)行
  9.3.3 Action的選擇
  9.3.4 Model元數(shù)據(jù)的解析
  9.3.5 Action參數(shù)綁定
  9.3.6 Model驗(yàn)證
  9.3.7 Action的執(zhí)行與結(jié)果的響應(yīng)
 9.4 Web API的調(diào)用和自我寄宿
  9.4.1 HttpClient
  9.4.2 HttpSelfHostServer

章節(jié)摘錄

版權(quán)頁:   插圖:   ASP.NET集成 從上面對(duì)IIS 5.x和IIS 6.0的介紹中,我們不難發(fā)現(xiàn)IIS與ASENET是兩個(gè)相互獨(dú)立的管道(Pipeline)。在各自管轄范圍內(nèi),它們各自具有自己的一套機(jī)制對(duì)HTTP請(qǐng)求進(jìn)行處理。 兩個(gè)管道通過ISAPI實(shí)現(xiàn)“連通”,IIS是第一道屏障,當(dāng)對(duì)HTTP請(qǐng)求進(jìn)行必要的前期處理(比如身份驗(yàn)證等)后,通過ISAPI將請(qǐng)求分發(fā)給ASENET管道。當(dāng)ASENET在自身管道范圍內(nèi)完成對(duì)HTTP請(qǐng)求的處理時(shí),處理后的結(jié)果再返回到IIS,IIS對(duì)其進(jìn)行后期處理(比如日志記錄、壓縮等),最終生成HTTP響應(yīng)。圖1—9反映了IIS 6.0與ASENET之間的橋接關(guān)系。 從另一個(gè)角度講,IIS運(yùn)行在非托管的環(huán)境中,而ASENET管道則是托管的,ISAPI還是連接非托管環(huán)境和托管環(huán)境的紐帶。IIS 5.x和IIS 6.0把兩個(gè)管道進(jìn)行隔離至少帶來了下面的一些局限與不足。 相同操作的重復(fù)執(zhí)行:IIS與ASP.NET之間具有一些重復(fù)的操作,比如身份驗(yàn)證。 動(dòng)態(tài)文件與靜態(tài)文件處理的不一致:因?yàn)橹挥谢贏SP.NET動(dòng)態(tài)文件(比如.aspx、.asmx、.svc等)的HTTP請(qǐng)求才能通過ASENET ISAPI進(jìn)入ASP.NET管道,而對(duì)于一些靜態(tài)文件(比如.html、.xml、.img等)的請(qǐng)求則由IIS直接響應(yīng),那么ASP.ENET管道中的一些功能將不能用于這些基于靜態(tài)文件的請(qǐng)求,比如我們希望通過Foms認(rèn)證應(yīng)用于基于圖片文件的請(qǐng)求就做不到。 IIS難以擴(kuò)展:對(duì)于IIS的擴(kuò)展基本上就體現(xiàn)在自定義ISAPI,但是對(duì)于大部分人來說,這不是一件容易的事情。因?yàn)镮SAPI是基于Win32的非托管的API,并非一種面向應(yīng)用的編程接口。通常我們希望的是諸如定義ASP.NET的HttpModule和HttpHandler一樣,通過托管代碼的方式來擴(kuò)展IIS。

編輯推薦

《ASP.NET MVC4框架揭秘》是讓處于ASP.NETMVC第一層次的讀者快速進(jìn)入第二和第三層次的書。ASP.NET MVC功能強(qiáng)大,它提供了一種全新的編程方式,使我們可以將MVC模式很自然地融入動(dòng)態(tài)網(wǎng)站的開發(fā)之中。由它帶來的對(duì)關(guān)注點(diǎn)清晰分離和對(duì)HTML的細(xì)粒度控制使我們真正體會(huì)到了敏捷開發(fā)的樂趣。借助于ASP.NET MVc提供的眾多特性,不但可以使我們?cè)趶?fù)雜應(yīng)用中靈活地采用TDD(測(cè)試驅(qū)動(dòng)開發(fā))的夢(mèng)想變成現(xiàn)實(shí),還能讓我們的應(yīng)用盡可能地?fù)肀ё钚碌腤eb標(biāo)準(zhǔn)。

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    ASP.NET MVC 4框架揭秘 PDF格式下載


用戶評(píng)論 (總計(jì)123條)

 
 

  •   很好的書!讓我對(duì)ASP.NET MVC有一個(gè)深刻和全面的認(rèn)識(shí)。這書適合有點(diǎn)基礎(chǔ)的人看,最好就有點(diǎn)MVC基礎(chǔ)吧!
  •   ASP**** MVC 4框架揭秘翻了一下,還不錯(cuò)
  •   花了半個(gè)多月看完整本書,覺得還不錯(cuò)。之前也買過一個(gè)Wrox的mvc3的書,對(duì)比之下,這本書給我的感覺是把整個(gè)asp**** mvc給拆開來講解,教我們框架的運(yùn)行原理(什么是?為什么?)。但建立框架之上的怎么去做這一點(diǎn)的內(nèi)容比較少(怎么做?),唯一覺得不足的就是這一點(diǎn),其他的都很滿意,值得推薦。
  •   學(xué)習(xí)MVC的好書,有助于更好的去理解ASP**** MVC思想,不錯(cuò),贊一個(gè)
  •   從原理的角度介紹asp。*** mvc,沒有基礎(chǔ)的先別買
  •   想了解asp**** mvc的朋友,可以看看,支持。--翁玉禮
  •   博客園大師Artech的書,從底層原理分析MVC。正在讀和學(xué)習(xí)中。
  •   正如作者說的,這不是一本MVC入門級(jí)科普教程,而是一本剖析原理、解析構(gòu)架、探尋模式的進(jìn)階性教材。MVC作為一個(gè)開源項(xiàng)目,它的體系構(gòu)架、實(shí)現(xiàn)方式本身就是一本活教材。
  •   大神,書有點(diǎn)難度.對(duì)MVC管道分析的很透徹.最后又一定Web開發(fā)基礎(chǔ)的人看看
  •   從博客園了解到的大牛,MVC國內(nèi)的經(jīng)典了。
  •   全面介紹MVC4框架,還有實(shí)例,謝謝作者。
  •   呵預(yù)想的一樣,適合有一定MVC開發(fā)經(jīng)驗(yàn)的程序員用來深入探討MVC
  •   項(xiàng)目開發(fā)中一直用著MVC,可是一直沒有系統(tǒng)的進(jìn)行理論學(xué)習(xí)~ 今天書本剛到,希望能通過這本書達(dá)到理論指導(dǎo)實(shí)踐的效果,對(duì)MVC能有更深層次的理解和學(xué)習(xí),書本質(zhì)量還行,跟預(yù)期的還是有點(diǎn)出入~ 不過送貨的速度很快 滿分啦~
  •   能好的幫助你理解MVC。查詢相關(guān)的特性應(yīng)用方式。
  •   第一章就講的很透徹,那個(gè)簡(jiǎn)單MVC原理的例子很好,對(duì)深入理解MVC機(jī)制十分有用。
  •   更多的講的是mvc的原理,對(duì)于架構(gòu)技術(shù)很有用。國內(nèi)資料也比較少的。
  •   書確實(shí)寫的不錯(cuò),作者延續(xù)了一慣的寫作風(fēng)格,庖丁解牛,一絲一縷分析的徹徹底底。但是這本書確實(shí)不是初學(xué)者看得懂的,要對(duì)架構(gòu)模式,和mvc的原理有基本的了解才可以沿著作者的思路閱讀下去,否則云里霧里。
  •   剛開始拿到書的第一感覺就是被坑了,感覺六十幾元買的書和地?cái)傎u的差不多的質(zhì)量,紙質(zhì)發(fā)黃。封面也是很薄的那種。而且書上有折橫。書的內(nèi)容在網(wǎng)上的pdf上看過,感覺還可以,這本屬于那種mvc進(jìn)階的書,不太適合初學(xué)者。
  •   很經(jīng)典的MVC4,分析底層的東東,贊
  •   講的很細(xì),幾乎涵蓋了MVC4的所有知識(shí)點(diǎn)
  •   工作上用到,必須得抓緊學(xué)了,以前沒有接觸過MVC4,希望這幾本書能給我啟發(fā)
  •   很不錯(cuò)的一本書,確實(shí)比較適合有一定mvc基礎(chǔ)的讀者看。
  •   需要一點(diǎn)mvc基礎(chǔ)知識(shí),寫的還是比較詳細(xì)易懂的。
  •   書的內(nèi)容很好,但是不適合新手,適合有MVC經(jīng)驗(yàn)的人,可以幫助你做知識(shí)梳理
  •   mvc一直要學(xué),就是感覺很難入手,靜不下心來學(xué)習(xí)
  •   關(guān)注市面上mvc系列的書好久了,只到這本書的面世我下手買。我一直很喜歡該作者的作品。
  •   可以好好學(xué)習(xí)一下mvc4了
  •   書大概看了一章,確實(shí)不是入門級(jí)別的書,最好是對(duì)mvc了解了再看這本書。
  •   最新的開發(fā)框架,講解比較深入易懂。封面設(shè)計(jì)非常棒。
  •   一本值得買的書,我購買了作者的《WCF全面解析》,感覺作者是一個(gè)一線技術(shù)人員
  •   支持,買了wcf全面解析。再來支持一下
  •   書質(zhì)量還不錯(cuò),希望是正版。學(xué)習(xí)一個(gè)框架,就應(yīng)該將其掌握透透徹徹,只會(huì)簡(jiǎn)單的使用,便不能發(fā)揮框架的效能。這本書相對(duì)來說深度還是可以的。
  •   老A的寫的書都是不錯(cuò)的,內(nèi)容還得好好研究研究。支持老A,部分建議已在博客園上互動(dòng)。
  •   買此書之前,手頭上已經(jīng)有了其它M-V-C-4書籍,也曾猶豫過是否要購買,因?yàn)閾?dān)心各書之間重復(fù)內(nèi)容太多。也看了評(píng)論:大多數(shù)是好評(píng),稱此書是值得放在手頭,了解M-V-C-4底層的好書;也有說作者內(nèi)容組織得不夠好;也有說作者的行文艱澀難懂,等等。書到手后,給我的感覺是作者正用心寫了,書不可能是完美的,就像做人一樣,但只要夠用心,就足夠了。我也發(fā)現(xiàn),針對(duì)某個(gè)知識(shí)點(diǎn),每個(gè)人的講法是不一樣的,但從多個(gè)角度理解同一個(gè)知識(shí)點(diǎn)讓自己受益匪淺。最近,也留意到本書作者和同類書的另外一個(gè)作者在微博上的一些爭(zhēng)論,我無法辯論是非。但就我個(gè)人而言,這兩本書我都買了,兩本書都給了我?guī)椭?。衷心希望在在IT界,不要出現(xiàn)“文人相輕”,作者和讀者共努力創(chuàng)造一種好的技術(shù)氛圍!
  •   書買來還沒看,不過看過作者的博客,作者的文章都很精彩,相信書也不錯(cuò),推薦
  •   不可多得的好書,寫的很深入,最后的api特別喜歡,國內(nèi)很少有這些資料,一般都是看英文版的,看得滲人
  •   說實(shí)在話,這本書不適合入門的人看,內(nèi)容方面很平實(shí),詳細(xì),費(fèi)話不多,這幾年來難得的好書.這里說的入門者,不單指**** 方面的入門者,還包括還在程序開發(fā)的入門者
  •   關(guān)于作者的博客我經(jīng)??矗瑑?nèi)容不說大家也知道,有本書主要方便查看
  •   的確是第一部,剖析的也很透徹,內(nèi)容比較新
  •   從原理入手,剖析原理與實(shí)現(xiàn),屬于基本功,不推薦立馬做出效果的人
  •   作者講解的比較深入,是本好書
  •   深入!
  •   第一次從當(dāng)當(dāng)購物、尤其是貨到付款相當(dāng)給力!
  •   講原理,不是應(yīng)用
  •   條理清晰,言簡(jiǎn)意駭。強(qiáng)烈推薦
  •   現(xiàn)在買書已經(jīng)很少**當(dāng)了,當(dāng)當(dāng)提供的服務(wù)太差勁了,書籍質(zhì)量也差勁,可能是印刷的質(zhì)量就這樣,但我收到的書邊部已經(jīng)臟了,后皮還被折了個(gè)印,而且還有圓珠筆墨,明顯的磕碰痕跡,明顯的二手書啊??!算了不值當(dāng)退了,反正只是需要內(nèi)容,但以后不會(huì)在當(dāng)當(dāng)買書了。
  •   信微軟得永生,信微軟得永生
  •   技術(shù)書籍。有待研究。
  •   還沒讀,但是很多人推薦
  •   第一次當(dāng)當(dāng)購書,很滿意。
  •   質(zhì)量很好,送貸也很快,由于是新技術(shù),內(nèi)容介紹還好。
  •   書很好,寫得有深度,看懂要點(diǎn)功底。
  •   這本書挺不錯(cuò)的,他主要是教人怎么去做,去思考問題
  •   三本都是相當(dāng)不錯(cuò)的書,值得推薦啊
  •   很受用 講的很詳細(xì) 強(qiáng)烈推薦
  •   國內(nèi)的好書,作者很不容易啊。
  •   書不錯(cuò),適合有一定基礎(chǔ)的讀者.
  •   很喜歡,適合有一定基礎(chǔ)的人,但是確實(shí)不錯(cuò)
  •   還沒讀,看提綱不錯(cuò)。準(zhǔn)備潛心研究一下。
  •   這本書適合有一定基礎(chǔ)的看,講得很好!不知為啥有點(diǎn)顯舊,如果嶄新就完美了。還是要5分吧。
  •   還行 挺基礎(chǔ)的 但是沒有光盤的
  •   書剛拿到,看了一點(diǎn),但需要一些基礎(chǔ)再看才更有針對(duì)性,書寫的還是不錯(cuò)的~
  •   書很好,我是初學(xué)者,不大看得懂,這本書適合有一定經(jīng)驗(yàn)的人看
  •   不是一般人能看懂的,留著以后看!
  •   速度挺快的,書已在手中,學(xué)習(xí)中
  •   還行吧,沒有期待中的好
  •   正在閱讀中,感覺挺好的
  •   真心不錯(cuò)~由淺入深
  •   寫的不錯(cuò),支持
  •   書,看著很不錯(cuò)~~
  •   看評(píng)論不錯(cuò) 在看
  •   書還沒有看了,書的質(zhì)量挺不錯(cuò)的。
  •   想換個(gè)飛觥獻(xiàn)斝你福建南紡地址
  •   非常犀利,看了個(gè)開頭,覺得挺不錯(cuò)
  •   不錯(cuò),書封面還可以,綠綠的,很不錯(cuò)
  •   買了之后就沒有翻過我會(huì)到處亂說么?
  •   應(yīng)該對(duì)我有提升,書質(zhì)量還不錯(cuò)
  •   挺好的,發(fā)貨速度也挺快。。。
  •   A大的書 期待已久 工作在用
  •   書挺好的,已經(jīng)是第2次買蔣金南的書了,還沒看完
  •   作為參考書還可以作為參考書還可以作為參考書還可以作為參考書還可以javascript:;
  •   適合從 熟練走向精通的 道路.這書不太適合初學(xué)人員
  •   這邊書看了很久,終于到手
  •   很好的書,講的很詳細(xì)。
  •   還沒看,慢慢啃吧
  •   送貨速度快。。書的質(zhì)量可以。
  •   說是還比較的有幫助。
  •   內(nèi)容很好,送貨也快。
  •   書很好,看得出作者很用心,源碼示例也很到位
  •   作者寫都不錯(cuò)啊,希望繼續(xù)有
  •   書很好 正在學(xué)習(xí) 發(fā)貨很快
  •   為公司買的,非常值得購買
  •   書不錯(cuò),剛剛收到,準(zhǔn)備吃好飯開看
  •   發(fā)貨比較快 比較滿意
  •   正在學(xué)習(xí)??雌饋碚娴暮懿诲e(cuò)。
  •   是一本不錯(cuò)的書,性價(jià)比很高!
  •   剛收到大概看了下還不錯(cuò),值得購買
  •   翻了幾頁,感覺蠻不錯(cuò)
  •   不錯(cuò) 寫的很好
  •   大概看了一下,還好
 

250萬本中文圖書簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7