.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM