ASP.NET Core 2.0 特性介绍和使用指南

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项目模板。

详细发布信息查看.NET Core 2.0.0发布说明文档

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

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

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

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

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

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

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

  • 问题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年下半年发布)

在深入一点,看这张图

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


【图】

  • 问题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

<PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework></PropertyGroup>

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

frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 883px; height: 176px;">

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

<ItemGroup><PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" /><PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0" /><PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.0" /></ItemGroup>

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

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

新增功能:Razor Pages介绍

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

Razor Pages是页面优先的架构,允许用户开发界面时,使用简单的服务端交互方式,通过页面模型对象(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<html>    <body>        <h2>The server-local time now is:</h2>        <p>@DateTime.Now</p>    </body></html>

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

@page@functions {public string FormatDate(DateTime theTime) {return theTime.ToString("d");
}}<html><body><h2>The server-local time now is:</h2><p>@FormatDate(DateTime.Now)</p></body></html>

结合使用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

<html>    <body>        <h2>This page was last updated:</h2>        <p>@Model.LastModified</p>    </body></html>

更多Razor Pages详细介绍参看资料。

回到目录

模板更新

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

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


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,启动应用程序数据收集,然后可以直接预览日志信息和应用程序性能报告。

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

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

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

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

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

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

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

更多信息参看使用应用程序洞察的性能分析。

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

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

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

更新信息参看:应用程序洞察在线文档

Razor支持C# 7.1

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

<LangVersion>latest</LangVersion>

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<Startup>().Build(); }

总结

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

相关文章: 

  • .NET Core 2.0 正式发布信息汇总

  • .NET Standard 2.0 特性介绍和使用指南

  • .NET Core 2.0 的dll实时更新、https、依赖包变更问题及解决

  • .NET Core 2.0 特性介绍和使用指南

  • Entity Framework Core 2.0 新特性

  • 体验 PHP under .NET Core

  • .NET Core 2.0使用NLog

  • 升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署

  • 解决Visual Studio For Mac Restore失败的问题

原文地址:http://www.cnblogs.com/vveiliang/p/7380260.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/324071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

blog项目中遇到的问题及解决

1、dependencesmangement 只做资源定位 2、多模块开发中mapper扫描 3、lambda表达式简写时&#xff08;使用lombox建造者模式&#xff09; 4、新增评论时 使用mp的自动填充时userid未赋值

你在学校我安排了你没有做到最多凶你一顿,在公司不一样,直接得让走人!...

今天放一部分聊天记录吧~毛帅龙同学穆老师我今天跟着公司做项目了雄雄的小课堂可以呀雄雄的小课堂厉害了雄雄的小课堂好好干哈雄雄的小课堂等有空了出一套若依的文档雄雄的小课堂给大家分享分享毛帅龙同学那个ruoyi视频买了雄雄的小课堂199&#xff1f;毛帅龙同学现在每天看两个…

2018/7/10-纪中某C组题【jzoj3792,jzoj3793,jzoj3794】

前言 由于B组题目太残酷&#xff0c;忒容易爆零&#xff0c;于是我就回到了C组温暖的怀抱 今日说法分数 正题 T1&#xff1a;jzoj3792,P2062-分队问题【贪心】 博客链接&#xff1a;https://blog.csdn.net/mr_wuyongcong/article/details/80988719 T2&#xff1a;jzoj3793,…

ASP.NET Core 源码学习之 Logging[2]:Configure

在上一章中&#xff0c;我们对 ASP.NET Logging 系统做了一个整体的介绍&#xff0c;而在本章中则开始从最基本的配置开始&#xff0c;逐步深入到源码当中去。 默认配置 在 ASP.NET Core 2.0 中&#xff0c;对默认配置做了很大的简化&#xff0c;并把一些基本配置移动到了程序…

两个月拿到N个offer,看看我是如何做到的

转载自 两个月拿到N个offer&#xff0c;看看我是如何做到的 前言&#xff1a; 北京-三年经验-Java&#xff0c;在金三银四这两个月期间&#xff08;在五月初还去面试了几家&#xff0c;主要是三四月份期面试剧居多&#xff09;&#xff0c;我跳槽面试&#xff0c;前前后后我…

“小朋友”们节日快乐呀~

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。今天是六月一日——儿童节&#xff0c;看了看朋友圈&#xff0c;不管是大孩子还是小孩子&#xff0c;都在过节&#xff0c;哈哈哈。最近四班一直在做项目&#xff0c;一共6个小组&#xff…

Entity Framework Core 2.0 全局查询过滤器

本博文翻译自&#xff1a;http://gunnarpeipman.com/2017/08/ef-core-global-query-filters/ Entity Framework Core 2.0 全局查询过滤器 Entity Framework Core 2.0引入了全局查询过滤器&#xff0c;可以在创建模型时应用到实体 。它使得构建多租户应用程序和支持对实体 的软…

