.NET 8正式釋出

張善友發表於2023-11-15

11 月 15 日開始的為期三天的 .NET Conf 線上活動的開幕日上,.NET 8作為微軟的開源跨平臺開發平臺正式釋出。.NET 團隊著重強調雲、效能、全棧 Blazor、AI 和 .NET MAUI 是.NET 8的主要亮點。。NET團隊在 .NET Conf 2023 [1]活動開幕式上表示:“透過這個版本,.NET 重塑了我們構建按需擴充套件的智慧、雲原生應用程式和高流量服務的方式。 無論你是部署到 Linux 還是 Windows,使用容器還是你選擇的雲應用模型,.NET 8 都能更輕鬆地構建這些應用。”

在數字化轉型的智慧化方向上我們可以用.NET 8 做下列這些場景:

  • 將 OpenAI 的 GPT 等大型語言模型 (LLM) 直接整合到 .NET 應用中,這個主要是透過開源專案 Semantic Kernel(簡稱SK)。
  • 使用單個功能強大的元件模型來處理 Blazor 的所有 Web UI 需求, Blazor 在.NET 8真的是成熟了,可以大力發揮全棧開發的能力了。
  • 使用 .NET MAUI 將移動應用程式部署到最新版本的 iOS 和 Android,在移動應用開發方面解決多年的包袱。
  • 發現新的語言增強功能,使你的程式碼在 C# 12 中更加簡潔和富有表現力。

對企業來說特別重要的是,.NET 8 [2]是一個長期支援 (LTS) 版本,這意味著它將獲得三年的支援和補丁,而標準期限支援 (STS) 版本則是 18 個月。對於開發人員來說,特別重要的是 .NET團隊正在向期待已久的原生提前編譯(NativeAOT)邁進 。

2020年的時候.NET團隊做過一項調查中發現Survey: Native AOT [results][3],.NET Core 中缺少NativeAOT 阻礙了開發平臺的採用,促使 .NET 團隊大力推動 AOT。

aot1

.NET 8透過推進NativeAOT來增強可持續計算,以減少記憶體使用並實現即時應用程式啟動,今天強調了AOT的功能,包括:

  • 它將應用程式編譯為使用更少記憶體的本機程式碼並立即啟動
  • 無需等待 JIT(實時)編譯器在執行時編譯程式碼
  • 無需部署 JIT 編譯器和 IL 程式碼
  • AOT 應用僅部署應用所需的程式碼
  • 現在,應用程式可以在不允許使用 JIT 編譯器的受限環境中執行

還描述了原生 AOT 大小最佳化。

image

在描述.NET 8的整體情況時,.NET 團隊表示:“NET 8提供了數千項效能,穩定性和安全性改進,以及平臺和工具增強功能,有助於提高開發人員的生產力和創新速度。在公告部落格[4]文章中,這數千項改進圍繞上述五個主題進行了分組。以下是每個領域的介紹。

效能
.NET團隊的 Stephen Toub 每年都會針對.NET效能方進行徹底、煞費苦心和詳盡的詳細說明,他總結了數千個效能資料點,宣稱: .NET 7 速度超快, .NET 8 更快。[5]

.NET 8 引入了新的程式碼生成器,即動態配置檔案引導最佳化 (PGO),它根據實際使用情況最佳化程式碼。此功能最多可將應用效能提高 20%。AVX-512 指令集支援對 512 位資料向量進行並行運算,在 .NET 8 中受支援和使用,從而允許在更短的時間內進行更多的資料處理。此外,基元型別現在實現了新的格式化和可解析介面,使它們能夠直接格式化和解析為 UTF-8,而不會產生任何轉碼開銷。這個結果可以看 TechEmpower 22輪Web框架 效能評測:.NET 8 戰績斐然的[6]說明

image

雲原生
.NET 8 以多種方式促進了雲原生開發,例如包括許多容器增強功能,但這裡的重大新聞是 .NET Aspire 的第一個預覽版的可用性,這是一個用於構建彈性、可觀察和可配置的雲原生應用程式的堆疊。 .NET Aspire 附帶了一組針對雲原生開發增強的精選元件,預設情況下包括遙測、復原、配置和執行狀況檢查,這個專案來自幾年前的實驗性專案Tye。

image

1be396873ea06b02dc859548ce19fcd

.NET團隊表示:“結合複雜而簡單的本地開發人員體驗,Aspire 可以在第 1 天起輕鬆發現、獲取和配置雲原生應用程式的基本依賴項。

image

在雲原生的容器方面,.NET 8 透過簡化應用程式的打包和使用預設的非 root 使用者配置增強安全性來簡化容器化。它還提供更小的映像大小以加快部署速度,並提供可選的Dirstroless Ubuntu 映像以增強安全性,以及多功能架構支援。


