.NET 7 Preview 3添加了這些增強功能


.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” 對比):

image

接下來的幾個 .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應該很簡單,並且升級失敗的可能性很小,但並非不可能。

在繼續之前,請確保已備份項目,然后打開項目文件並修改目標框架屬性。

<TargetFramework>net7.0</TargetFramework>

在很大程度上,Microsoft 將 .NET 7 Preview 3 中包含的大量優化和錯誤修復歸功於社區貢獻者。其中包括對代碼生成和實時編譯所做的修復。

有關此預覽版的詳細信息,請參閱.NET團隊官方博客文章。它還包含有關路線圖項目的一些非常有趣的信息。


免責聲明!

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



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