《ASP.NET MVC 4 實戰》 - 學習筆記

《ASP.NET MVC 4 實戰》設計模式

========== ========== ==========
[做者] (美) Jeffrey Palermo (美) Jimmy Bogard (美) Eric Hexter (美) Matthew Hinze (英) Jeremy Skinner
[譯者] (中) 徐燕萍 李萍 林逸
[出版] 人民郵電出版社
[版次] 2014年05月 第1版
[印次] 2014年05月 第1次 印刷
[訂價] 69.00元
========== ========== ==========瀏覽器

【第01章】 安全

(P003) 服務器

Web 本質上是無狀態的。架構

【第02章】 app

(P015) 框架

框架是如何知道將 URL 映射到一個特定的控制器動做的?答案就在 Global.asax 文件的 RegisterRoutes 方法中。函數

Web API 是微軟隨 ASP.NET MVC 4 一塊兒發佈的一個 Web 服務框架。工具

(P016) 佈局

ViewBag 本質上是一個字典 —— 它提供了一種存儲數據的方式,這些數據隨後可以在視圖中進行訪問。

(P017)

@ 前綴表示 HTML 與代碼之間的轉換。

【第03章】

(P032)

視圖的職責看似很簡單。它的生存目標是取得一個送給它的模型,並用這個模型來渲染內容。因爲控制器及相關服務已經執行了全部業務邏輯,並將結果包裝成一個模型對象,故視圖只須要知道如何取得這一模型,並把它轉換成 HTML 。

(P033)

能夠調用 View 方法的第二個重載版原本接受一個明確的視圖名。

(P034)

可以將數據傳遞給視圖的三種不一樣方式,即便用 ViewDataDictionary (視圖數據字典) 、 ViewBag (視圖包) ,以及強類型視圖。

(P035)

只要從字典接受數據,就必須執行類型轉換。

(P036)

爲了使用強類型視圖,首先必須確保控制器動做適當地設置了 ViewData.Model 。

(P037)

