欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET Core 2.2发布一览

程序员文章站 2023-10-29 11:55:22
本周终于发布了.NET Core 2.2,ASP.NET Core 2.2以及Entity Framework Core 2.2,虽然更大的新闻可能是.NET Core 3.0的特性公布,但不妨先将现有的.NET Core版本升级到2.2,及时体验一下新的功能。 .NET Core 2.2 分层编译 ......

本周终于发布了.net core 2.2,asp.net core 2.2以及entity framework core 2.2,虽然更大的新闻可能是.net core 3.0的特性公布,但不妨先将现有的.net core版本升级到2.2,及时体验一下新的功能。

.net core 2.2

分层编译

分层编译特性使得运行时可以更灵活地使用jit编译器,从而提升在启动方面和最大化吞吐量上的性能。该特性在.net core 2.1时已作为可选特性加入其中,在.net core 2.2的预览版本中被默认使用,而到了最终发布阶段,还是改回了可选特性。.net core 3.0之后或许会成为默认选项吧。

运行时事件

为了获悉在运行应用程序时服务的工作情况,需要监测在当前进程中的诸如垃圾回收,jit和线程池等运行时服务。在windows系统中,一般etw(event tracing for windows) 的监测功能就可以满足此要求。但在.net core 2.2之前,etw的执行效果并不令人如意。
现在, 通过eventlistener类可以使用coreclr事件。这些事件描述了垃圾回收,jit,线程池和interop的行为。它们在windows上作为coreclr etw provider的一部分对外公开。这将允许应用程序可以使用这些事件,又或者使用传输机制发送给其它监测服务。

在sqlconnection中提供对accesstoken的支持

sql server的ado.net provider,sqlclient,现在支持通过设置accesstoken属性以认证使用azure active directory的sql server连接。该属性包含在microsoft.identitymodel.clients.activedirectory类库里。

在main方法之前插入代码

现在通过startup hook可以在运行应用程序的main方法之前插入特定的代码。对于已经发布的应用程序,不用重新编译或者改变程序,startup hook能够定制所需的行为。

windows arm32

与.net core 2.1中对linux arm32支持相似的,在.net core 2.2里加入了对windows arm32的支持。但在发布时遇到了较严重的bug,所以可能在之后的版本中,比如2019年1月即将发布的.net core 2.1.1中会真正附加此特性。

平台支持

net core 2.2支持下列操作系统:

  • windows client: 7, 8.1, 10 (1607+)
  • windows server: 2008 r2 sp1+
  • macos: 10.12+
  • rhel: 6+
  • fedora: 26+
  • ubuntu: 16.04+
  • debian: 9+
  • sles: 12+
  • opensuse: 42.3+

芯片支持包括:

  • x64 on windows, macos, and linux
  • x86 on windows
  • arm32 on linux (ubuntu 16.04+, debian 9+)
  • arm32 on windows (1809+; available in january)

asp.net core 2.2

这次的更新主要是为了提高开发者的生产力以及增强创建web/http api的功能。同时,也在性能方面有所改善。这些更新包含以下几点:

  • 与swagger类库更好地集成,代码分析提供了设计时检查。
  • 引入终端路由,提升了mvc中20%的路由性能
  • 改进linkgenerator的url生成,支持路由参数转换
  • 加入了对于应用程序的健康进行监测新api(此功能来源自和beatpulse项目的集成)
  • 由于进程内托管的支持,在iis上提升了400%的吞吐量
  • 提升了15%的mvc模型验证性能
  • 在mvc中加入了对问题明细(problem details)(rfc 7807)的支持
  • 在asp.net core中可以预览对http/2 server的支持
  • 对于bootstrap 4与angular 6模板的升级
  • 提供了asp.net core signalr的java客户端
  • 在linux上提升了60%的http客户端性能,同时在windows上提升了20%

entity framework core 2.2

支持空间数据

空间数据可以用于表示物理距离和目标形状。在ef core 2.2中借助nettopologysuite类库的帮助对空间数据提供了支持。当前已支持的数据库包括sql server,sqlite和postgresql。

所有型实体(owned entity)集合

所有型实体中仅可以出现其它实体类型的导航属性。
ef core 2.0中新加了一对一关联的所有型实体,而在ef core 2.2中则进一步地扩展到了一对多的关联。

查询标签

该特性简化了代码中linq语句与日志中生成的sql语句之间的关联。

加上标签的方法是tagwith。

  var nearestfriends =
      (from f in context.friends.tagwith(@"this is my spatial query!")
      orderby f.location.distance(mylocation) descending
      select f).take(5).tolist();

最后生成的sql语句中包含了linq代码中附加的标签。

-- this is my spatial query!

select top(@__p_1) [f].[name], [f].[location]
from [friends] as [f]
order by [f].[location].stdistance(@__mylocation_0) desc