2010年發行ASP.NET MVC 2.0版,2011年發行ASP.NET MVC 3.0版,2012年發行ASP.NET MVC 4.0版
MVC3 需要.net framework 4.0 版本.
支援多檢視引擎
在 ASP.NET MVC3 中,增加檢視的對話方塊中允許你選擇你希望的檢視引擎,在新建專案對話方塊中,你可以指定專案預設的檢視引擎,可以選擇 WebForm,Razor,或者開源的檢視引擎,例如:Spark, NHaml, 或者 NDjango.控制器的改進
全域性的 Action 過濾器
有的時候你希望能夠在在一個 Action 方法執行之前或者執行之後執行一些處理邏輯,在 ASP.NET MVC2 中,提供了 Action 過濾器,允許對特定控制器的 Action 方法進行處理,實際上,有時候你希望對所有的 Action 都進行類似的處理,MVC3 允許你將過濾器加入到 GlobalFilters 集合中來建立全域性的過濾器.新的 ViewBag 屬性
MVC2 中的控制器支援 ViewData 屬性,允許通過後繫結的字典將資料傳送給檢視模板,在 MVC3 中,你可以通過 ViewBag 來更加簡單的完成。例如,對於 ViewData["Message"] = "text",你可以通過 ViewBag.Message = "text" 來完成。你不需要通過類來定義任何強型別的屬性,因為這是動態屬性,在內部,ViewBag 屬性以名-值對的形式儲存在 ViewData 字典中。注意,在許多預釋出版本中,這個屬性被稱為 ViewModel。新的 ActionResult 型別
下面的 ActionResult 型別在 MVC3 中是新增的或者被擴充套件的。JavaScript 和 Ajax 改進
預設情況下,在 MVC3 中,Ajax 和驗證使用不引人注目的 unobtrusive 的 JavaScript 方式。unobtrusive 不會在 HTML 中插入行內的 JavaScript ,這使得 HTML 更加精簡和更少干擾,也使得更加容易被替換和定製 JavaScript 庫,在 MVC3 中,驗證助手預設使用 jQuery.Validate 外掛完成,如果你希望使用 MVC2 的行為,你可以在 web.config 中通過配置來關閉 unobtrusive .預設啟用了客戶端驗證
在早先版本的 MVC 中,你需要在檢視中顯式呼叫 Html.EnableClientValidation 方法來啟用客戶端驗證。在 MVC3 中,已經不再需要了,因為預設就會啟用客戶端驗證。可以在 web.config 中關閉。為了使得客戶端驗證工作,你仍然需要在網站中加入對 jQuery 和 jQuery.Validation 庫的引用,你可以在自己的網站中提供,或者使用 Microsoft 或者 Google 的 CDN 伺服器。
遠端驗證
ASP.NET 3 通過一個新的標籤 RemoteAttribute 對 jQuery Validation 外掛的遠端驗證提供支援。這允許客戶端的驗證庫自動呼叫一個你定義在伺服器上的自定義的方法來完成只能在伺服器上完成的驗證邏輯。在下面的例子中,Remote 標籤指定了通過一個定義在 UsersController 中名為 UserNameAvailable 的方法來驗證使用者名稱欄位。
- Razor 的語法簡單且清晰,只需要最小化的輸入
- Razor 容易學習,語法類似於 C# 和 VB
- Visual Studio 對於 Razor 提供了智慧提示和語法著色
- Razor 檢視不需要允許程式或者啟動 Web 伺服器就可以進行測試
- @model 用來指定傳到檢視的 Model 型別
- @* * 註釋語法
- 對於整個站點可以一次性設定預設專案,例如佈局。
- Html.Raw 方法提供了沒有進行 HTML 編碼的輸出
- 支援在多個檢視之間共享程式碼 ( _viewstart.cshtml 或者 _viewstart.vbhtml )
- Chart. 生成圖表
- WebGrid, 生成資料表格,支援完整的分頁和排序
- Crypto,使用 Hash 演算法來建立 Hash 和加鹽的口令
- WebImage, 生成圖片
- WebMail, 傳送電子郵件
- HttpNotFoundResult. 向客戶端返回 404 HTTP 狀態.
- RedirectResult. 基於一個布林型的引數,返回一個臨時的重定向 (HTTP 302 status code) 或者持久的重定向 (HTTP 301 status code), 結合這個改進,, Controller 提供了三個方法來支援持久的重定向: RedirectPermanent, RedirectToRoutePermanent, 和 RedirectToActionPermanent. 這些方法返回一個 Permanent 屬性為真的 RedirectResult 物件例項。
- HttpStatusCodeResult. 返回使用者指定的 HTTP 狀態碼。
JSON 繫結支援
ASP.NET MVC3 包含內建的 JSON 繫結支援,允許 Action 方法接收 JSON 編碼的資料並且模型化為 Action 的引數。這個能力經常被用於客戶端的模板和資料繫結中。客戶端模板允許你通過客戶端的模板來格式化和顯示一個或者多個資料,MVC3 允許你簡單的連線客戶端模板和伺服器端的 Action 方法,通過 JSON 來傳送和接收資料,更多的資訊參考:Scott Guthrie's MVC 3 Preview blog post.ValidationAttribute 類
在 .NET Framework4 中被改進 的ValidationAttribute 類支援新的 IsValid 過載,提供關於當前驗證上下文的更多資訊,例如什麼物件被驗證了。這允許你基於 Model 的其他屬性來驗證當前值,例如,新的 CompareAttribute 就允許你比較 Model 的兩個屬性的值,在下面的例子中,ComparePassword 屬性必須匹配 Password 欄位來同通過驗證。Model 驗證的改進
DataAnnotations 後設資料標籤
ASP.NET MVC3 支援 DataAnnotations 後設資料標籤,例如:DisplayAttribute。
- public class User
- {
- [Required]
- public string Password { get; set; }
- [Required, Compare("Password")]
- public string ComparePassword { get; set; }
- }
MVC4 在vs2012以上版本中建立的時候,預設是 .net framework4.5 ,但是我們是可以修改為 .net 4.0的 (也就是說在2003的伺服器上,還是可以上 mvc4的,安裝過程請參考 windows2003 IIS6 部署MVC3和MVC4程式 Asp.net MVC4.0(從net4.5降級到4.0) 部署到window server 2003上的解決方案
但是Net Framework4.5是不支援安裝在window server 2003上)
asp.net 4.5 MVC升級到 MVC4, 多了 webapi
vs2013裡面 asp.net 4.5.1 MVC升級到了MVC5 ,webapi升級到了 webapi2.0
MVC5 (需要.net 4.5.1 )多了對 webapi 2.0的支援 (可以看看這個 http://www.cnblogs.com/artech/p/web-api-sample.html)
ASP.NET MVC 5帶來全新的開發者體驗,One ASP.NET的整合新範本系統,經由單一入口即可完成所有Web範本的選擇,各種Web範本之間也可以靈活組合出新範本,例如,Web Forms + Web API等。MVC 5提供更有彈性的會員認證系統,透過Code First的方式開發人員不在受限於固定的Schema,可自由定義所需的資料Schema。採用Bootstrap設計的全新Web範本介面,Bootstrap提供高度彈性,讓開發人員也能快速擁有架構頁面介面及開發出支援響應式網頁 (Responsive Web)的能力。
隨著Visual Studio 2013的發行,開發工具又向前邁出大一步,它正在統一一致的體驗,現在,你能夠實現相同功能集,無論你如何開始建置ASP.NET應用程式。例如,開發人員可以在Web Forms專案中透過支架(Scaffold)加入Web API,開發人員可以自由混合選擇你所想要的技術。One ASP.NET是為了讓開發人員在所愛的ASP.NET裡更容易做想做的事,One ASP.NET應該給開發人員信心,無論他們選擇什麼,他們仍然是在一個可信任基礎框架-ASP.NET-下進行開發。
MVC專案範本無縫地整合成一個全新的One ASP.NET體驗。透過One ASP.NET的專案建立精靈,開發人員可以客製化MVC專案和組態認證。MVC專案現在是標準Web應用程式的一部分且不再使用它們自己的專案GUID。
vs2013裡面 有 EF6
EF6 在 code first的模式下,codefrist不支援的資料庫更多,比如access,sqlite,sql compact 3.5,mysql,oracle
關於LocalDB的介紹
類似於sqlite (但是sqlite是不支援儲存過程的,而LocalDB則支援儲存過程)
導讀:LocalDB是SQL Server 2012帶來的新特性,它是一個專門為開發人員量身定製的輕量級資料庫。本文將為您講解LocalDB的開發背景,展示其核心特性,並看看它與微軟的其它輕量級資料庫到底有何不同。
什麼是LocalDB
隨著SQL Server 2012的釋出,LocalDB躍入我們的視線,它可以被看做是SQL Server Express的輕量級版本。
LocalDB專門為開發人員建立,它非常易於安裝,幾乎無需管理,相容T-SQL語言,程式設計介面與SQL Server Express別無二致。
有了LocalDB,開發人員就不需要在自己的筆記本上安裝和維護一個龐大的SQL Server例項了。另外,LocalDB也適用於小型應用環境,開發人員可以將其用於小型生產環境或者嵌入式環境。
為開發人員量身定製
我們在關注LocalDB的技術細節之前,首先來了解一下構建LocalDB的背景。
一直以來,SQL Server Express滿足了我們兩方面的需求。它既是免費版的SQL Server,又具有足夠強大的功能,與其它版本相相容。當然,它的能力也存在一些限制,即它的每個資料庫的儲存容量不能超過10G。
SQL Server作為一個成熟的資料庫產品,其Express版本依然具有相當的複雜度。但作為開發人員,我們更希望降低管理複雜度,專注於開發。
LocalDB的開發目標由此形成,它是輕量級的SQL Server Express,為開發人員量身定製。
核心技術特性
說了這麼多,現在讓我們來看看LocalDB的核心技術特性:
- 相容其它SQL Server版本,使用sqlservr.exe作為服務程式,使用相同的客戶端訪問介面(如ADO.NET、ODBC或PDO),相容T-SQL程式語言。
- 在同一臺計算機上不必安裝多個LocalDB,不同的應用程式可以並行執行多個LocalDB程式,但所有的程式都是從同一個可執行檔案(sqlservr.exe)啟動的。
- LocalDB不會建立任何系統服務,LocalDB程式會根據需要自動啟動、停止。應用程式只需連線“Data Source=(localdb)\v11.0”,LocalDB就會作為應用程式的子程式啟動。隨著連線的終止,LocalDB程式也會隨之停止。
- LocalDB支援AttachDbFileName屬性,允許開發者指定資料庫檔案位置。例如:
- Data Source = (localdb)\v11.0;
- Integrated Security = true;
- AttachDbFileName = C:\MyData\Database1.mdf
輕量級資料庫對比(LocalDB vs. SQL Express vs. Compact)
LocalDB並不能完全替代SQL Server Express,它只是對開發人員提供了另外一種選擇,並保證與SQL Server Express一致的相容性。
LocalDB與SQL Server Compact之間有很大區別:
執行模式:SQL Server Compact是一個程式內(in-proc)DLL,LocalDB則作為獨立程式執行。
磁碟佔用:SQL Server Compact的體積僅有4MB,LocalDB安裝之後則有140MB。
功能特性:SQL Server Compact僅提供RDBMS的核心功能,而LocalDB則提供更豐富的功能,比如儲存過程、幾何和地理資料型別。
最後的思考
LocalDB作為一個功能豐富的輕量級資料庫,絕對值得我們去嘗試。接下來,我們也許會思考,LocalDB是否提供了良好的管理介面?答案是肯定的。
LocalDB提供了一個命令列管理工具SqlLocalDB.exe。下次,就讓我們一起來探討如何使用命令列實用工具SqlLocalDB.exe和SQL Server Management Studio(SSMS)管理LocalDB。(張志平/編譯)
原文連結:Introducing LocalDB, an improved SQL Express
下載連結:SQL Server 2012 Express & LocalDB
LocalDB並不是要取代SQL快捷版,而是要讓開發者能夠花費最少的精力來開發應用程式。微軟會繼續為使用者提供免費的SQL Server快捷版,他們可以在上面執行小型的評估專案,資料庫大小的限制為10GB。
Localdb可以配合iis使用, 在IIS的應用程式池的高階設定裡,“載入使用者配置”=true