人工智慧


隨著生成式AI的到來,人工智慧領域發生了翻天覆地的變化,從底層語言、執行時,到庫的處理,到介面,到跨平臺應用,對於 人工智慧,.NET都有相對成熟的解決方案了。當下的這個生態位還是藍海!.NET攜帶完整的工具和生態,殺進來,爽的不要不要的。用 .NET寫整個的應用層程式碼,不需要寫一行 C++ 程式碼,就可以架構整個完整的產品體系和服務體系。如果競爭對手選擇的是其它技術架構,那麼,你相對他,會有很強的生產力優勢。.NET平臺.NET 團隊指出了展示模式和實踐的各種示例和參考模板 可幫助開發人員入門,Semantic kernel 下個月釋出正式版,目前是Beta6。

image

它們包括:

Blazor
Blazor 已經發展成為一個全棧 Web 開發框架,這要歸功於由 .NET團隊的 Steve Sanderson 領導的渲染改進,他是 Blazor 的建立者,最初稱為“Blazor United”。它同時提供客戶端 (Blazor WebAssembly) 和伺服器端 (Blazor Server),能夠根據條件提示切換裝置。

ASP.NET 產品經理 Daniel Roth 今年早些時候是這麼說:“在 .NET 8 中,我們正在擴充套件 Blazor 的功能,以便它能夠處理所有 Web UI 需求,包括客戶端和伺服器端呈現。作為這項工作的一部分,我們正在將現有的 Blazor Server 和 Blazor WebAssembly 託管模型與新功能合併,例如無狀態伺服器端呈現、流式渲染、導航和表單處理的漸進式增強,以及使用 Blazor 或 Blazor WebAssembly 對每個元件進行互動的能力。

今天的公告總結了所有這些內容:“透過專注於最佳化頁面載入時間、可伸縮性和提升使用者體驗的幾項新增強功能,開發人員現在可以在同一應用中使用 Blazor Server 和 Blazor WebAssembly,在執行時自動將使用者從伺服器轉移到客戶端。由於新的基於“Jiterpreter”的執行時和新的內建元件,您的 .NET 程式碼在 WebAssembly 上的執行速度明顯更快。作為增強 .NET 8 中整體身份驗證、授權和標識管理[9]的一部分,Blazor 現在支援生成基於 Blazor 的完整標識 UI。

image

.NET MAUI
.NET團隊表示,.NET多平臺應用程式UI擴充套件了開發人員的工具箱,為使用.NET構建跨平臺移動和桌面應用程式提供了全棧解決方案。 MAUI被稱為 Xamarin.Forms 的“演變”,因為它增加了桌面支援,以提供跨 Android、iOS、macOS 和 Windows 的統一開發體驗,幫助開發人員覆蓋更廣泛的受眾。加上開源專案AvaloniaUI 和UNO的補充, .NET 可以覆蓋所有平臺的UI應用開發,特別是國內信創市場的桌面端.NET具有極強的競爭力

在 .NET 8 中,該框架透過對最新移動作業系統的額外支援擴充套件了其覆蓋範圍,並改進了效能、可靠性和開發人員體驗。NativeAOT(實驗性)現在支援針對類似 iOS 的平臺。適用於 .NET MAUI 的新 Visual Studio Code 擴充套件[10]提供了開發跨平臺 .NET 移動和桌面應用所需的工具。現在支援 Xcode 15 和 Android API 34,允許您面向最新版本的 iOS 和 Android。在效能、控制元件和 UI 元素以及特定於平臺的行為方面[11]進行了大量質量改進,例如桌面互動增加了更好的點選處理、鍵盤偵聽器等。

image

C#12
藉助於C#12 ,你現在可以用簡單而優雅的語法在任何類和結構中建立主要建構函式,不再需要樣板程式碼來初始化欄位和屬性。使用簡潔而富有表現力的語法建立陣列、spans和其他集合型別。對 lambda 表示式中的引數使用新的預設值。不再需要過載或 null 檢查來處理可選引數。您甚至可以使用 using alias 指令為任何型別設定別名,而不僅僅是命名型別!

C# 12 中的新增功能[12]”指南解釋了版本 12 中的以下新功能:


總結

圍繞 .NET 8 有一大堆新特性和功能, Microsoft 還宣佈 Visual Studio 2022 17.8 已正式釋出。該公司還指出其 VS Code 和 C# 開發工具包可以幫助新手入門。Microsoft表示,另一種入門方法是使用SDK中新的.NET的GitHub Codespaces模板[13]。

今天的公告帖子還包括指向更多資源的連結,這些資源有助於充實 .NET 8 中跨 ASP.NET Core、Entity Framework Core、NuGet、.NET 執行時、.NET SDK、WPF、ARM64、除錯等的新增功能。

相關連結:

相關文章