[轉帖]2016年的文章: 解讀ASP.NET 5 & MVC6系列教程(1):ASP.NET 5簡介

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

 更新時間:2016年06月23日 11:38:00   做者:湯姆大叔    我要評論html

https://www.jb51.net/article/87220.htm

發現 jb51 是一個很好的網站呢 

 

關注腳本之家微信公衆號(jb51net) 每週都有大禮相送哦
這篇文章主要介紹ASP.NET 5簡介以及對各個版本號進行解釋,ASP.NET 5中新的變化,須要的朋友能夠參考下。

ASP.NET 5簡介前端

ASP.NET 5是一個跨時代的改寫,全部的功能和模塊都進行了獨立拆分,作到了完全解耦。爲了這些改寫,微軟也是蠻 拼的,幾乎把.NET Framwrok所有改寫了一遍,造成了一個.NET Core的東西。 在.NET Core裏一切都是可配置的,包括Session、MVC等功能,而一切可配置的功能都是能夠在Nuget上進行下載。git

目前ASP.NET 5依舊兼容老的.NET Framwrok,但要在進行跨平臺的部署,仍是隻能使用新改版的.NET Core CLR。github

目前的ASP.NET 5包括6個子項目DependencyInjection、EntityFramework、Identity、KRuntime、MVC、SignalR Server,具體每一個項目的介紹以下:web

    DependencyInjection - 基本的依賴注入管理並擁有默認實現
    EntityFramework - 數據訪問ORM框架
    Identity - 用戶認證系統
    KRuntime - 核心運行時、項目系統,加載器
    MVC - MVC框架,整合了MVC、Web API、Web Pages功能
    SignalR-Server - 實時交互式服務服務器

ASP.NET 5全部子項目的開源代碼均可以在https://github.com/aspnet/上找到。微信

ASP.NET 版本號解釋
架構

5mvc

新版的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,其將包括一些加強功能,如異步模型綁定、HTTP二、並開始使用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的概念。

好比,原來的視圖模型定義是這樣的:

?
1
2
3
4
5
6
7
8
9
10
11
12
@ 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進行定義:

?
1
2
3
4
5
6
7
8
9
10
11
< 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的示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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)也須要響應的視圖文件,示例以下:

?
1
2
@model string
<h3>@Model</h3>

調用代碼則須要使用權限的Component.Invoke方法,示例以下:

?
1
2
3
<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

相關文章
相關標籤/搜索