TOP
0
0
購書領優惠,滿額享折扣!
ASP.NET MVC 4框架揭秘(簡體書)
滿額折

ASP.NET MVC 4框架揭秘(簡體書)

商品資訊

人民幣定價:89 元
定價
:NT$ 534 元
優惠價
87465
海外經銷商無庫存,到貨日平均30天至45天
下單可得紅利積點:13 點
商品簡介
作者簡介
名人/編輯推薦
目次
相關商品

商品簡介

針對最新版本的ASP.NET MVC 4,深入剖析底層框架從請求接收到響應回復的整個處理流程(包括URL路由、Controller的激活、Model元數據的解析、Model的綁定、Model的驗證、Action的執行、View的呈現和ASP.NET Web API等),並在此基礎上指導讀者如何通過對ASP.NET MVC框架本身的擴展解決應用開發中的實際問題。

作者簡介

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

名人/編輯推薦

蔣金楠編著的這本《ASP.NET MVC 4框架揭秘》是讓處于ASP.NET MVC第一層次的讀者快速進入第二和第三層次的書。全書共分10章,內容包括:ASP.NET + MVC,URL路由,Controller的激活,Model元數據的解析,Model的綁定,Model的驗證,Action的執行,View的呈現,ASP.NET Web API,案例實踐。

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

目次

