ASP.NET 5 By Numbers

围绕与即将发布的ASP.NET的即将发布的数字有很多困惑。这篇文章看看主要的并寻求解释他们的意义。

5

新版本的ASP.NET称为ASP.NET 5。它是使用模型视图控制器架构开发Web应用程序的框架。它还提供了宁静的服务框架。此外,建筑框架"real-time"Web功能将包含在下一个版本的信号传记的形式中。 ASP.NET 5将是 不是 包括任何类型的Web表单开发框架。

5 也是在.NET框架的新版本给出的数字,也称为"Core50"。从现在开始,我会将其称为.NET核心。 .NET核心框架是重构版本的.NET。它旨在仅包括完整框架特征的最小子集,大量减少其占地面积。其他功能将通过Nuget作为插件。当您想要从您的云平台尽可能多地挤压时,这尤其有用。也将有一个跨平台版本的.NET核心。这将使您能够在Mac和UNIX / Linux操作系统上部署设计为目标.NET核心的ASP.NET应用程序。 .NET核心框架可以使用该应用程序进行Bin部署,使得可以在同一服务器上运行ASP.NET应用程序,该服务器上针对多个版本的.NET核心。换句话说,您不必等待您的托管公司修补服务器,以便能够利用框架的任何新版本。 .NET核心框架不会包含Web表单,Windows窗体,WPF,WCF,Silverlight,System.Drawing,DataTables等。

一些遗漏,如System.Drawing,可能意味着您无法将您现有的应用程序迁移到.NET核心直接 - 如果使用System.Draw以生成缩略图。这种功能将作为Nuget软件包提供。应提供工具以使您可以检查当前应用程序的兼容性核心。

4.5.2

这是当前版本的完整.NET Framework。您可以选择针对此版本的ASP.NET 5应用程序。您实际上可以针对4.5.1的ASP.NET 5应用。 ASP.NET 5针对完整版本的.NET的应用程序将能够利用整个.NET框架,但不会跨平台。

4.6

下一页 满的 版本的.NET框架是 4.6。以及.NET核心,您可以针对ASP.NET 5应用程序在.NET 4.6上运行。曾设计用于使用.NET 4.6的ASP.NET应用程序可能与.NET核心不兼容。 ASP.NET Web表单的下一个版本也是4.6。它将包括一些增强功能,例如异步模型绑定,http 2和使用新的rotoselyn编译器的能力。现有的ASP.NET应用程序(Web表单,MVC 5或更低的网页)都应该在没有修改的情况下在.NET 4.6上运行。

6

ASP.NET 5.将看到MVC,Web API和Web页面合并到一个名为MVC的框架中 6。此合并将导致现有框架中的奇数重复结果,这些框架中并不完全重复,例如MVC和Web API的不同控制器,或者在MVC和Web页面中的类似查找HTML帮助程序,它们是完全不同地实现的。当ASP.NET 5发布到市场时,网页将无法作为开发模型可用,因此在此阶段很难说它它将是什么样的,但是可以假设传统的MVC功能如模型绑定将可用它。我们被告知,在RTM之后的第一个更新中将提供网页。微软仍然将网页视为初学者和SPA开发的重要平台。

MVC 6将看到一些新功能的引入,最引人注目的是 标签助手查看组件。标签助手是您看法中HTML帮助者的可选替代品。这是一个标准的MVC 5(来自默认模板 register.chtml. 看法:

@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>

这就是当HTML帮助者替换为标签助词时,它将如何查看:

<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>

此功能仍在开发中,在Visual Studio 2015 CTP 6(Beta 3)中没有支持它 - 除非我的安装出错了。

查看组件 are intended to replace the widgets that you usually call into your layout or view using Html.Action, such as menus, tag clouds, the Archive listing on the right hand side of this page and so on. Here's a very simple view component that generates a greeting based on the time of day:

namespace WebApplication1.ViewComponents
{
    using Microsoft.AspNet.Mvc;
    using System;

    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组件需要一个视图:

@model string
<h3>@Model</h3>

它是由于呼叫而渲染的 Component.Invoke in the parent view:

<div>
    @Component.Invoke("Greeting")
</div>

There is also a Component.InvokeAsync method so you can make your view component asynchronous. You can read more about view components 在ASP.NET网站上.

7

虽然不是ASP.NET的一部分,但下一个版本的实体框架也在开发中。实体框架7将通过ASP.NET 5的RTM释放,虽然 EF团队警告说 那个ef 7不会是"go-to-release"在那时候。该阶段应该准备好是一个基本的ORM包,它将在.NET核心上运行。它不会包括延迟加载,继承映射,并且只将针对SQL Server。如果您没有任何原因来定位云优化的跨平台运行时,则可以在新的MVC 6应用程序中使用EF 6,而是目标.NET 4.5.2。或4.6

概括

本篇文章的目的是澄清在未来几个月内可用的各种新作品。 ASP.NET的下一个版本仍处于主动开发和变更,并正在进行更改。事实上,正是上周,在CTP6发布后,宣布运行时将从“克鲁”到DNX中重命名。

如果您想及时了解有关ASP.NET 5的最新消息,您应该 观看社区立场 每周二(或者你喜欢的时候)。