博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net Core 2.0生态(3):ASP.NET Core 2.0 特性介绍和使用指南
阅读量:6814 次
发布时间:2019-06-26

本文共 4884 字,大约阅读时间需要 16 分钟。

ASP.NET Core 2.0 发布日期:2017年8月14日

ASP.NET团队宣布ASP.NET Core 2.0正式发布,发布Visual Studio 2017 15.3支持ASP.NET Core 2.0,提供新的Razor Pages项目模板。

详细发布信息查看

最新版SDK下载:https://dot.net/core

ASP.NET Core 2.0提供一系列新功能使得Web应用开发、发布、部署和维护变得更加容易,框架性能得到进一步提升。

对于.NET Core 2.0的发布介绍,围绕2.0的架构体系,本系列相关文章:

前言:答读者问(time by:2017.8.19)

在开始之前先集中回复前两篇文章评论中大家比较关注的问题

  • 问题1:工具的更新问题
    问题by @軒轅劍:有没单独升级到15.3的更新啊?
    答案by @yyww:下载新版本的安装程序,1M多,会自动更新的

VS2017安装程序经过重构变成模块化安装,所以对于15.3版本的更新是增量更新,下载最新的安装程序,会自动检测。

154183-20170819104318100-1907956236.png

Visual Studio For Mac 7.1也一样,检测软件更新,进行增量更新。

154183-20170819104408928-1487835879.png

  • 问题2:.NET Standard到底是什么?
    问题by @wdwwtzy:这个系列不错,想听听 standard 到底是啥,建议深入一些,现在太浅了
    问题by @海阔天空XM:几张体系结构图?

.NET Standard是一组API集合,支持.NET Standard的.NET平台之间可以实现代码共享,基于.NET Standard构建的类库可以在支持.NET Standard的.NET平台进行复用,防止代码碎片化。

目前支持.NET Standard 2.0的平台有:

  • .NET Framework 4.6.1
  • .NET Core 2.0
  • Mono 5.4
  • Xamarin.iOS 10.14
  • Xamarin.Mac 3.8
  • Xamarin.Android 7.5
  • UWP (预计2017年下半年发布)

在深入一点,看这张图

154183-20170819104504850-1505089857.png

平台对.NET Standard 支持对应表(by @农码一生)

208266-20170816090236475-760096061.png

【图】

  • 问题3:关于System.Drawing API是否提供?
    问题by @PowerShell免费软件:.net core2正式版了,增加了System.Drawing。
    有人在上面成功运行以前的winform程序吗?谁能帮忙搞个hello试试看吗?

命名空间System.Drawing是增加了,只提供了结构体,并没有提供绘图类,相信在接下来的版本会支持。

项目升级到ASP.NET Core 2.0

ASP.NET Core 2.0 可以同时运行在.NET Framework 4.6.1.NET Core 2.0框架,更改项目目标框架为:netcoreapp2.0

netcoreapp2.0

在Visual Stdio中可以设置项目属性

1-TargetFramework.png

也可以手动编辑项目文件,将原项目中Microsoft.AspNetCore.*引用包升级到2.0

ASP.NET Core 2.0项目发布做了优化,发布文件只包含引用的类库。这个优化有助于使发布过程更流畅,更容易分发Web应用程序。

将 ASP.NET Core 1.0 升级到 2.0 详细内容可以参看。

新增功能:Razor Pages介绍

ASP.NET Core 2.0中,提供一种新的编码方式,这种方式在页面逻辑集中的场景下比使用MVC架构开发更加简单。

是页面优先的架构,允许用户开发界面时,使用简单的服务端交互方式,通过页面模型对象(Page Model)进行数据交互,而无需控制器中转。

在项目启动文件中,添加代码

