你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

sublime text 3 ruby ASP.NET Core:新的 ASP.NET!

发布时间:2026-02-12

浏览次数:0

背景

叫ASP.NET Core的最新版本的ASP.NET,也被称作ASP.NET 5,它把过去的ASP.NET给颠覆了。

什么是 ASP.NET Core?

ASP.NET Core 1.0,为一款开源跨平台的开发框架,旨在构建基于云的现代Web应用,它是自底层起步重新构建,目的是提供性能优越的Web应用开发框架,能够部署于云上,也能够部署在本地服务器之上。而且,它让 ASP.NET 应用变得更为精简以及模块化,此模块化是指能够依据你应用的需求往其中增添别的模块,它具备跨平台特性,也就是说你能够较为轻易地于 Mac 或者 Linux 上开展应用的开发以及部署工作,另外它还进行了云优化,这体现为你能够在云端部署并调试你的应用。

以前的版本

对于使用 ASP.NET 旧版本的我们来说,这意味着什么?

要是你此刻正在运用旧版本的ASP.NET,或者你拥有相关的开发背景,那你就会察觉到ASP.NET Core究竞何等完美,这种感受好似从古典的ASP时期迈入全新的ASP.NET的天地,从而产生一种别样的体验,进而得出相应的认知。

现在,让我们来一探究竟

下面列出 ASP.NET Core 1.0 的核心变化.

跨平台的运行时

在OSX以及Linux之上,你能够运行ASP.NET Core应用,这对于ASP.NET而言,有着跨时代的意义,还为ASP.NET开发者以及设计师们带去了全新体验。ASP.NET Core具备两个运行时,这一情况意味着,你能够挑选不同的运行环境用以部署你的应用,如此一来,会让你的应用变得更加灵活。

ASP.NET Core 1.0,有别于原始版本,是基于原版本之上的重构,全新版本运行于崭新一代的.NET Core环境中,具备模块化特性,能够让开发者以插件格式增添应用所需模块,并且大多数功能均藉由NuGet程序包管理器,以插件形式予以提供。做这件事存在着这样一个益处,那便是你能够升级应用具备的一个模块,然而却绝对不会对其他模块产生丝毫影响;除此之外,.NET Core 属于一个跨越平台的运行时,所以你能够于 OSX 或者 Linux 操作系统之上部署你的应用;它同样还是一个进行云优化的运行时,用以在云上开展部署以及对应用程序实施调试;.NET Core 能够伴随你的应用程序一同被予以部署,当服务器上面存在多个.NET Core 版本之际,你仍然能够运行 ASP.NET Core 应用。

你同样能够去创建,仅仅运行在,下完整的,.NET 框架的,ASP.NET Core应用。

4.6版本的ASP.NET是最新放出的完整.NET发布版本,它准许你能够借助所有的.NET组件,且拥有向后兼容的能力,但如果你打算把子应用迁移至.NET core,那就得做适度的改动,因为.NET Core对比完整.NET而言存在一定限制,是这样的。

要明确的是,更成熟的是ASP.NET 4.6 ,它如今历经诸多考验,现已发布且可供使用。处于1.0发布版本的ASP.NET Core 1.0 ,有着Web API和MVC ,但当下没有Web Pages ,它也不支持VB以及F#语言。

ASP.NET Core 不再只依赖

以下是改写后的内容:ASP.NET Core具备的跨平台特性,致使它不再单单依赖,使得开发者以及设计师们能够在自身所喜爱的环境里开展工作,像Text, ,这着实是非常棒的!

新的工程解决方案结构

要是你借助某种方式创建了一个为空的 ASP.NET Core 工程,那你将会目睹如下的惊喜情况。(除非你在这之前未曾使用 ASP.NET 创建过任何项目)

您可曾察觉到惊喜之感?全新的工程结构已然全然不同,工程模板呈现出崭新面貌,其中涵盖了如下这般的新文件!

