新作《ASP.NET MVC 4架構揭秘》正式出版

來源:互聯網
上載者:User

本人曆時近1年寫的書《ASP.NET MVC 4架構揭秘》(電子工業出版社“博文視點”)於世界末日前得以出版,目前互動出版網已經開始接受預訂。本書不是一本介紹ASP.NET MVC的入門書籍,它針對最新版本的ASP.NET MVC 4,深入剖析底層架構從請求接收到響應回複的整個處理流程(包括URL路由、Controller的啟用、Model中繼資料的解析、Model的綁定、Model的驗證、Action的執行、View的呈現和ASP.NET Web API等),並在此基礎上指導讀者如何通過對ASP.NET MVC架構本身的擴充解決應用開發中的實際問題。

ASP.NET MVC是一個建立在ASP.NET平台上基於MVC模式的Web開發架構,它提供了一種與傳統Web Form完全不同的Web應用開發方式。ASP.NET Web Form借鑒了Windows Form基於控制項和事件註冊的編程模式,使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架構揭秘》不是一本ASP.NET MVC入門書籍,主要是因為本書在第一章並沒有提供一個“Hello World”執行個體,關注重點主要落在ASP.NET MVC架構本身的運行機制上面,但是並不是說本書的讀者需要預先對ASP.NET MVC具有多深入的認識才行。如果讀者對ASP.NET MVC基本的編程模式具有一定的瞭解,讀懂這本書是完全沒有問題的。對於從未接觸過ASP.NET MVC的.NET開發人員,可以通過官方網站(http://www.asp.net/mvc)來學習ASP.NET MVC。

目錄第1章  ASP.NET + MVC    1
1.1.    傳統MVC模式    2
1.1.1.    自治視圖    2
1.1.2.    什麼是 MVC模式?    2
1.2.    MVC的變體    4
1.2.1.    MVP    4
1.2.2.    Model 2    11
1.2.3.    ASP.NET MVC與Model 2    12
1.3.    IIS/ASP.NET管道    13
1.3.1.    IIS 5.x與ASP.NET    13
1.3.2.    IIS 6.0與ASP.NET    14
1.3.3.    IIS 7.0與ASP.NET    16
1.3.4.    ASP.NET管道    19
1.4.    ASP.NET MVC是如何啟動並執行?    23
1.4.1.    建立在“迷你版” ASP.NET MVC上的Web應用    23
1.4.2.    URL路由    25
1.4.3.    Controller的啟用    29
1.4.4.    Action的執行    32
本章小結    36
第2章 URL路由    37
2.1.    ASP.NET路由系統    38
2.1.1.    請求URL與物理檔案的分離    38
2.1.2.    執行個體示範:通過URL路由實現請求地址與.aspx頁面的映射(S201)    38
2.1.3.    Route與RouteTable    41
2.1.4.    路由映射    46
2.1.5.    根據路由規則產生URL    54
2.2.    ASP.NET MVC擴充    55
2.2.1.    路由映射    55
2.2.2.    執行個體示範:註冊路由映射與查看路由資訊(S208)    57
2.2.3.    預設URL參數    59
2.2.4.    基於Area的路由映射    60
2.2.5.    連結和URL的產生    65
2.3.    動態HttpHandler映射    70
2.3.1.    UrlRoutingModule    71
2.3.2.    PageRouteHandler 與MvcRouteHandler    72
2.3.3.    ASP.NET路由系統擴充    73
本章小結    77
第3章 Controller的啟用    78
3.1.    總體設計    79
3.1.1.    Controller    79
3.1.2.    ControllerFactory    83
3.1.3.    ControllerBuilder    85
3.1.4.    Controller的啟用與URL路由    90
3.2.    預設實現    92
3.2.1.    Controller類型的解析    92
3.2.2.    Controller類型的緩衝    95
3.2.3.    Controller的釋放和工作階段狀態行為的控制    96
3.3.    IoC的應用    97
3.3.1.    從Unity來認識IoC    98
3.3.2.    Controller與Model的分離    100
3.3.3.    基於IoC的ControllerFactory    101
3.3.4.    基於IoC的ControllerActivator    106
3.3.5.    基於IoC的DependencyResolver    107
本章小結    110
第4章 Model中繼資料的解析    111
4.1.    Model中繼資料及其定製    112
4.1.1.    Model中繼資料層次化結構    112
4.1.2.    基本Model中繼資料資訊    113
4.1.3.    Model中繼資料的定製    116
4.1.4.    IMetadataAware介面    128
4.2.    Model中繼資料與Model模板    132
4.2.1.    執行個體示範:通過模板將布爾值顯示為RadioButton(S409)    133
4.2.2.    預定義模板    134
4.2.3.    DataTypeName與模板名稱    142
4.2.4.    模板的擷取與執行    145
4.2.5.    執行個體示範:通過定製Model中繼資料和自訂模板實現預定義列表的呈現(S412)    148
4.3.    Model中繼資料的提供機制    155
4.3.1.    再談ModelMetadata    156
4.3.2.    ModelMetadataProvider    159
4.3.3.    Model中繼資料提供系統的擴充    163
本章小結    164
第5章  Model綁定    166
5.1.    ControllerDescriptor、ActionDescriptor與ParameterDescriptor    167
5.1.1.    ControllerDescriptor    167
5.1.2.    ActionDescriptor    171
5.1.3.    ParameterDescriptor    175
5.2.    ValueProvider    177
5.2.1.    NameValueCollectionValueProvider    178
5.2.2.    DictionaryValueProvider    184
5.2.3.    ValueProviderFactory    190
5.2.4.    ValueProviderFactories    191
5.3.    ModelBinder    194
5.3.1.    ModelBinder與ModelBinderProvider    194
5.3.2.    ModelState與Model綁定    201
5.3.3.    ModelBindingContext的建立    205
5.4.    Model綁定的預設實現    206
5.4.1.    簡單類型    206
5.4.2.    複雜類型    210
5.4.3.    數組    215
5.4.4.    集合    222
5.4.5.    字典    224
本章小結    228
第6章 Model的驗證    229
6.1.    ModelValidator與ModelValidatorProvider    230
6.1.1.    ModelValidator    230
6.1.2.    ModelValidatorProvider    233
6.1.3.    ModelValidatorProviders    237
6.2.    Model綁定與驗證    242
6.2.1.    ModelState    242
6.2.2.    驗證訊息的呈現    245
6.2.3.    Model綁定中的驗證    251
6.3.    基於資料註解特性的Model驗證    255
6.3.1.    ValidationAttribute特性    255
6.3.2.    DataAnnotationsModelValidator    261
6.3.3.    DataAnnotationsModelValidatorProvider    263
6.3.4.    將ValidationAttribute應用到參數上    266
6.3.5.    一種Model類型,多種驗證規則    271
6.4.    用戶端驗證    277
6.4.1.    jQuery驗證    277
6.4.2.    基於jQuery的Model驗證    281
6.4.3.    自訂驗證    284
本章小結    287
第7章 Action的執行    288
7.1.    非同步Action的定義    289
7.1.1.    基於線程池的請求處理機制    289
7.1.2.    兩種非同步Action方法的定義    290
7.1.3.    AsyncManager    292
7.2.    Action方法的執行    297
7.2.1.    MvcHandler對請求的處理    297
7.2.2.    Controller的執行    297
7.2.3.    ActionInvoker的執行    298
7.2.4.    ControllerDescriptor的同步與非同步    302
7.2.5.    ActionDescriptor的執行    305
7.3.    篩選器的執行    311
7.3.1.    Filter及其提供機制    311
7.3.2.    AuthorizationFilter    319
7.3.3.    ActionFilter    328
7.3.4.    ExceptionFilter    333
7.3.5.    執行個體示範:整合EntLib實現自動化異常處理(S713、S714、S715)    335
7.3.6.    ResultFilter    348
本章小結    349
第8章 View的呈現    350
8.1.    ActionResult    351
8.1.1.    EmptyResult    351
8.1.2.    ContentResult    352
8.1.3.    FileResult    357
8.1.4.    JavaScriptResult    361
8.1.5.    JsonResult    364
8.1.6.    HttpStatusCodeResult    366
8.1.7.    RedirectResult/RedirectToRouteResult    367
8.2.    ViewResult與ViewEngine    369
8.2.1.    View引擎中的View    369
8.2.2.    ViewEngine    370
8.2.3.    ViewResult的執行    373
8.3.    Razor引擎    379
8.3.1.    View的編譯原理    380
8.3.2.    WebViewPage與WebViewPage<TModel>    384
8.3.3.    RazorView    387
8.3.4.    RazorViewEngine    395
本章小結    399
第9章 ASP.NET Web API    400
9.1.    Web、REST與Web API    401
9.1.1.    Web如此簡單    401
9.1.2.    REST是什嗎?    402
9.1.3.    ASP.NET Web API    404
9.2.    服務端管道    412
9.2.1.    ASP.NET Web API管道式設計    413
9.2.2.    HttpMessageHandler    414
9.2.3.    HttpServer    417
9.2.4.    執行個體示範:自訂HttpMessageHandler實現HTTP方法重寫(S903)    422
9.3.    HttpControllerDispatcher    423
9.3.1.    HttpController的啟用    424
9.3.2.    HttpController的執行    435
9.3.3.    Action的選擇    436
9.3.4.    Model中繼資料的解析    442
9.3.5.    Action參數綁定    444
9.3.6.    Model驗證    456
9.3.7.    Action的執行與結果的響應    460
9.4.    Web API的調用和自我寄宿    463
9.4.1.    HttpClient    463
9.4.2.    HttpSelfHostServer    468
本章小結    471
第10章  案例實踐    473
10.1.    功能性簡介    474
10.1.1.    商品列表的呈現    474
10.1.2.    定購商品    475
10.1.3.    登入與錯誤頁面    476
10.2.    設計概述    477
10.2.1.    Controller-Service-Repository    477
10.2.2.    IoC的應用    481
10.2.3.    AOP的應用    483
10.2.4.    異常處理    489
10.3.    編程實現    490
10.3.1.    資料表的建立    490
10.3.2.    Repository    491
10.3.3.    Service    495
10.3.4.    路由註冊和布局    498
10.3.5.    ProductController    500
10.3.6.    OrderController    507
10.3.7.    AccountController    512
本章小結    515
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.