SpringCloudGateway

文章目录SpringCloudGateway起步消费端整合SpringCloudGateway静态路由配置内置扩展网关过滤内置网关过滤自定义过滤全局过滤器内置全局过滤器自定义全局过滤器ForwardRoutingFilterNetty全局路由响应式负载均衡代理GatewayMetricsFilter网关度量过滤器&#xff08;服务监控&am…

来自一位家长的肺腑之言,句句在理!!!

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号【雄雄的小课堂】。今天分享一段话&#xff0c;原创来自三班的一位同学家长&#xff0c;可所谓字字在理&#xff01;看完之后我自己也反思了好多&#xff0c;主要是思想观念的转变&#xff0c;就像佟老师给我说的一样…

jzoj1295,P1607-轻轨(庙会班车)【贪心,线段树】

前言 我考试时敲了一个不仅比正解编程复杂度高&#xff0c;而且时间更慢&#xff0c;还AC不了的费用流 垃圾代码 #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define MN 20011 using namespace std; struct node{int…

一篇文章了解RPC框架原理

转载自 一篇文章了解RPC框架原理 1.RPC框架的概念 RPC&#xff08;Remote Procedure Call&#xff09;–远程过程调用&#xff0c;通过网络通信调用不同的服务&#xff0c;共同支撑一个软件系统&#xff0c;微服务实现的基石技术。使用RPC可以解耦系统&#xff0c;方便维护…

winform分页案例简单实现方式~

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。最近&#xff0c;四班在做KTV点歌系统&#xff0c;正好需要用到分页的内容&#xff0c;所以今天我就整理整理&#xff0c;写了一个简易的winfrom分页案例&#xff0c;以下是案例截图&#…

.Net Core下通过Proxy 模式 使用 WCF

.NET Core下的WCF客户端也是开源的&#xff0c;这次发布.NET Core 2.0,同时也发布了 WCF for .NET Core 2.0.0, 本文介绍在.NET Core下如何通过Proxy 消费WCF服务。 我们现在直接可以在 standard 2.0下调用wcf服务了&#xff0c;不过 Microsoft WCF Web Service Reference Pro…

JWT 入门

文章目录使用JWT的原因JWT结构JWT入门案例Token拦截使用JWT的原因 为了保护项目之中的数据资源&#xff0c;那么一定就需要采用认证检测机制&#xff0c;于是SpringCloud进行认证处理&#xff0c;就可以使用SpringSecurity 来实现了&#xff0c;但是如果你真的去使用了SpringSe…

当你左右看看没有发现我时,千万千万别往看……

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。周五&#xff0c;又是一个考试的周五&#xff0c;因为本周都在做项目&#xff0c;还以为同学们没有好好的备考&#xff0c;估计考的不好&#xff0c;没想到今天测试的结果是自从考试以来最…

2018/7/11-纪中某C组题【jzoj1293,jzoj1294,jzoj1295】

前言 今天C组题目有毒&#xff0c;第一题题目玄学&#xff0c;第二题就是不会&#xff0c;第三题考的贼偏。fw(hjw&#xff0c;his博客&#xff1a;https://blog.csdn.net/gx_man_vip)说今天B组题目还行早知道就去做B组了qwq 今日分数 去掉了十分强大的纪中dalao 正题 T1&…

关系型数据库的分片原则

来自Citus的Ozgun Erdogan分享了进行数据库分片的三个原则&#xff0c;并强调应用类型是决定数据库分片最主要的因素。其中B2B类型的应用最容易进行数据库分片。 在数据库很小的时候&#xff0c;可以很容易地通过添加硬件来扩展数据库。但随着数据表数量的不断增长&#xff0c…

分布式架构--基本思想汇总

转载自 分布式架构&#xff0d;&#xff0d;基本思想汇总 在互联网大行其道的今天&#xff0c;各种分布式系统已经司空见惯。搜索引擎、电商网站、微博、微信、O2O平台。。凡是涉及到大规模用户、高并发访问的&#xff0c;无一不是分布式。 关于分布式系统&#xff0c;并没有…

花了100多去KTV不是唱歌,竟然是……

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。老师&#xff0c;歌词可以实现&#xff0c;不过比较麻烦~也还行你这样 准备几首歌的歌词就行到时候只演示这几首歌如果是其他的哥的话&#xff0c;就显示暂无歌词行&#xff0c;有时间就试…

jzoj4272-序章-弗兰德的秘密【树形dp】

正题 大意 两棵树&#xff0c;它们的相似值是它们留下最多的节点使它们的结构相同。求相似值。 这两颗树就是结构相同的&#xff0c;相似值是8。 解题思路 就是树形dp。可以用f[i][j]f[i][j]表示树1的第ii号节点和它的子树与树2的j" role="presentation" s…