.NET 7 Preview 3添加了這些增強功能
- 2022 年 4 月 15 日
- 筆記
.NET 7 Preview 3 已發布, .NET 7 的第三個預覽版包括對可觀察性、啟動時間、程式碼生成、GC Region、Native AOT 編譯等方面的增強。
有興趣的用戶可以下載適用於 Windows、macOS 和 Linux 的 .NET 7 Preview 3。Microsoft 建議使用Visual Studio 17.2 Preview 3 的 預覽頻道版本來試用 .NET 7。
Native AOT 編譯
簡而言之,Ahead of Time(AOT)編譯可以預先構建所有內容,以避免在應用程式首次運行時需要「JIT」。很長一段時間以來,.NET 團隊一直在不知疲倦地工作,為dotnet帶來適當的Native pre-Time編譯。雖然部分AOT一直存在,但完全的「真實」支援從未開箱即用。
使用Native AOT,將預編譯引入 .NET 桌面客戶端和伺服器方案ReadyToRun,以及適用於移動設備和 WASM 的 Mono AOT。根據.NET團隊部落格的說法,添加這一功能並不是為了取代現有技術,而是為了提供一組新的功能,允許用戶訪問新的外形規格。 Native AOT 的主要優勢在於啟動時間、記憶體使用、訪問受限平台(不允許 JIT)以及磁碟空間更小。Preview 3 版本對 Native AOT 性能進行了優化更新,以下是最新的 Native AOT 性能(與現有的 AOT 編譯 「ReadyToRun」 對比):
接下來的幾個 .NET 版本將持續改進 Native AOT 兼容性,且將在 dotnet SDK 中添加一流的支援(Crossgen 應用程式),以支援使用 Native AOT 發布項目。 有關原生AOT如何工作以及如何開始的更多資訊,請查看官方文檔。
可觀察性
此預覽版還添加了對新的雲原生 OpenTelemetry 規範的支援。這包括規範更新 #988 和 #1708,它們使取樣器的跟蹤狀態可變。
// ActivityListener Sampling callback
listener.Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) =>
{
activityOptions = activityOptions with { TraceState = "rojo=00f067aa0ba902b7" };
return ActivitySamplingResult.AllDataAndRecorded;
};
System.Composition.Hosting
有了這個,最新的託管擴展性框架也進行了小的更新,以便與以前版本的API保持一致。使用新的 API,可以將單個對象實例添加到 System.Composition.Hosting 容器中。
啟用「Write-Xor-Execute」縮短了啟動時間
性能仍然是 .NET 7 的主要關注點。dotnet/runtime#65738 PR ,重新實現了預程式碼和調用計數存根(使用分層編譯幫助程式存根),可顯著減少運行時中創建後再修改的可執行程式碼數量。
啟用該 Write-Xor-Execute 新功能可縮短 10-15% 啟動時間。即使沒有啟用 Write-Xor-Execute,此更改也帶來了一些微基準測試和一些 ASPNet 基準測試的穩態性能提高(高達 8%)。
默認啟用 GC Regions
在 Preview 3 中,除了 MacOS 和 NativeAOT 之外的所有平台都默認啟用 GC Regions功能,該功能有助於提升高吞吐量應用程式的記憶體利用率。
有關 GC Regions 功能的詳細資訊可在該 Issue 中查看。
從 .NET 6 升級
正如我們之前所討論的,從.NET 6升級到7應該很簡單,並且升級失敗的可能性很小,但並非不可能。
- 前往官方下載站點並下載 .NET SDK。
- 為了安全起見,還可以在此處查看重大更改列表。
在繼續之前,請確保已備份項目,然後打開項目文件並修改目標框架屬性。
<TargetFramework>net7.0</TargetFramework>
在很大程度上,Microsoft 將 .NET 7 Preview 3 中包含的大量優化和錯誤修復歸功於社區貢獻者。其中包括對程式碼生成和實時編譯所做的修復。
有關此預覽版的詳細資訊,請參閱.NET團隊官方部落格文章。它還包含有關路線圖項目的一些非常有趣的資訊。