第1章ASP.NET + MVC1.1傳統MVC模式1.1.1自治視圖1.1.2什麼是MVC模式1.2MVC的變體1.2.1MVP1.2.2Model 21.2.3ASP.NETMVC與Model 21.3IIS/ASP.NET管道1.3.1IIS 5.x與ASP.NET1.3.2IIS 6.0與ASP.NET1.3.3IIS 7.0與ASP.NET1.3.4ASP.NET管道1.4ASP.NET MVC是如何運行的1.4.1建立在“迷你版”ASP.NET MVC上的Web應用1.4.2URL路由1.4.3Controller的激活1.4.4Action的執行本章小結第2章URL路由2.1ASP.NET路由系統2.1.1請求URL與物理文件的分離2.1.2實例演示:通過URL路由實現請求地址與.aspx頁面的映射(S201)2.1.3Route與RouteTable2.1.4路由映射2.1.5根據路由規則生成URL2.2ASP.NET MVC擴展2.2.1路由映射2.2.2實例演示:註冊路由映射與查看路由信息(S208)2.2.3缺省URL參數2.2.4基於Area的路由映射2.2.5鏈接和URL的生成2.3動態HttpHandler映射2.3.1UrlRoutingModule2.3.2PageRouteHandler與MvcRouteHandler2.3.3ASP.NET路由系統擴展本章小結第3章Controller的激活3.1總體設計3.1.1Controller3.1.2ControllerFactory3.1.3ControllerBuilder3.1.4Controller的激活與URL路由3.2默認實現3.2.1Controller類型的解析3.2.2Controller類型的緩存3.2.3Controller的釋放和會話狀態行為的控制3.3IoC的應用3.3.1從Unity來認識IoC3.3.2Controller與Model的分離3.3.3基於IoC的ControllerFactory3.3.4基於IoC的ControllerActivator3.3.5基於IoC的DependencyResolver本章小結第4章Model元數據的解析4.1Model元數據及其定制4.1.1Model元數據層次化結構4.1.2基本Model元數據信息4.1.3Model元數據的定制4.1.4IMetadataAware接口4.2Model元數據與Model模板4.2.1實例演示:通過模板將布爾值顯示為RadioButton(S409)4.2.2預定義模板4.2.3DataTypeName與模板名稱4.2.4模板的獲取與執行4.2.5實例演示:通過定制Model元數據和自定義模板 實現預定義列表的呈現(S412)4.3Model元數據的提供機制4.3.1再談ModelMetadata4.3.2ModelMetadataProvider4.3.3Model元數據提供系統的擴展本章小結第5章Model的綁定5.1ControllerDescriptor、ActionDescriptor與ParameterDescriptor5.1.1ControllerDescriptor5.1.2ActionDescriptor5.1.3ParameterDescriptor5.2ValueProvider5.2.1NameValueCollectionValueProvider5.2.2DictionaryValueProvider5.2.3ValueProviderFactory5.2.4ValueProviderFactories5.3ModelBinder5.3.1ModelBinder與ModelBinderProvider5.3.2ModelState與Model綁定5.3.3ModelBindingContext的創建5.4Model綁定的默認實現5.4.1簡單類型5.4.2複雜類型5.4.3數組5.4.4集合5.4.5字典本章小結第6章Model的驗證6.1ModelValidator與ModelValidatorProvider6.1.1ModelValidator6.1.2ModelValidatorProvider6.1.3ModelValidatorProviders6.2Model綁定與驗證6.2.1ModelState6.2.2驗證消息的呈現6.2.3Model綁定中的驗證6.3基於數據注解特性的Model驗證6.3.1ValidationAttribute特性6.3.2DataAnnotationsModelValidator6.3.3DataAnnotationsModelValidatorProvider6.3.4將ValidationAttribute應用到參數上6.3.5一種Model類型,多種驗證規則6.4客戶端驗證6.4.1jQuery驗證6.4.2基於jQuery的Model驗證6.4.3自定義驗證本章小結第7章Action的執行7.1異步Action的定義7.1.1基於線程池的請求處理機制7.1.2兩種異步Action方法的定義7.1.3AsyncManager7.2Action方法的執行7.2.1MvcHandler對請求的處理7.2.2Controller的執行7.2.3ActionInvoker的執行7.2.4ControllerDescriptor的同步與異步7.2.5ActionDescriptor的執行7.3篩選器的執行7.3.1Filter及其提供機制7.3.2AuthorizationFilter7.3.3ActionFilter7.3.4ExceptionFilter7.3.5實例演示:集成EntLib實現自動化異常處理(S713, S714, S715)7.3.6ResultFilter本章小結第8章View的呈現8.1ActionResult8.1.1EmptyResult8.1.2ContentResult8.1.3FileResult8.1.4JavaScriptResult8.1.5JsonResult8.1.6HttpStatusCodeResult8.1.7RedirectResult/RedirectToRouteResult8.2ViewResult與ViewEngine8.2.1View引擎中的View8.2.2ViewEngine8.2.3ViewResult的執行8.3Razor引擎8.3.1View的編譯原理8.3.2WebViewPage與WebViewPage8.3.3RazorView8.3.4RazorViewEngine本章小結第9章ASP.NET Web API9.1Web、REST與Web API9.1.1Web如此簡單9.1.2REST是什麼9.1.3ASP.NET Web API9.2服務端管道9.2.1ASP.NET Web API管道式設計9.2.2HttpMessageHandler9.2.3HttpServer9.2.4實例演示:自定義HttpMessageHandler實現HTTP方法重寫(S903)9.3HttpControllerDispatcher9.3.1HttpController的激活9.3.2HttpController的執行9.3.3Action的選擇9.3.4Model元數據的解析9.3.5Action參數綁定9.3.6Model驗證9.3.7Action的執行與結果的響應9.4Web API的調用和自我寄宿9.4.1HttpClient9.4.2HttpSelfHostServer本章小結第10章案例實踐10.1功能性簡介10.1.1商品列表的呈現10.1.2定購商品10.1.3登錄與錯誤頁面10.2設計概述10.2.1Controller-Service-Repository10.2.2IoC的應用10.2.3AOP的應用10.2.4異常處理10.3編程實現10.3.1數據表的創建10.3.2Repository10.3.3Service10.3.4路由註冊和佈局10.3.5ProductController10.3.6OrderController10.3.7AccountController本章小結附錄A實例列表

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區