解讀ASP.NET 5 & MVC6系列教程(1):ASP.NET 5簡介_自學過程

來源:互聯網
上載者:User

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 - 基本的依賴注入管理並擁有預設實現
    EntityFramework - 資料訪問ORM架構
    Identity - 使用者認證系統
    KRuntime - 核心運行時、項目系統,載入器
    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架構開發web應用程式的架構,它還提供了開發RESTful服務的功能。另外,在下個版本裡,該架構還可以使用SignalR構建即時應用程式。注意,ASP.NET 5不再包含Web Form開發架構了。

5也是.NET framework的新版本的版本號碼,稱之為Core50,也叫.NET Core。.NET Core是.NET的重構版本,只保留原有架構中的最小化的功能集,對於其它的特性和功能,可以通過nuget下載以外掛程式的形式運行。這就意味著,我們可以將其用於各種雲環境進行獨立部署。另外,微軟還會提供一個跨平台的.NET Core,以便可以讓ASP.NET程式部署到Mac和Unix/Liunx伺服器上。另外.NET Core架構還可以和程式一起進行打包部署,從而可以實現在同一台伺服器上使用不同版本的.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編譯器。現有的ASP.NET程式(Web Forms、MVC5和之前的版本、Web Pages)不需要任何修改都可以運行在.NET 4.6上。

6

ASP.NET 5中的MVC、Web API、Web Pages三個架構會合并成一個架構,統稱為MVC6。該合并工作將刪除三個架構中重複的功能,比如MVC和Web API中的兩種Controller只保留一種。但是傳統MVC的功能都會保留,比如模型繫結。不過,據說Web Pages在RTM的時候不會發布,而是會在RTM之後的第一次更新中進行發布。

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>

這樣的話,就極大地方便了前端開發人員了,因為可以看到正常的HTML結構了。

View Components則解決了Child Action的問題,比如很多時候,我們都是通過Html.Action來實現菜單、標籤功能。如下是一個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版本一起發布,雖然可能延期,但至少在那個時候會有一個可以在.NET Core上啟動並執行基本ORM包,其不包括消極式載入、繼承映射、並且只適應於SQL Server。如果不在跨平台上運行MVC6程式的話,你可以在.NET 4.5.2或4.6中繼續使用EF6,
ASP.NET5和MVC6中的10大新變化

在新版ASP.NET5和MVC6中,有很多變化,有些是徹底的變化,比如在最底層支援依賴注入技術,為了方便瞭解,我們這裡列出了最重要的10大變化,以便進行學習,具體如下:

    ASP.NET 5現在已經是跨平台了,可以在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開發,還支援Android和iOS開發。
Visual Studio Code:為了能夠在Mac或Linux作業系統上也能編寫C#程式,微軟又發布了一個 Visual Studio Code輕量級編輯器可以使用上述作業系統,依然是高大上啊,新功能和特性瞬間秒殺Sublime Text和Brackets,詳細地址請訪問:https://code.visualstudio.com/ 。

參考:http://stephenwalther.com/archive/2015/02/24/top-10-changes-in-asp-net-5-and-mvc-6

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.