.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主題網站提供了相關內容的高級別視圖:
.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 中啟用:
- 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統一平台。你可以看到,我們正在從那種項目風格轉向更具前瞻性的項目。很高興看到平台在基本運行時間性能方面再次擴展,而且還有更多內容需要沿著這些路線發展。
相關連接:
- //devblogs.microsoft.com/dotnet/announcing-net-6-rc1/
- //devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-6-rc-1/
- //devblogs.microsoft.com/dotnet/update-on-dotnet-maui/
- //platform.uno/blog/uno-platform-3-10-day-0-support-for-net-6-rc1-winui-infobadge-windows-11-fluent-styles/