本篇內容:
一、One ASP.NET
二、新的Web項目體驗
三、ASP.NET Identity
四、Bootstrap 模板
五、特性路由
六、ASP.NET基架
七、身份驗證過濾器
八、過濾器重寫
2013年10月,ASP.NET MVC 5與Visual Studio 2013一起發布。
這個版本的關注點是“One ASP.NET”計划(稍后介紹),以及對整個ASP.NET框架所做的核心增強。
下面列出了一些主要特性:
1)One ASP.NET
2)新的Web項目體驗
3)ASP.NET Identity
4)Bootstrap 模板
5)特性路由
6)ASP.NET基架
7)身份驗證過濾器
8)過濾器重寫
一、One ASP.NET
有很多的選項是好事。Web應用程序千差萬別,而Web工具和平台也不是有了一種就可以應對所有情況。但是另一面,一些選項會讓我們束縛手腳。
正如“魚和熊掌不可兼得”,如果選擇一樣東西意味着放棄另一樣東西,那么我們不希望被迫必須選擇他。
這一點特別適用於開始創建項目時的選項:我們剛剛開始創建項目,怎么知道一年以后這個項目需要什么!
在之前的MVC版本中,每次創建項目的時候都面臨着選擇:創建一個MVC應用程序、Web Forms應用程序或其他項目類型。
之后,實際上我們就被限制住了。在某種程度上,可以吧Web Forms添加到一個MVC應用程序中,但是把MVC添加到Web Forms應用程序中是很困難的。
MVC應用程序在csproj文件中隱藏了一種特殊的項目類型GUID,當嘗試吧MVC添加到Web Forms應用程序時,這只是必須做的幾個神秘修改之一。
在MVC5中,情況發生了變化,因為現在只有一種ASP.NET項目類型,如圖4所示:
在Visual Studio 2013中創建新的Web應用程序時,沒有復雜的選項,只有Web應用程序。
不只是在一開始創建ASP.NET項目時才支持這么做:在不斷開發的過程中,可以添加對其他框架的支持,因為工具和特性都是作為NuGet包提供的。
例如,如果開發過程中改變了想法,就可以使用ASP.NET基架向任何現有的ASP.NET應用程序添加MVC。
二、新的Web項目體驗
作為新的One ASP.NET體驗的一部分,Visual Studio 2013中創建新的MVC應用程序的對話框已被合並和簡化(如上圖)。
下篇咱們在一步步創建一個項目瞅瞅里面啥樣的。
三、ASP.NET Identity
MVC5徹底重寫了成員和身份驗證系統,使其成為新的ASP.NET Identity系統的一部分。
這個新系統拜托了原來的ASP.NET成員系統的陳舊局限,並讓MVC4的Simple Membership系統變得更加成熟,可配置性更好。
下面列出了ASP.NET Identity的一些主要新特性:
1)One ASP.NET Identity系統
為了支持前面介紹的One ASP.NET這個關注點,新的ASP.NET Identity被設計為可在整個ASP.NET家族中使用(包括MVC、Web Forms、Web Pages、Web API、SignalR,以及使用其中任何技術組合創建的混合應用程序)。
2)控制用戶資料數據
雖然ASP.NET的成員系統常被用於存儲關於用戶的額外的、自定義的信息,但是使用起來越很困難。
ASP.NET Identity使得存儲額外的用戶信息(如賬號、社交媒體信息和聯系地址)很容易,只需要在代表用戶的模型類中添加屬性即可。
3)控制優於持久化
默認情況下,所有用戶信息都是用Entity Framework Code First存儲,所以可以獲得我們在使用Entity Framework Code First的時候已經習慣了的簡單性和控制。
但是,也可以插入其他任何我們希望使用的持久化機制,包括其他ORM、數據庫、自定義的Web服務等。
4)可測試性
ASP.NET Identity API是使用接口設計的,所以允許為用戶相關的應用程序代碼編寫單元測試。
5)基於聲明
雖然ASP.NET Identity仍然支持用戶角色,但是也支持基於聲明的身份驗證。
聲明的表達力比角色強許多,所以給我們提供了強大的能力和靈活性。
角色成員關系是一個簡單的布爾值(是/不是 管理員身份)。
而用戶聲明可以包含豐富的信息,比如用戶的成員級別或身份細節等。
6)登錄提供器
ASP.NET Identity並不是只關注用戶名/密碼身份驗證,而是也理解用戶經常通過社交服務提供器(如Microsoft 賬戶、Facebook或Twitter)和Windows Azure Active Directory進行身份驗證。
7)NuGet分發
ASP.NET Identity作為NuGet包安裝到應用程序中。
這意味着可以單獨安裝ASP.NET Idetntiy,並且通過更新一個NuGet包,就可以把它升級到最新版本。
關於ASP.NET Identtiy系統,我們會在后面的文章中詳細討論。
四、Bootstrap 模板
MVC1項目的默認模板的視覺設計一直到MVC3都沒有改變。
創建並運行一個新的MVC項目時,得到的是藍色背景,其上有一個白色的方框。
在MVC4中,重新設計了默認模板的HTML和CSS,使其默認的視覺設計也能拿得出手了。
而且,在不同的屏幕分辨率下,默認模板的HTML和CSS也工作的很好。
(這個在上面的MVC4概述介紹過了)但是MVC默認模板的HTML和CSS都是自定義的,這不夠理想。
視覺設計的更新與MVC的產品發布周期捆綁在一起,所以很難與Web開發社區分享設計模板。
在MVC5中,項目模板改為運行在流行的Bootstrap框架上。
Bootstrap最初由Twitter的一名開發人員和一名設計師創建,他們后來離開了Twitter,專注於Bootstrap的開發。
MVC5的默認設計實際上看起來就像可以直接部署到生產環境一樣,如圖所示:
更好的是,因為Bootstrap框架在Web開發人員群體中獲得了很高的接受度,所以在https://wrapbootstrap.com/和http://bootswatch.com/上可以獲得大量的、多種多樣的Bootstrap主題(有免費的,也有付費的)。
例如,如下圖所示,我是用了Bootswatch免費提供的Slate主題,上面的默認“藍白框”效果就變成了:
后面我們將介紹如何針對移動Web瀏覽器優化MVC應用程序,詳細介紹Bootstrap。
五、特性路由
特性路由是一種新的指定路由的方法,可將注解添加到控制器類或操作方法上。
流行的AttributeRouting開源項目讓我們的這種方法成為可能。
后面我們將單獨介紹特性路由。
六、ASP.NET基架
基架是基於模型類生成樣板代碼的過程。MVC從版本1開始就有了基架,但是僅限於MVC項目使用。
新的ASP.NET基架系統可以在任何ASP.NET應用程序中工作。
另外,它還支持構建強大的自定義基架,使其具有自定義對話框和完善的基架API。
后面我們會單獨一篇文章簡單的討論一下ASP.NET的基架系統,最后還會介紹擴展基架系統的兩種方式。
七、身份驗證過濾器
MVC很久以來一直支持認證過濾器的功能,允許基於角色身份或其他自定義邏輯來限制對控制器或操作的訪問。
但是,在后面的文章中我們將會看到,身份驗證(確定用戶是誰)和授權(經過身份驗證的用戶能夠做什么)之間存在一個重要的區別。
新增的身份驗證過濾器先於授權過濾器執行,從而允許訪問ASP.NET Identity提供的用戶聲明,以及運行自定義的身份驗證邏輯。
后面我們會詳細討論身份驗證過濾器。
八、過濾器重寫
過濾器是一項高級的MVC特性,允許開發人員參與操作和結果執行管道。
過濾器重寫意味着可以實現讓某個控制器或操作不執行的全局過濾器。
這個我們先不會詳細介紹,在最后的文章中我們再詳細地介紹過濾器以及過濾器重寫。