当前位置: 移动技术网 > IT编程>开发语言>.net > .NET Core 2.2发布一览

.NET Core 2.2发布一览

2018年12月09日  | 移动技术网IT编程  | 我要评论

维耳乐,德文卷毛猫,卫辉市实验小学

本周终于发布了.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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网