.NET 6 RC1 正式發佈

昨天晚上微軟發佈了.NET 6的兩個RC版本中的第一個版本,該版本將於11月正式發佈,作為在開源MIT協議下整合所有不同的.NET開發模組件的開源跨平台實現。這是一個從2014年開始,持續多年的,以改變應用開發遊戲規則的努力,由於COVID-19大流行,推遲了一年,這個版本終於完成了,將基於Mono的Xamarin 也整合到了.NET 6, 不過據官方博客說明,MAUI 在.NET RTM上仍然是預覽版,要到2022年才能夠正式發佈。

過去的一年時間內,微軟.NET團隊和社區一起在6個預覽版本中加入了大量的功能特性,從RC1開始不再增加新的功能特性,只專註於功能的穩定性和性能優化,不過從.NET 6開始,.NET 框架支持把一些預覽的功能提供給用戶使用,因此從RC1開始已準備好進行實際生產測試,並且提供了生產可用的支持,使用過程中問題可以尋求微軟的技術支持。因此,今天的RC1發佈公告並不關注新的好東西,而是.NET 6的基礎性功能,其中還有許多功能在一段時間內無法完全實現。微軟的.NET主題網站提供了相關內容的高級別視圖:

image

.NET 團隊項目經理理Richard Lander 在 9 月 14 日的一篇宣布.NET 6 RC1博文中說, “在每一個版本中,我們都會規劃一些需要多年才能完成的項目,而且(根據定義)在一段時間內無法實現其全部價值,鑒於這些功能尚未完全實現,您會注意到這篇文章中對.NET 7 及以後這些功能可能採用的功能不做介紹。

以下是Lander 強調的此類功能的簡單摘要:

  • 源碼構建:GitHu倉庫說:”源碼構建的關鍵目標是滿足常用Linux發行版的官方封裝規則,如Fedora和Debian。許多 Linux 發行版都有類似的規則。這些規則往往有兩個主要原則:一致的可重複性,以及一切事物的源代碼。在此處查看更多有關此信息
  • 配置文件引導優化 (PGO):在5月的”關於PGO的對話“中,微軟這樣介紹PGO:”PGO通過在優化過程中添加新的信息來提高應用程序的性能,而優化過程取決於應用程序的執行方式,而不僅僅是程序的代碼。今天,Lander說,開發人員可以使用PGO:
    • 以更高的質量編譯啟動代碼。
    • 通過以低質量(或根本不)編譯低使用代碼來減少二進制大小。
    • 重新排列應用程序二進制文件,以便在啟動時使用的代碼在文件開始附近共用。

    .NET 團隊一直在努力使在.NET 6 中有最佳的 PGO 體驗。目前尚未啟用其他人使用 PGO 來優化應用。這就是接下來的.NET 7,在此處查看更多有關此信息

  • 動態 PGO:這涉及到改進實時 (JIT) 編譯器生成和消耗配置文件數據的方式,強調所有事情在過程中發生的”動態”場景。”動態PGO是靜態PGO系統的鏡像,當靜態 PGO 與Crossgen 2 集成時,動態 PGO 與 RyuJIT 集成。如果說靜態 PGO 需要單獨的訓練活動並使用特殊工具,則動態 PGO 是自動的,並且使用運行應用程序收集相關數據。靜態 PGO 數據持續存在的地方,每次應用運行後都會丟失動態 PGO 數據。動態 PGO 類似於跟蹤 JIT。在此處查看更多有關此信息
  • Crossgen2:Crossgen2 取代了Crossgen:Crossgen2 已啟用用於所有現有的Crossgen方案,Microsoft 還從 SDK 中刪除了(舊的)Crossgen,使其不再可訪問且無法使用。”Crossgen (1 和 2) 使預編 IL 能夠將本地代碼作為發佈步驟。預編主要有利於改善啟動。Crossgen2 是一種從零開始的實現,已被證明是代碼生成創新的卓越平台。例如,Crossgen2可以生成比Crossgen1更廣泛的IL模式集的代碼。在此處查看更多有關此信息
  • 安全緩解措施:對於此版本,團隊添加了兩個關鍵安全措施的預覽支持,這些安全措施將在默認情況下在.NET 7 中啟用:
    • CET:來自英特爾去年推出的控制流強制執行技術,旨在防範常見的惡意軟件威脅。Lander 說,在一些較新的英特爾和 AMD 處理器中,它增加了硬件功能,可以防止某些常見的攻擊類型,包括控制流劫持。在此處查看更多有關這些內容
    • W=X:這代表”寫xor執行”,維基百科介紹,並發音為W xor X。Lander 說,由於它能夠阻止基本的攻擊路徑,不允許同時編寫和執行內存頁面,因此這是一種非常有效的基本緩解措施,微軟避免了使用更高級的緩解措施,因為它們可能因缺乏這種功能而繞過。相反,微軟將增加其他補充緩解措施,如CET。在此處查看更多有關此信息
  • HTTP/3:HTTP協議的第三個版本已經被正式使用,它運行在QUIC加密的通用傳輸協議上,該協議在單個連接上對多個數據流進行多路復用。作為在.NET 6預覽版中提出的正式草案,Lander說,它使用QUIC解決了現有的功能和性能挑戰。”我們已經將HTTP/3納入.NET 6,這樣你就可以開始嘗試它了,這是一個預覽功能,因此不受支持。可能有些問題,需要與其他服務器和客戶端進行更廣泛的測試,以確保兼容性。在此處查看更多有關此信息
  • SDK 工作負載:這是.NET 6 預覽 5中強調的 SDK 工作負載的新方案,使 Microsoft 能夠在不增加 SDK 大小的情況下為新應用程序類型添加支持。它正在取代舊的單體 SDK 方法,這種方法因建造時間長和分佈大小大而不負重任。Lander 說:”在將來的版本中,我們打算刪除更多的組件,並使它們成為可選的,包括 ASP.NET 和 Windows 桌面。”最後,我們可以想像 SDK 僅包含 MSBuild、NuGet、語言編譯器和工作負載獲取功能。我我們非常希望結合廣泛的.NET 生態系統,並提供完成特定工作所需的軟件。您可以看到此模型如何更好地用於 CI 場景,使 dotnet 工具能夠為正在構建的特定代碼獲取一組定製組件。在此處查看更多有關此信息

Lander在總結中說。”.NET 6 有很多新的功能和功能,是為現在和未來,其中大部分已經在之前所有的預覽版本,也在即將到來的.NET 6 正式發佈博文里,同時,看到.NET 6 中的新功能為接下來的工作奠定了基礎,這令人鼓舞。這些都是功未來的大功能,將推動平台在明顯和非明顯的方式前進。

“在前幾個版本中,團隊需要專註於將.NET Core 構建為功能齊全、整體的開源和跨平台開發系統。接下來,我們專註於與Mono和Xamarin統一平台。你可以看到,我們正在從那種項目風格轉向更具前瞻性的項目。很高興看到平台在基本運行時間性能方面再次擴展,而且還有更多內容需要沿着這些路線發展。

 

相關連接:

Tags: