正所謂好記性不如爛筆頭,尤爲是技術類書籍在閱讀後,時間久了必定會忘記。而從新翻閱整本書也較爲低效,遂以博客記錄閱讀摘要以供往後查閱。本系列文章均摘要自 Wrox 紅皮書【ASP.NET MVC 4 高級編程(第4版)】,喜歡詳細瞭解的碼農兄弟也能夠自行購買。編程
MVC 模式簡介
MVC 將應用程序的用戶界面(User Interface,UI)分爲三個主要部分:瀏覽器
- 模型:描述了要處理的數據以及修改和操做數據的業務規則。
- 視圖:應用程序用戶界面的呈現方式。
- 控制器:一組類,處理來自用戶、整個應用程序流的通訊。
MVC 是一種結構模式,ASP.NET MVC 採用了大部分基於 MVC 的 Web 框架所使用的一些基本規則:安全
- 約定優於配置
- 不重複(DRY原則,Don't Repeat Yourself)
- 儘可能保持可插拔性(pluggability)
Razor 視圖引擎
Razor 簡潔、富有表現力、靈活。書中有一句總結較爲經典:我一直在尋找 Razor 的語法規則,直到有人告訴我不要再想了,直接輸入「@」符號就能夠開始編寫代碼了,我才意識到原來 Razor 本無規則。服務器
ASP.NET Web API
它是一個提供了 ASP.NET MVC 開發風格的框架,專門用來編寫 HTTP 服務。下面是一些相似 MVC 的 Web API 功能,但只適用於 HTTP 服務域:cookie
- 路由:ASP.NET Web API 使用一樣的路由系統,將 URL 映射到控制器操做。它按照約定將 HTTP 動詞映射到操做,從而實現將路由融入 HTTP 服務上下文,使得代碼更易於閱讀,也鼓勵了 RESTful 服務設計。
- 模型綁定和驗證:和 MVC 簡化映射輸入值(表單域、cookies、URL參數等)到模型值的過程同樣,ASP.NET Web API 自動把 HTTP請求值映射到模型。
- 過濾器:MVC 使用過濾器以便經過特性向操做添加行爲。例如,向某個 MVC 操做添加 [Authorize] 特性會阻止匿名用戶訪問,匿名用戶將被重定向到 Login 頁面。
- 基架:也擁有 ASP.NET MVC 基架。
- 簡易的單元測試:和 MVC 很像,ASP.NET Web API 創建在依賴注入和避免全局狀態使用的概念之上。
此外,ASP.NET Web API 專門爲 HTTP 服務的開發,添加了一些新的概念和功能:框架
- HTTP 編程模型:爲了更好的處理 HTTP 請求和響應,Web API 開發經驗獲得優化,提供了一個強類型的 HTTP 對象模型、HTTP 狀態碼和容易訪問的 headers等。
- 基於 HTTP 動詞的動做調度:MVC 根據操做方法的名稱來調度,而 Web API 則根據 HTTP 動詞自動調度操做方法。例如,一個 GET 請求會被自動調度到一個名爲 GetItem 的控制器操做。
- 內容協商:瀏覽器或其餘 HTTP 客戶端給出它們的響應格式優先級,而服務器用它支持的首選格式作出響應。這樣,咱們的控制器就能提供 XML、JSON 或其它內容來響應客戶端最想要的格式。
- 基於代碼的配置:服務配置是複雜的。WCF 採用冗長複雜的配置文件來完成配置,而 Web API 徹底經過代碼配置。
其餘功能
經過代碼進行的額外功能邏輯配置正開始集中到 Global.asax 中的 Application_Start 方法中,慶幸的是 ASP.NET MVC 中,這些配置已經轉移到 App_Start 目錄下的靜態類中:單元測試
- AythConfig.cs:配置安全設置,其中包括站點的 OAuth 登陸。
- BundleConfig.cs:註冊捆綁微小系統。默認添加一些捆綁,包括 jQuery、jQueryUI、jQuery 驗證、Mondernizr 和默認的 CSS 引用。
- FilterConfig.cs:用來註冊全局 MVC 過濾器!儘管只默認註冊了一個 HandleErrorAttribute,但這裏絕對是註冊其它過濾器的好地方。
- RouteConfig.cs:存放 MVC 配置語句、路由配置的鼻祖。
- WebApiConfig.cs:用來註冊 Web API 路由,以及設置任何其餘 Web API 配置設置。