Razor 的多行代碼語句是以 @ 後跟開花括號字符開始的 : @{ 。

(P038)

數據在渲染到屏幕以前是默認自動編碼的。若要顯示未編碼信息,可使用 Html.Raw 方法來強迫渲染原始文本。

(P043)

對於簡單的顯示模型和編譯器模型, EditorForModel 和 DisplayForModel 方法可能就夠了。

【第04章】

(P051)

IController 接口定義了控制器最基本的元素 —— 一個單一的 Execute 方法,它接收一個 RequestContext 對象。

ControllerBase 類直接實現 IController ,但只包含了咱們曾考察的幾個特性所必需的基礎架構。

(P052)

Controller 類繼承於 ControllerBase ,所以它包含了 ControllerBase 所定義的屬性 (如 ViewData) ,但它還增長了大量的附加功能。

(P053)

更好的作法是依靠視圖,以使表現邏輯與控制器分離開來。這更易於修改應用程序的用戶界面,而無需改變控制器代碼。

動做方法選擇器是一種註解屬性,它能夠用來對動做方法進行修飾或標註。

選擇器的名稱老是 XXXAttribute 形式的,但在使用時,須要將 Attribute 部分去掉。

(P057)

請記住,調用 ModelState.IsValid 並未真正執行驗證,它只是檢查驗證是否已經成功或失敗,驗證自己是在調用控制器動做以前發生的。

(P060)

每一個測試都有三個階段 —— Arrange (準備) 、 Act (動做) 、 Assert (斷言) 。

【第05章】

(P067)

視圖模型的目的十分簡單 —— 它是一個專門爲用於視圖而設計的模型。它提供了一個創建在域模型之上的簡化接口,以保持視圖決策最小化。

(P068)

爲了使視圖儘量是可維護的,它應該儘量簡化 —— 複雜的循環和計算邏輯應該在更高層執行,視圖惟一應該作的只是顯示這種計算的結果。

(P070)

控制器與視圖共享了一個 ViewDataDictionary 類型的對象,其名稱爲 ViewData 。

【第06章】

(P076)

服務器是保護數據、防止劣質輸入的最後一道防線。

【第07章】

(P088)

如今有許多流行的 JavaScript 庫 (包括 jQuery 、 Prototype 、 MooTools 和 Dojo 等) ,全部這些都是爲了讓 JavaScript 更易於使用,並輔助跨瀏覽器的 JavaScript 功能標準化。

在使用 jQuery 時,主要是使用 jQuery 函數 (基本上是使用別名符號 「$」) ,它可以根據其上下文執行各類不一樣的操做。

當把一個字符串傳遞給 「$」 函數時, jQuery 會將其視爲 CSS 的選擇器,並嘗試在頁面中找出與該選擇器匹配的任何元素。

「#」 表示元素的 id 標籤屬性。

「.」 表示元素的 class 標籤屬性。

空格表示子元素。

(P089)

最好將全部事件綁定和 jQuery 代碼都包含到 ready 處理程序之中。

(P092)

只有啓用了 JavaScript 的瀏覽器才能向服務器發送 Ajax 請求,不然只能發送常規的 HTTP 請求。

(P095)

因爲 JavaScript 是將函數做爲對象來使用的,因此 this 關鍵字的含義並不老是顯而易見的,由於它是上下文敏感的。

(P098)

對 BeginForm 的調用會渲染表單的開標籤,而 using 語句的閉括號會渲染 <form /> 的閉標籤。

【第08章】

(P113)

認證確保用戶已提供了適當的訪問系統所需的憑據。一旦用戶登陸,那麼他們即是已認證的了。

受權發生在認證以後,且包括對給定用戶是否有權對系統作某事的決策。當用戶訪問一個其餘人不可用的資源時,必須獲得明確的受權。

(P118)

決不相信輸入。決不、永遠、永遠也別指望輸入是安全的。不管是人類用戶或是機器,危險的輸入都是陷入 XSS 攻擊的根源。

HTML 編碼是將 HTML 轉換成文本,這種 HTML 會被瀏覽器解釋成渲染時再也不解釋的符號。

【第09章】

(P129)

經過使用路由, URL 徹底可以與底層實現解耦。

(P131)

對於 URL ,大小是有關係的,並且是越小越好。

(P136)

路由處理程序是實現 IRouteHandler 接口的類,並負責構造適當的 HTTP 處理程序,以便爲所選路由處理請求。

【第10章】

(P157)

爲了建立一個類型的實例,你必須經過開泛型類型建立一個閉泛型類型。

【第11章】

(P173)

利用 AutoMapper 讓開發人員可以只寫一次代碼,而後只要用一個聲明,就能夠在不少地方運用它。

【第12章】

(P174)

注重保持控制器輕量級是重要的。

(P175)

減輕控制器負擔的快速方式是去除其責任。

(P177)

重構不會讓事情簡單不少,但一個簡單的更改可能會明顯下降圈複雜度,而且可以減輕與複雜控制器關聯在一塊兒的測試努力和維護負擔。

【第13章】

(P193)

T4MVC 是一個強大的工具,它可以消除 ASP.NET MVC 應用程序中的許多魔術字符串激增問題。

【第14章】

(P194)

Nuget 是隨 MVC 一塊兒安裝的,並使得 MVC 開發更容易。

【第15章】

(P208)

NHibernate 要求至少有一個映射。

(P209)

Log4Net.config 文件含有 log4net 的配置信息,該信息普遍適用於任何類型的應用程序。

【第16章】

(P222)

框架包含一個 ControllerBase 類,它爲管理 ViewData 和 TempData 提供了最基本的屬性。

(P223)

動做是控制各個服務器請求主邏輯的方法,但並非一個控制器類的全部方法都有資格做爲一個動做。

(P230)

動做有助於你輕鬆地講單個控制器分解成一些基本功能,而動做過濾器則爲在動做執行以前或以後插入一些代碼提供了掛接手段。動做選擇器爲動做調用器提供了應選擇哪個動做執行的線索,而動做結果有助於封裝重複的渲染邏輯。

【第17章】

(P233)

佈局也能夠相互嵌套,所以,能夠爲整個網站的通用模板定義一個泛型網站級佈局。更具體的佈局而後能夠定義更具體的模板和新的內容塊。

當多個視圖共享公用內容時,運用佈局是最好的方式。而後能夠把 (視圖) 內容推送給佈局,每一個視圖只須要提供本身的內容片段。

(P234)

渲染分部的機制很簡單,能夠在一個父視圖中使用 RenderPartial 方法或 Partial 方法。

即便不與其餘視圖進行內容共享,分部也能夠用來簡化和減小視圖中的標記量。

(P235)

Html.RenderPartial() 是一個無返回方法,它當即將分部渲染到響應流。而 Html.Partial() 返回一個字符串被當即渲染到視圖。

在 Razor 中, Html.RenderPartial 必須放在一個代碼塊中。

(P237)

常規控制器動做與子動做之間的惟一區別就是這個 ChildActionOnly 註解屬性。

【第18章】

(P247)

做爲開發者,常常容易受到技術細節、設計模式,以及創建優雅的可維護體系結構等方面的困擾,而忽略關注事情的真正本質 —— 解決用戶的問題。若是應用程序不能實際工做,即便有最可維護的代碼,對用戶也是毫無幫助的。

(P248)

知道什麼時候或何處才適合使用一種技術或工具,與知道如何使用這一技術是同等重要的。

(P251)

DI 容器本質上是一個智能工廠。像其餘工廠類同樣,其職責是建立對象的實例,但它也知道如何實例化對象的依賴性。

(P253)

任何對基礎結構的某種外部依賴性均可以用一種很好的候選辦法來實現,這種辦法就是將這種依賴性提取出來,造成一個由控制器使用的接口。

【第19章】

(P261)

Nuget 包是一個簡單的 zip 文件,它含有一個清單和須要安裝到 Visual Studio 項目中的文件。它還包含了三個 PowerShell 腳本,用於在安裝、卸載和項目啓動期間實現自動化。Nuget 包是經過其 ID 進行標識的,這是一個用以惟一標識包及其版本號的字符串。清單文件含有如下方面的信息 : 安裝期間須要添加到項目的文件、依賴包列表,以及包括做者、項目網站 URL 和許可 URL 等信息的附加元數據。

相關文章
相關標籤/搜索