public class Startup{    public void ConfigureServices(IServiceCollection services)    {        // 包含对Razor Pages 和控制器支持.        services.AddMvc();    }    public void Configure(IApplicationBuilder app)    {        app.UseMvc();    }}

当在服务注册中调用AddMvc方法时会激活Razor Pages功能。

添加一个测试页面,放在Pages目录下,命名为Now.cshtml

@page            

The server-local time now is:

@DateTime.Now

这看起来像是标准的Razor视图,只是在页面顶部添加标记@page,就定义该页面为独立的Razor Page,在页面中依然可以使用 HtmlHelpers, TagHelpers 或者.NET 代码,可以像在Razor视图中一样定义方法,只需添加块级元素@functions,然后在其内部编写代码。

@page@functions {public string FormatDate(DateTime theTime) {    return theTime.ToString("d");}}            

The server-local time now is:

@FormatDate(DateTime.Now)

结合使用PageModel对象,可以创建更加复杂的页面交互,PageModel是一个MVVM架构概念,相当于视图模型(VM),允许执行方法并将属性绑定到对应的页面中。在Pages目录中创建一个NowModel.cshtml.cs 类。

namespace MyFirstRazorPage.Pages{public class NowModel : PageModel{    private IFileProvider _FileProvider;    public NowModel(PhysicalFileProvider fileProvider)    {    _FileProvider = fileProvider;    LastModified = _FileProvider.GetFileInfo("Pages/Now.cshtml").LastModified.LocalDateTime;    }    public DateTime LastModified { get; set; }    public void OnGet() { }}}

这个类继承自PageModel,根据页面业务需要可以构建与页面交互的逻辑类,并且可以对该类中的业务逻辑进行单元测试。在本例中,将LastModified属性加载到页面。另外注意OnGet方法用来声明PageModel可以响应HTTP GET请求。

更新Razor Page,使用PageModel定义的LastModified属性。

@page

@model MyFirstRazorPage.Pages.NowModel

            

This page was last updated:

@Model.LastModified

更多Razor Pages详细介绍。

模板更新

模板已经增强,不仅包含MVC模式的Web应用程序模板,也包含Razor Pages Web应用程序模板,还包含一系列单页应用(SPA)程序模板。这些单页模板使用Javascript服务功能在ASP.NET Core服务中嵌入NodeJS,将JavaScript应用程序服务器作为项目中的一部分进行编译。

2-NewTemplates-1024x667.png

命令行工具提供的内置项目模板

3-CommandLineTemplates-1024x564.png

Entity Framework Core 2.0提供DbContext池

参看:Entity Framework Core 2.0发布(稍后发布,会用单独一篇文章总结)

监视器、无代码更改配置、应用程序监视器

运行在Azure应用服务上的ASP.NET Core 2.0项目无需修改,提供性能分析、错误报告和Azure应用程序监视功能。

在Visual Studio 2017中右键项目,Add->Application Insights Telemetry,启动应用程序数据收集,然后可以直接预览日志信息和应用程序性能报告。

4-VisualStudioTelemetry-1024x882.png

这个功能可以让我们在开发阶段,对应用程序性能做出测试和反馈,当程序发布到Azure之后,可以在Azure门户中进行分析和调试,程序信息的收集从第一次发布应用程序并导航到云门户时开始。Azure将会以一个紫色横幅提示您,这表明应用程序监视和分析功能是可用的。

5-AzureBanner.png

点击进入查看应用程序监视服务,无需重新编译和部署,应用程序监视服务将开始报告捕获到的活动数据。

6-AzureTelemetryRequests.png

数据报告显示了应用程序中失败的请求和错误的数量。单击关注的数据项,将展示关于失败请求的详细信息:

7-AzureFailedRequests.png

上图中抛出一个System.Exception,点击查看异常报告,可以查看抛出异常的详细信息,包括调用堆栈:

8-AzureExceptionAnalysis.png

应用程序监视的快照调试现在支持ASP.NET Core 2.0应用。如果设置在,则顶部的“打开调试快照”链接将显示并显示完整的调用堆栈,可以单击堆栈中的方法来查看本地变量:

9-AzureStackTrace-422x350.png10-AzureLocals-467x350.png

好了!我们可以更进一步,点击右上角的“下载快照”按钮,在Visual Studio中启动一个异常调试会话。

这些页面的性能如何?从应用程序监视页面中,选择左侧的性能选项,深入地研究每个请求在应用程序的性能跟踪。

11-AzurePerf-500x263.png

更多信息参看。

如果您想要使用您的应用程序的原始日志,您可以在应用程序服务中启用诊断日志,并将诊断级别设置为警告或错误,以查看该异常被抛出。

12-AzureLoggingConfig-500x330.png

最后,选择左边的日志流,您可以看到您在开发人员工作站上所拥有的控制台。选择将在Azure中触发的严重级别或更大级别的错误和日志消息。

13-AzureLoggingConsole-492x350.png

所有应用程序感知功能都可以在 ASP.NET Core 中使用,不用重新编译和部署。快照调试需要添加,而配置就像在启动类中添加额外代码一样简单。

更新信息参看:

Razor支持C# 7.1

Razor视图引擎借助Roslyn编译器支持C# 7.1功能,比如:默认表达式、推断的元组名称和模式匹配泛型。要在项目中使用c# 7.1特性,在项目文件中添加以下属性,然后重新加载解决方案:

latest

C# 7.1本身还是预览版状态,可以在其GitHub存储库中查看。

简化应用程序的主机配置

主机配置已经大大简化,默认ASP.NET Core项目模板中提供WebHost.CreateDefaultBuilder,自动分配一个Kestrel服务器,如果IIS可用则尝试运行在IIS上,并配置标准控制台日志提供程序。

public class Program{    public static void Main(string[] args)    {        BuildWebHost(args).Run();    }    public static IWebHost BuildWebHost(string[] args) =>        WebHost.CreateDefaultBuilder(args)            .UseStartup
() .Build();}

总结

ASP.NET Core 2.0提供的一系列新功能提供编写应用程序的新方法,简化了应用程序在生产环境的管理和维护。

转载于:https://www.cnblogs.com/YGYH/p/7395707.html

你可能感兴趣的文章
GO语言的开源库
查看>>
java中获取系统属性以及环境变量
查看>>
微信开发(03)之新建按钮时报错 errcode 40054
查看>>
TEA encryption with 128bit key
查看>>
操作系统定期定时执行python脚本
查看>>
TCP的拥塞控制
查看>>
FZU 1894 志愿者选拔 单调队列
查看>>
**app后端设计(10)--数据增量更新(省流量)
查看>>
用SoapUI进行Webservice的性能压力测试
查看>>
.NET反编译之manager,base.AutoScaleMode修复
查看>>
光看这图片就知道是大片--今天是五一劳动节尽管还是敲着代码(日常就是这样)然后想不出写什么了,也找不到好的素材,最后开心一下吧...
查看>>
希尔排序算法
查看>>
【Cocos2d-Js基础教学(3)各种基类的定义和使用】
查看>>
java.util.logging.Logger使用详解
查看>>
Sql Server -更新语句,修改的字段是日期时间型,修改其中的月份
查看>>
【转】linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解----不错...
查看>>
Vertica增加一个数据存储的目录
查看>>
小小的告别一下这个博客
查看>>
【转】内核编译时, 到底用make clean, make mrproper还是make distclean(转载)
查看>>
The YubiKey NEO
查看>>