当前位置:必发365电子游戏 > 编程 > 它倾覆了千古的 ASP.NET
它倾覆了千古的 ASP.NET
2019-12-19

背景

最新版本的 ASP.NET 叫做 ASP.NET Core (也被叫做 ASP.NET 5卡塔尔   它倾覆了千古的 ASP.NET。

什么是 ASP.NET Core?

ASP.NET Core 1.0 是三个开源跨平台的支出框架,用于创设基于云的现世 Web 应用 。它是从底层起始重复创设来提供品质非凡的Web应用开辟框架,能够配备在云上或许地方服务器上。此外,它使得 ASP.NET 应用更加的简洁和模块化(能够根据你的运用要求向里面增多别的模块),跨平台(你可以非常轻便的在 Windows, Mac or Linux 上开采和配置你的选取),云优化(你能够在云上在云上铺排和调节和测量检验你的应用)。

早前的本子

对此利用 ASP.NET 旧版本的大家的话,那意味什么?

若是你正在采纳旧版本的 ASP.NET 或许您有 WebForms 的支付背景,那么你将会认获得 ASP.NET Core 有多完美,那以为起来就像是从古典的 ASP 时期光降崭新的 ASP.NET 的社会风气。

图片 1

今后,让大家来朝气蓬勃探究竟

上边列出 ASP.NET Core 1.0 的大旨变化.

跨平台的运作时

你能够在 OSX 和 Linux上运行 ASP.NET Core 应用,这对于 ASP.NET 来讲,那全体跨时期的意义,也给 ASP.NET 开辟者和设计员们带给了崭新的体验。ASP.NET Core 具备多少个运维时,那象征你能够采用差别的运营意况来构造你的运用,使得你的运用将更灵活。

ASP.NET Core 1.0 是一个 ASP.NET 的重构版本,它运维于新颖的 .NET Core。它是模块化的,允许开采者以插件的样式足够应用所急需的模块,大比超多的成效都将作为插件提供并透过 NuGet 程序包管理。那样做的贰个平价便是您能够提高使用的二个模块,但丝毫不会耳熏目染其余模块;别的,.NET Core 是叁个跨平台的运作时,由此你能够在 OSX 或 Linux 操作系统上配置你的接收;它也是叁个云优化的运营时,用于在云上计划和调整应用;.NET Core 能够和你的应用程序一齐被布署,当服务器上有多个 .NET Core 版本时, 你还是能够运转 ASP.NET Core 应用。

您也得以创立只运维在 windows 下总体 .NET 框架的 ASP.NET Core 应用。

ASP.NET 4.6 是风靡的欧洲经济共同体 .NET Framework 的发表版本,它同意你能够应用具有的 .NET 组件何况具备向后非常技术。假如您安插将应用迁移到 .NET core,那么你供给做适度的改善,因为 .NET Core 相对于完整 .NET Framework 来讲具备限定。

需求确定的是,ASP.NET 4.6 越发成熟。它近日练习并且现已发布并可利用。ASP.NET Core 1.0 是1.0 公布版本,蕴含 Web API 和 MVC,可是未来还平昔不 Signal传祺 和 Web Pages。,它也不帮忙VB 和 F# 语言。

ASP.NET Core 不再只依赖Visual Studio

ASP.NET Core 的跨平台,让它不再只依据 Visual Studio,开垦者和设计员们能够在温馨喜爱的遭遇上行事。比方 Sublime Text,WebStorm ,那当成太棒了!

新的工程解决方案构造

若果你使用 Visual Studio 创立了三个空的 ASP.NET Core 工程,那么您将会看出上边包车型客车悲喜。(除非你从未利用从前的 ASP.NET 成立过别的项目)

图片 2

您以为到到欣喜了啊?新的工程构造完全不相似了, 工程模板焕然豆蔻年华新,包涵以下的新文件:

· global.json: 你能够在这里间放置建设方案的构造新闻和工程时期的引用。

· Program.cs: 这些文件包罗了 ASP.NET Core RC2 应用的 Main 方法,负担布署和开发银行应用程序。

· src folder: 满含组成你应用程序的全方位项目代码。

· wwwroot: 你的静态文件将被放置在这里个文件夹,它们都将作为能源向来提供给顾客端,富含HTML,CSS 和 JavaScript 文件。

· project.json: 蕴涵项目设置。在 ASP.NET Core中,你能够透过利用 NuGet 程序包管理工科具(NPM)加多 NuGet 包可能编辑那么些文件来治本从属。你能够通过别的文件编辑器来编排这些文件,假设您利用 Visual Studio 2015,,这将会更加的 轻便,因为它的智能提示会援助您找到确切的 NuGet 包作为附属。project.json 就如下边那样。

图片 3

· startup.cs 那些重要放置你 ASP.NET Core 的 stratup 和 configuration 代码,下边便是 stratup 类的样子。

图片 4

ConfigureServices 方法定义了您应用程序使用的服务,Configure 方法用来定义组成央浼管道的中间件。

· References: 它蕴涵了 .NETCoreApp 第2个版本运转时的援用。

WebForms

是的,WebForms 不再是 ASP.NET 5 的生龙活虎部分,这真令人痛楚。你能够三翻五次选用VS二零一五 的 .NET 4.6 来营造 Web Forms 应用,但是却不可能体味 ASP.NET 5 的新天性了。

本身早就支付了成都百货数千年从Mini到大型的集团级 Web Forms 应用。 作者很向往 Web Forms,,事实上作者还有恐怕会三番五次支持在各类论坛应用 WebForms 的社区,例如 http://forums.asp.net。可是我们是时候提升了,去学学一些新东西。那是读书 ASP.NET MVC 最终的年华了,就如过去的不在少数东西,你照旧去适应,要么被淘汰。

除此之外 WebForms, the .NET Core 也未曾富含 Windows Forms, WCF, WPF, Silverlight 等等。

VB.NET and F

目前,在当前 ASP.NET Core 1.0 RC2 版本中, VB.NET 和 F# 也不被帮忙。

MVC Core 统后生可畏布局

图片 5

ASP.NET Core 将亲眼看见 MVC, Web API 和 Web Pages(或然带有)组合在一个构造中,它被称呼 ASP.NET MVC Core。纵然如今揭露版本中,还不扶持 Web Pages and SignalHaval。

在在此以前的 ASP.NET MVC 中, MVC 调节器和 Web API 调控器是不一样的。 一个 MVC 调整器选用基类 System.Web.MVC.Controller ,叁个 Web API 调整器选用基类 System.Web.Http.ApiController 。 在 MVC Core 中,会为它们提供三个合伙的基类,就是 Microsoft.AspNetCore.Mvc.Controller

对于 HTML Helpers 来讲,MVC 和 Web Pages 的集结是那几个有十分的大可能率的。 Web Pages 编程模型对当下版本的话还不适用,所以大家还无法负义务地说下一步布署合并哪些特征。 不过大家能够预测到,古板的 MVC 模型绑定将会见世。

View Components

在事情未发生前 ASP.NET MVC 中,, Html.Action(卡塔尔国 扶助方法平时用来调用叁个sub-controller。ASP.NET MVC Core 将会动用新的 View Components 用来顶替使用Html.Action(卡塔尔 的零器件。

View Components 协助完全异步,那允许你成立异步的视图组件。

上面是一个大约的视图组件的例证,依据身份会再次回到个人介绍。

using Microsoft.AspNetCore.Mvc;  
using MVC6Demo.Models;  
using System.Threading.Tasks;  
using System.Collections.Generic;  

namespace MVC6Demo.ViewComponents  
{  
    public class PersonListViewComponent : ViewComponent  
    {  
        public async Task<iviewcomponentresult> InvokeAsync(string status) {  
            string viewToUse = "Default";  
            bool isFiltered = false;  

            PersonModel model = new PersonModel();  

            if (status.ToLower().Equals("registered")) { 
                viewToUse = "Registered"; isFiltered = true; 
            }  

            var p = await GetPersonAsync(status, isFiltered);  
            return View(viewToUse,p);  
        }  

        private Task<ienumerable<person>> GetPersonAsync(string status, bool isFiltered) {  
            return Task.FromResult(GetPerson(status,isFiltered));  
        }  
        private IEnumerable<person> GetPerson(string status, bool isFiltered) {  
            PersonModel model = new PersonModel();  

            if (isFiltered)  
                return model.GetPersonsByStatus(status);  
            else  
                return model.GetAll;  

        }  
    }  
}  </person>

下面是 View Component 的视图:

<h3>Person List</h3>  
<ul>  
    @foreach (var p in Model) {  
        <li>@string.Format("{0} {1}",p.FirstName,p.LastName)</li>  
    }  
</ul> 

这里体现了怎么样在主视图中调用 View Components

<div>   
    @await Component.InvokeAsync("PersonList", new { type = "Registered" })
</div>  

新指令: @inject, @using, @inherits

ASP.NET MVC Core 提供了一丢丢新命令。 上边大家来看看怎样利用 @inject。 @inject 指令允许你注入一个类中的方法到您的视图中。

那是叁个简约的类,来显示一些异步的不二秘籍。

using System.Threading.Tasks;  
using System.Linq;  

namespace MVC6Demo.Models  
{  
    public class Stats  
    {  
        private PersonModel _persons = new PersonModel();  

        public async Task<int> GetPersonCount() {  
            return await Task.FromResult(_persons.GetAll.Count());  
        }  

        public async Task<int> GetRegisteredPersonCount() {  
            return await Task.FromResult(
                      _persons.GetAll.Where(o => o.Status.ToLower().Equals("registered")).Count());  
        }  

        public async Task<int> GetUnRegisteredPersonCount() {  
            return await Task.FromResult(
                     _persons.GetAll.Where(o => o.Status.ToLower().Equals("")).Count());  
        }  
    }  
} 

现行反革命大家就可以在视图中央银行使 @inject 指令来调用那些方法:

@inject MVC6Demo.Models.Stats Stats  

@{  
    ViewBag.Title = "Stats";  
}  

<div>  

那是否非常帅?

翻开自个儿有关 ASP.NET MVC 新指令详细例子的稿子: Getting Started with ASP.NET MVC Core

Tag Helpers

ASP.NET MVC Core 此外二个可怜酷的东西正是 Tag Helpers。对于早前的 HTML Helpers,Tag Helpers 是可选的代表语法。

故而相比较于以下代码:

@using (Html.BeginForm("Login", "Account", FormMethod.Post, 
        new { @class = "form-horizontal", role = "form" }))
            {
                @Html.AntiForgeryToken()
                <h4>Use a local account to log in.</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" })
                        @Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" })
                    </div>
                </div>
}

您可以行使那么些代码:

<form asp-controller="Account" asp-action="Login" method="post" class="form-horizontal" role="form">  
    <h4>Use a local account to log in.</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="col-md-2 control-label" />  

        </div>  
    </div>  
</form> 

ASP.NET Core 不独有能够配备在IIS上

14年前,ASP.NET 平台基本只好配备在大器晚成种服务器上,那正是IIS。几年之后,Visual Studio Development Web Server(也叫作“Cassini”)作为生机勃勃种开采服务被采取,不过它们最终都以调用 System.Web 作为应用程序和 Web 服务器中间的主机层。System.Web 主机与 IIS 耦合度相当高,所以要想运转在另意气风发台主机上会非常劳累。

后来 OWIN 作为应用程序和 Web 服务器中间的接口现身。 Microsoft 开垦了 Katana 作为三个OWIN 的兑现,能够配备 ASP.NET Web API, Signal途睿欧和此外第三方框架,那一个框架能够在 IIS 和 IIS Express, Katana's 自托管主机和自定义主机。

ASP.NET Core 是不重申主机的,它在 Katana 和 OWIN 上作为等同。ASP.NET Core 也能够配备在 IIS, IIS Express 恐怕自托管在您本人的进度里。其它,ASP.NET Core 也会蕴藏三个叫做 Kestrel 的 Web 服务器,它创造在 libuv 上,主要用来 iOS 和 Linux 操作系统。

新的HTTP诉求管道

ASP.NET Core 提供了生机勃勃种尤其模块化的 HTTP 央求管道, 你能够只增加你要求的组件。那个管道不再依赖System.Web,通过减弱管道中的开销,你的 app 质量更加雅观好,越来越好的大团结 HTTP 左券栈。新的管道基于 Katana 项目阅世,同期协助 OWIN。

动态的Web开发

Visual Studio 2014 中另贰个相当的帅的天性便是支持动态编写翻译。在过去的 ASP.NET 中,当大家改进了运用的后台代码,大家须要再行编写翻译并且运转技术观望页面包车型客车浮动。 在新本子的 Visual Studio 中,你没有要求再做那些额外的步子,仅仅是保存你的退换和刷新浏览器就能够。

图片 6

那是在刷新页面之后的出口:

图片 7

Attribute Routing: [controller] 和 [action] 标记

在过去的 MVC 和 Web API 中,使用路由属性大概会以致部分主题素材,尤其是您正在做一些代码重构。那是因为路由必得设定为字符串类型,当您改改了调整器的名字,你就必需校正路由属性的字符串

MVC Core 提供了新的 [controller] 和 [action] 标识,它们能够解决这些标题。上面那篇小说器重表明了那个新标识的用法。 : ASP.NET MVC 6 Attribute Routing.

购并的依附注入 (DI卡塔尔

ASP.NET Core 内嵌了对注重注入和 瑟维斯 Locator 格局的协理,那意味你不在要求经过第三方依赖注入框架 Ninject 或 AutoFac。

集成 Grunt, Gulp and Bower

Visual Studio 2014 内嵌了对流行开源 Web 开辟工具的支撑。 Grunt 和 Gulp 能够帮你自动化塑造 Web 开辟专门的学问流, 你基本上能用它们来编写翻译和减少JavaScript 文件。Bower 是二个用来顾客端库的处理工科具,包括 CSS 和 JavaScript 库。

内置的AngularJs模板

AngularJs 是当前最流行的前端框架之风姿洒脱,用于塑造单页面应用程序(SPAs)。Visual Studio 蕴含了用来创制 AngularJs 模块,调整器,指令和工厂。

图片 8

对 GruntJS 的扶助使得 ASP.NET 成为三个用以创设顾客端 AngularJs 应用的杰出服务器端框架。 当完结叁个版本,你能够活动合并和压缩全部AngularJs 文件。查看本身的关于伊始在 ASP.NET 中央银行使 Angular 和 Angular2 的小说 。

· ASP.NET 5: Jump Start to AngularJS with MVC 6 Web API

· ASP.NET Core:Getting Started with AngularJS 2

SignalR 3

ASP.NET Core 也是以 Signal陆风X8 3 为底子,那使得你能够向云连接的应用程序增加实时间效果与利益力。查看本身事情未发生前的 SignalPRADO例子: ASP.Net SignalR: Building a Simple Real-Time Chat Application

Web.Config

在 ASP.NET Core 中,混乱的 web.config 文件被新的云就绪配置文件代替,它称作 “config.json”。微软目的在于开拓人士更便于地在云中安插应用程序,并使得应用能够依照特殊条件活动的读取准确的布局参数。

那是三个新的布署文件的样本:

图片 9

由于 ASP.NET Core 都以插件化的,你须求配置 Stratup 类的源代码,就如下边那样:

 public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath);

            builder.AddEnvironmentVariables();
            Configuration = builder.Build();
        }
        public IConfigurationRoot Configuration { get; }
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            services.AddTransient<MVC6Demo.Models.HeroStats>();
        }

        public void Configure(IApplicationBuilder app)
        {
            app.UseDeveloperExceptionPage();


            app.UseMvc(m => {
                m.MapRoute(
                    name: "default",
                    template: "{controller}/{action}/{id?}",
                    defaults: new { controller = "Home", action="Index"});
            });
        }

它倾覆了千古的 ASP.NET。xUnit.Net: .NET 新的单元测量试验工具

在后面包车型大巴 ASP.NET MVC 中,默许的测验框架是 Visual Studio 单元测量试验框架(有时候也叫作mstest),那么些框架使用 [TestClass] 和 [TestMethod] 天性来描述一个单元测量试验。

ASP.NET Core 使用 xUnit.net 作为它的单元测量检验框架。这一个框架使用 [Fact] 本性来取代 [TestMethod] 脾气,也息灭了对 [TestClass] 属性的依赖。

纯属的无偿和开源

不容争辩,ASP.NET Core 被看做二个开源项目托管到 GitHub上, 你能够查看源代码,并下载并交付你的改动。

自身承认开源的 .NET 会发出主要的意义,它发生了积极性的生意意义和社区意义,十二分谢谢微软所做出的行事。

以上 ASP.NET Core 1.0 的新特点和新定义的牵线,是为着越来越好的帮助大家利用 ASP.NET Core 实行支付,同期在支付进度中,我们还能够依据一些好的工具来增加花费作用,并裁减代码量,如 ComponentOne Studio for Asp.net MVC,它分外 ASP.NET Core RC2 版本,是风华正茂款火速轻量级的控件来满意顾客的保有要求。

 

文章来源:By Vincent Maverick Durano, 10 Jun 贰零壹肆 

原稿链接:

 

有关阅读:

是什么让C#成为最值得学习的编程语言

从Visual Studio看微软20年技巧生成

C#开辟人士应该精晓的13件事情

Visual Studio 2017标准版发表全纪录

 

下一篇:没有了