• .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
    
  • 相关阅读:
    Docker之设置加速器
    Nginx之美多商城前台部署
    Nginx之负载均衡
    Nginx之反向代理
    美多商城后台MIS系统部署之Nginx配置
    Nginx之server和location配置使用
    题解 P4721 【【模板】分治 FFT】
    题解 P3338 【[ZJOI2014]力】
    题解 CHSEQ22 【Chef and Favourite Sequence】
    题解 CF813F 【Bipartite Checking】
  • 原文地址:https://www.cnblogs.com/kenwoo/p/10087581.html
Copyright © 2020-2023  润新知