[转帖]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

相关文章
相关标签/搜索