{".json": 你能够于此处放置解决方案的配置信息,以及工程之间的引用。

· ,cs:此个文件之内置含是ASP.NET Core之中RC2应用的Main方法,则起到负责去进行配置还有启动应用程序之作用。

· src : 包含组成你应用程序的全部项目代码。

该放置文件夹会用于存放你的静态文件,这些文件会被设定为直接当作资源向客户端提供,其中涵盖HTML,还包括CSS以及文件。

.json,它包含项目设置,在ASP.NET Core当中,你能够借助NuGet程序包管理工具也就是NPM去添加NuGet包,或者通过编辑这个文件来管理从属,你能够运用任何文本编辑器去编辑此文件,要是你使用2015,这将会愈发轻松,因为它的智能提示会助力你寻得合适的NuGet包作为从属,.json就如同下面这般。

放置你ASP.NET Core代码的主要是.cs,下面呈现的便是类所具有的样子。

方法对应用程序所使用的服务进行了定义,方法被用于定义构成请求管道的中间件。

· : 它包含了 . 第一个版本运行时的引用。

没错,已不在是ASP.NET 5的一部分,这般实在令人哀伤。你能够持续运用的.NET 4.6去打造Web Forms应用,然而却没法领略ASP.NET 5的新颖特性了。

多年来,我从事大型企业级Web Forms应用开发,也开发小型的。我对Web Forms十分青睐,实际上,我会持续支持其在各类论坛的社区应用,涵盖http://.asp.net这样地址的论坛。然而,当下我们需谋求进步,着手学习新颖内容。此刻是学习ASP.NET MVC的最后期限,如同往昔诸多事物,你若不顺应,便会被淘汰。

除了,.NET Core也欠缺Forms,.NET中WCF不存在了,WPF也未被包括,等等。

VB.NET and F#

在当下,于此刻的ASP.NET Core 1.0 RC2版本里面,VB.NET以及F#同样是不被予以支持的。

MVC Core 统一架构

ASP.NET Core会亲眼目睹MVC、可能包含在内的Web API以及Web Pages组合于一个架构里,这个架构被称作ASP.NET MVC Core。虽然在当前发布的版本当中,Web Pages and并不被支持。

在前述的 ASP.NET MVC 当中sublime text 3 ruby,MVC 控制器与 Web API 控制器存在差别,一个MVC控制器运用基类.Web.MVC.,而一个 Web API 控制器却使用基类。

在MVC Core里,对于.Web.Http.,会给它们供应一个共同的基类,此基类便是。

..Mvc.。

对于HTML而言,MVC与Web Pages的合并具备相当大的可能性。Web Pages编程模型针对当前版本并不适用,因而我们尚未能够负责任地表明下一步计划合并哪些特性。不过我们能够预测到,传统的MVC模型绑定将会出现。

View

在先前的ASP.NET MVC里,Html.帮助方法通常被用于调用一个sub-,ASP.NET MVC Core会运用新的View去取代使用Html.的部件。

View 支持完全异步,这允许你创建异步的视图组件。

下面是一个简单的视图组件的例子,根据身份会返回个人介绍。

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 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> GetPersonAsync(string status, bool isFiltered) {  
 return Task.FromResult(GetPerson(status,isFiltered));  
        }  
        private IEnumerable GetPerson(string status, bool isFiltered) {  
 PersonModel model = new PersonModel;  
  
 if (isFiltered)  
 return model.GetPersonsByStatus(status);  
 else  
 return model.GetAll;  
  
        }  
    }  
}  

下面是 View 的视图:

Person List

    @foreach (var p in Model) {
  • @string.Format("{0} {1}",p.FirstName,p.LastName)
  • }

这里展示了如何在主视图中调用 View

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

新指令: @, @using, @

ASP.NET MVC Core给出了少许新指令,接下来让我们瞧瞧怎样运用@,@指令能够使你将某一个类里的方法注入至你的视图之中。

这是一个简单的类,来展示一些异步的方法。

using System.Threading.Tasks;  
using System.Linq;  
  
namespace MVC6Demo.Models  
{  
    public class Stats  
    {  
        private PersonModel _persons = new PersonModel;  
  
        public async Task GetPersonCount {  
 return await Task.FromResult(_persons.GetAll.Count);  
        }  
  
        public async Task GetRegisteredPersonCount {  
 return await Task.FromResult(
 _persons.GetAll.Where(o => o.Status.ToLower.Equals("registered")).Count);  
        }  
  
        public async Task GetUnRegisteredPersonCount {  
 return await Task.FromResult(
 _persons.GetAll.Where(o => o.Status.ToLower.Equals("")).Count);  
        }  
    }  
} 

现在我们就可以在视图中使用 @ 指令来调用那些方法:

@inject MVC6Demo.Models.Stats Stats  
  
@{  
    ViewBag.Title = "Stats";  
}  
  

这是不是很酷?

查看,我写的关于,ASP.NET MVC新指令,详细例子的文章,且使用了ASP.NET MVC Core。

Tag

ASP.NET MVC Core当中,还有一样极为酷炫无比的事物就是Tag ,相对于先前的HTML而言,Tag属于能够选择而非必须使用的替代语法。

所以相比于以下代码:

@using (Html.BeginForm("Login", "Account", FormMethod.Post, 
        new { @class = "form-horizontal", role = "form" }))
 {
 @Html.AntiForgeryToken
 

Use a local account to log in.


@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.LabelFor(m => m.UserName, new { @class = "col-md-2 control-label" })
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" }) @Html.ValidationMessageFor(m => m.UserName, "", new { @class = "text-danger" })
}

你可以使用这些代码:

Use a local account to log in.


ASP.NET Core 不止可以部署在IIS上

