.NET Core 2.1改進了性能,並提供了新的部署選項

微軟正式發佈了面向所有平臺的 .NET Core 2.1。微軟計劃長期支持這個版本,但據來自微軟的 Rich Lander 介紹,官方還沒有確定。Lander 表示,在完成之前,該版本新增了許多小的更新。一旦正式確定,這個版本將獲得為期三年的 LTS。Lander 指出,對於所有開發中的 .NET Core 應用程序,編程人員應該現在就著手切換到 2.1。

.NET Core 2.1改進了性能,並提供了新的部署選項

切換到 2.1 有什麼好處?除了很快就可以確定的 LTS 外,2.1 還提供了 Ubuntu 18.04,、Alpine Linux 和 ARM32 支持。它還添加了自包含應用程序發佈,並改進了性能。

在考慮性能提升時應該注意,這裡的性能提升是指,與 .NET Core 2.0 相比,2.1 的增量構建性能的提升。同時,2.1 版本還增加了一個全新的類 SocketsHttpHandler,這是 HttpClient 的 C# 實現。SocketsHttpHandler 比之前的實現要快許多,並且提供了一致的跨平臺行為。

來自微軟的 Stephen Toub 詳細介紹了 2.1 版本的運行時性能提升。其中有些提升來自新增的 System.Span 及相關類型。.NET Core 2.1 使用的 Just-In-Time(JIT)編譯器也做了一些修改。值得一提的補充是增加了利用分層編譯的能力。在這個場景下,JIT 編譯器會盡快生成最小優化的可執行文件。完成之後,JIT 編譯器會觀測程序運行,對使用頻繁的方法進行更為優化的二次編譯。其理論是,如果可以的話,為什麼要對可能並不怎麼使用的方法進行優化?這一行為並不是默認激活的,但可以通過下面的環境變量來激活:

COMPlus_TieredCompilation="1"

性能提升不限於代碼優化;.NET Core 團隊引入了一種新的壓縮標準,減少數據傳輸。微軟使用了一種基於谷歌提供的C代碼的實現,向 .NET Core 2.1 添加了 Brotli 壓縮支持。由於 Brotli 得到了許多 Web 瀏覽器和 Web 服務器的廣泛支持,所以 .NET Core 提供對這項技術的支持是非常有用的。

最後,.NET Core 2.1 支持自包含部署(SCD)。這讓開發者生成的應用程序的 Release 構建中可以包含所有執行時需要的 .NET Core 運行時文件。然而,與平常的構建相比,這會佔用更多的磁盤空間,因此,它允許開發人員指定應用程序運行的平臺和使用的 .NET Core 版本。

微軟已經提供了 .NET Core 2.1 的完整發布說明及所有支持平臺的下載(Windows、macOS 和 Linux)。


分享到:


相關文章: