.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
上一篇: Spring源码分析之IoC容器初始化
推荐阅读
-
.NET Core 3.0 ,WTM 2.3.9发布
-
net core WebApi——公用库April.Util公开及发布
-
.net core 发布到iis问题 HTTP Error 500.30 - ANCM In-Process Start Failure
-
在.NET Core 3.0中发布单个Exe文件(PublishSingleFile)
-
ASP.NET Core 2.2 WebApi 系列【七】泛型仓储模式和工作单元
-
ASP.NET Core程序发布到Linux生产环境详解
-
MVC5项目转.Net Core 2.2学习与填坑记录(1)
-
使用NuGet将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理
-
Jexus 5.8.2正式发布! 为Asp.Net Core生产环境提供平台支持
-
.NET Core 2.0 Preview2 发布汇总