14年前,ASP.NET平台基本上仅仅能够部署于一种服务器之上,而那便是IIS。几年之后,Web(亦称作“”)作为一种开发服务得以被运用,然而它们最终全都要去调用.Web作为应用程序与Web服务器中间的主机层。.Web主机与IIS的耦合程度非常高,所以要是想运行在另一台主机上面将会极为困难。

后来,OWIN 以应用程序与 Web 服务器之间接口形式出现,开发出作为 OWIN 的一种实现,能部署 ASP.NET Web API 以及其他第三方框架,这些框架可在 IIS 和 IIS 的自托管主机与自定义主机当中。

ASP.NET Core 不注重主机,它于和 OWIN 方面表现相同。ASP.NET Core 能够部署在 IIS 上,IIS 或者自行托管于你自身的进程之中。此外,ASP.NET Core 会有一个称作 Web 服务器,它基于 libuv 构建,主要适用于 iOS 和 Linux 操作系统。

新的HTTP请求管道

围绕ASP.NET Core提供的愈发模块化的HTTP请求管道,你能够仅添加自身所需的组件,所涉管道不再依赖.Web,借由削减管道里的开支,促使你的app性能更趋优良,进而更好地调谐HTTP协议栈,全新管道基于项目经验,并且兼及OWIN。

动态的Web开发

在2015里,存在着另外一个极为酷的特性,那便是对动态编译予以支持。于往昔的ASP.NET当中,一旦我们对应用的后台代码作出了修改,我们就得再度进行编译,而后运行,如此才能够瞧见页面产生的变化。在新版本里,你无需再去做这般额外的步骤,仅仅把你的修改进行保存,再刷新浏览器便可。

这是在刷新页面之后的输出:

:

和 标记

过往的那个MVC以及Web API里头,运用路由属性有可能致使某些问题出现,特别是当你正在开展一些代码重构工作的时候。之所以会这样,是由于路由必须被设定成字符串类型,一旦你更改了控制器的名称,那么你就不得不去修改路由属性的那个字符串。

MVC Core 提供了新的

标记以及和,能够将这个问题予以解决。在下面的这篇文章里,着重阐述了这些新标记的使用方法。其中涉及到:ASP.NET MVC 6。

集成的依赖注入 (DI)

ASP.NET Core 内部嵌入了针对依赖注入以及某种模式的支承内容,这表明你往后无需借助第三方依赖注入框架,或者,或者。

集成 Grunt, Gulp and Bower

2015 具备了针对流行开源 Web 开发工具的支持,支持之中有包含在内了哟。Grunt 和 Gulp 能够助力你去自动化构建 Web 开发的操作流程,凭借它们你能够达成编译以及压缩文件相关的事宜。Bower 它是一种用于客户端库的管理工具,该工具涵盖了 CSS 和 库呢。

内置的模板

作为现阶段堪称最流行的前端框架当中的一个,它被用于构建单页面应用程序,也就是SPAs,它涵盖了用来创建模块,还有控制器,以及指令和工厂。

对于的支持致使ASP.NET变成一个用以构架客户端应用的优良服务器端框架sublime text 3 ruby,在完成一个版本之际,你能够自动合并并压缩全部文件,去查看我有关开始于ASP.NET里运用和的文章。

3

ASP.NET Core同样是以3作为基础,如此一来能够让你朝着云连接的应用程序增添实时功能。去查看我先前的例子:ASP.Net那是一个实时聊天的示例。

Web.

在ASP.NET Core里 ,原先混乱的web.文件 ,被新的称作“ .json”的云就绪配置文件给替代了。微软期望开发人员能更轻松地在云中部署应用程序 ,并且让应用可以依据特殊环境自动去读取正确的配置参数。

这是一个新的配置文件的样子:

基于 ASP.NET Core 全是插件化的缘故,你得去配置类的源代码呀,呈现出如下这般的样子:

 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;
        }
        public void Configure(IApplicationBuilder app)
        {
 app.UseDeveloperExceptionPage;
 app.UseMvc(m => {
 m.MapRoute(
 name: "default",
 template: "{controller}/{action}/{id?}",
 defaults: new { controller = "Home", action="Index"});
 });
        }

xUnit.Net: .NET 新的单元测试工具

曾经于先前的ASP.NET MVC当中,那个被默认的测试框架是,单元测试框架(时不时也会被称作叫这个),此框架运用。

特性来描述一个单元测试。

ASP.NET Core 将 xUnit.net 用作其单元测试框架,此框架借助特性予以替代。

特性,也消除了对

属性的依赖。

绝对的免费和开源

嗯呐,ASP.NET Core是以一种开源项目的形式被放置到了上面,你能够对源代码进行查看,并且能够去下载,还能够提交你所做的更改。

我认可开源的.NET 致使显著的意义得以产生,它促使积极的商业意义以及社区意义得以创建,万分感激微软所开展的工作。

文章来源:By , 10 Jun 2016

如有侵权请联系删除!

13262879759

微信二维码