ASP.NET 5簡介
ASP.NET 5是一個跨時代的改寫,所有的功能和模塊都進行了獨立拆分,做到了徹底解耦。為了這些改寫,微軟也是蠻 拼的,幾乎把.NET Framwrok全部改寫了一遍,形成了一個.NET Core的東西。 在.NET Core里一切都是可配置的,包括Session、MVC等功能,而一切可配置的功能都是可以在Nuget上進行下載。
目前ASP.NET 5依舊兼容老的.NET Framwrok,但要在進行跨平臺的部署,還是只能使用新改版的.NET Core CLR。
目前的ASP.NET 5包括6個子項目DependencyInjection、EntityFramework、Identity、KRuntime、MVC、SignalR Server,具體每個項目的介紹如下:
DependencyInjection - 基本的依賴注入管理并擁有默認實現(xiàn)
EntityFramework - 數(shù)據(jù)訪問ORM框架
Identity - 用戶認證系統(tǒng)
KRuntime - 核心運行時、項目系統(tǒng),加載器
MVC - MVC框架,整合了MVC、Web API、Web Pages功能
SignalR-Server - 實時交互式服務
ASP.NET 5所有子項目的開源代碼都可以在https://github.com/aspnet/上找到。
ASP.NET 版本號解釋
5
新版的ASP.NET稱為ASP.NET 5,是一個使用MVC架構開發(fā)web應用程序的框架,它還提供了開發(fā)RESTful服務的功能。另外,在下個版本里,該框架還可以使用SignalR構建實時應用程序。注意,ASP.NET 5不再包含Web Form開發(fā)框架了。
5也是.NET framework的新版本的版本號,稱之為Core50,也叫.NET Core。.NET Core是.NET的重構版本,只保留原有框架中的最小化的功能集,對于其它的特性和功能,可以通過nuget下載以插件的形式運行。這就意味著,我們可以將其用于各種云環(huán)境進行獨立部署。另外,微軟還會提供一個跨平臺的.NET Core,以便可以讓ASP.NET程序部署到Mac和Unix/Liunx服務器上。另外.NET Core框架還可以和程序一起進行打包部署,從而可以實現(xiàn)在同一臺服務器上使用不同版本的.NET Core。
另外,還要注意,.NET Core不包括Web Form、Windows Form、WPF、WCF、Silverlight、System.Drawing、Datatable等功能。也就是說,如果你的程序需要使用System.Drawing進行縮略圖制作的話,那就沒辦法使用了。類似的工具集只能通過Nuget包進行下載了。可以通過工具查找當前程序和.NET Core的兼容性工具集。
4.5.2
4.5.2是當前.NET framework全功能版的版本號。你可以使用該版本的.NET來運行ASP.NET 5,甚至是4.5.1版本,使用該版本,可以使用整個.NET體系的所有功能,只不過就不能跨平臺了。
4.6
4.6是.NET framework全功能版下一版的版本號,也是.NET Core的下一個版本號。你可以將ASP.NET 5應用程序運行在.NET 4.6上,但運行在.NET 4.6上的ASP.NET程序可能不兼容.NET Core。下一個版本的ASP.NET Web Forms也是4.6,其將包括一些增強功能,如異步模型綁定、HTTP2、并開始使用Roselyn編譯器?,F(xiàn)有的ASP.NET程序(Web Forms、MVC5和之前的版本、Web Pages)不需要任何修改都可以運行在.NET 4.6上。
6
ASP.NET 5中的MVC、Web API、Web Pages三個框架會合并成一個框架,統(tǒng)稱為MVC6。該合并工作將刪除三個框架中重復的功能,比如MVC和Web API中的兩種Controller只保留一種。但是傳統(tǒng)MVC的功能都會保留,比如模型綁定。不過,據(jù)說Web Pages在RTM的時候不會發(fā)布,而是會在RTM之后的第一次更新中進行發(fā)布。
MVC6會引入一些新功能,最引人注目的功能就是Tag Helpers和View Components。Tag Helpers是Html Helpers的一種替換,而View Components則引入里類似Web Forms中的WebControl的概念。
比如,原來的視圖模型定義是這樣的:
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
h4>Create a new account./h4>
hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
div class="form-group">
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
div class="col-md-10">
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
/div>
/div>
在新版MVC6中,我們可以使用Tag Helper進行定義:
form asp-controller="Account" asp-action="Register" method="post" class="form-horizontal" role="form">
h4>Create a new account./h4>
hr />
div asp-validation-summary="ValidationSummary.ModelOnly" class="text-danger">/div>
div class="form-group">
label asp-for="UserName" class="col-md-2 control-label">/label>
div class="col-md-10">
input asp-for="UserName" class="form-control" />
span asp-validation-for="UserName" class="text-danger">/span>
/div>
/div>
這樣的話,就極大地方便了前端開發(fā)人員了,因為可以看到正常的HTML結構了。
View Components則解決了Child Action的問題,比如很多時候,我們都是通過Html.Action來實現(xiàn)菜單、標簽功能。如下是一個View Component的示例:
public class GreetingViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
var greeting = "Good Morning!";
if (DateTime.Now.Hour > 12)
{
greeting = "Good Afternoon!";
}
if (DateTime.Now.Hour > 17)
{
greeting = "Good Evening!";
}
return View("Index", greeting);
}
}
該視圖組件(view component)也需要響應的視圖文件,示例如下:
@model string
h3>@Model/h3>
調用代碼則需要使用權限的Component.Invoke方法,示例如下:
div>
@Component.Invoke("Greeting")
/div>
另外還有一個Component.InvokeAsync方法,可以用于異步調用。關于視圖組件的詳細用法,請參考視圖組件一章。
7
7是Entity Framework的下一個版本,雖然不屬于ASP.NET 5的一部分,但有很大關系。EF7將和ASP.NET 5的RTM版本一起發(fā)布,雖然可能延期,但至少在那個時候會有一個可以在.NET Core上運行的基本ORM包,其不包括延遲加載、繼承映射、并且只適應于SQL Server。如果不在跨平臺上運行MVC6程序的話,你可以在.NET 4.5.2或4.6中繼續(xù)使用EF6,
ASP.NET5和MVC6中的10大新變化
在新版ASP.NET5和MVC6中,有很多變化,有些是徹底的變化,比如在最底層支持依賴注入技術,為了方便了解,我們這里列出了最重要的10大變化,以便進行學習,具體如下:
ASP.NET 5現(xiàn)在已經是跨平臺了,可以在Mac和Linux上運行。
不再有Web Forms框架了。
只支持C#,不在支持VB.NET了。(貌似最近又聽說最終版VB.NET又要支持了)
新的Tag語法,@Html.LabelFor或Html.TextBoxFor替換成新語法label asp-for="Name">或input asp-for="Name" />,以便進行模型綁定。
新增視圖組件(View Component),可以將局部內容定義為一個單獨的組件進行調用,和Web Forms里的WebControl非常像。
擁抱前端技術,內置了Nodejs、NPM、Grunt、Bower技術。
模型整合,將MVC和WebAPI整合成一個框架。
支持AngularJS,幫內置了AngularJS的module、controller、directive、以及factory模板。
支持依賴注入技術,擁有原生的DI框架,并且也支持第三方容器。
支持xUnit.net,并拋棄了Visual Studio Unit Testing框架。
IDE
VS2015:VS2015就不用說了,依然高大上,目前不僅支持Nodejs、Python開發(fā),還支持Android和iOS開發(fā)。
Visual Studio Code:為了能夠在Mac或Linux操作系統(tǒng)上也能編寫C#程序,微軟又發(fā)布了一個 Visual Studio Code輕量級編輯器可以使用上述操作系統(tǒng),依然是高大上啊,新功能和特性瞬間秒殺Sublime Text和Brackets,詳細地址請訪問:https://code.visualstudio.com/ 。
參考:http://stephenwalther.com/archive/2015/02/24/top-10-changes-in-asp-net-5-and-mvc-6
您可能感興趣的文章:- .NET中的repeater簡介及分頁效果
- ASP.NET MVC Web API HttpClient簡介
- ASP.NET Global.asax應用程序文件簡介
- 關于.NET動態(tài)代理的介紹和應用簡介
- ASP.NET Core簡單介紹教程(1)