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。
.NET 8通過推進NativeAOT來增強可持續計算,以減少內存使用并實現即時應用程序啟動,今天強調了AOT的功能,包括:
- 它將應用程序編譯為使用更少內存的本機代碼并立即啟動
- 無需等待 JIT(實時)編譯器在運行時編譯代碼
- 無需部署 JIT 編譯器和 IL 代碼
- AOT 應用僅部署應用所需的代碼
- 現在,應用程序可以在不允許使用 JIT 編譯器的受限環境中運行
還描述了原生 AOT 大小優化。
在描述.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]說明
云原生 .NET 8 以多種方式促進了云原生開發,例如包括許多容器增強功能,但這里的重大新聞是 .NET Aspire 的第一個預覽版的可用性,這是一個用于構建彈性、可觀察和可配置的云原生應用程序的堆棧。 .NET Aspire 附帶了一組針對云原生開發增強的精選組件,默認情況下包括遙測、復原、配置和運行狀況檢查,這個項目來自幾年前的實驗性項目Tye。
.NET團隊表示:“結合復雜而簡單的本地開發人員體驗,Aspire 可以在第 1 天起輕松發現、獲取和配置云原生應用程序的基本依賴項。
在云原生的容器方面,.NET 8 通過簡化應用程序的打包和使用默認的非 root 用戶配置增強安全性來簡化容器化。它還提供更小的映像大小以加快部署速度,并提供可選的Dirstroless Ubuntu 映像以增強安全性,以及多功能架構支持。
人工智能
隨著生成式AI的到來,人工智能領域發生了翻天覆地的變化,從底層語言、運行時,到庫的處理,到接口,到跨平臺應用,對于 人工智能,.NET都有相對成熟的解決方案了。當下的這個生態位還是藍海!.NET攜帶完整的工具和生態,殺進來,爽的不要不要的。用 .NET寫整個的應用層代碼,不需要寫一行 C++ 代碼,就可以架構整個完整的產品體系和服務體系。如果競爭對手選擇的是其它技術架構,那么,你相對他,會有很強的生產力優勢。.NET平臺.NET 團隊指出了展示模式和實踐的各種示例和參考模板 可幫助開發人員入門,Semantic kernel 下個月發布正式版,目前是Beta6。
它們包括:
- 客戶聊天機器人[7]
- 檢索增強生成RAG[8]
- 使用 Azure AI 服務開發應用[8]
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。
.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]進行了大量質量改進,例如桌面交互增加了更好的點擊處理、鍵盤偵聽器等。
C#12 借助于C#12 ,你現在可以用簡單而優雅的語法在任何類和結構中創建主要構造函數,不再需要樣板代碼來初始化字段和屬性。使用簡潔而富有表現力的語法創建數組、spans和其他集合類型。對 lambda 表達式中的參數使用新的默認值。不再需要重載或 null 檢查來處理可選參數。您甚至可以使用 using alias 指令為任何類型設置別名,而不僅僅是命名類型!
C# 12 中的新增功能[12]”指南解釋了版本 12 中的以下新功能:
- 主構造函數 - 在 Visual Studio 17.6 預覽版 2 中引入。
- Lambda 表達式中的可選參數 - 在 Visual Studio 17.5 預覽版 2 中引入。
- 任何類型的別名 - 在 Visual Studio 17.6 預覽版 3 中引入。
- 內聯數組 - 在 Visual Studio 17.7 預覽版 3 中引入。
- 集合表達式 - 在 Visual Studio 17.7 預覽版 5 中引入。
- 攔截器 - 預覽功能在 Visual Studio 17.7 預覽版 3 中引入。
總結
圍繞 .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、調試等的新增功能。
- Announcing .NET 8
- Introducing .NET Aspire: Simplifying Cloud-Native Development with .NET 8
- Announcing C# 12
- Entity Framework Core 8 (EF8) is available today
- Announcing ASP.NET Core in .NET 8
- Announcing .NET MAUI in .NET 8
相關鏈接:
- [1].NET Conf 2023: https://www.dotnetconf.net/
- [2].NET 8:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0
- [3]Survey: Native AOT [results]:https://github.com/dotnet/runtime/issues/41522
- [4].NET8公告博客:https://devblogs.microsoft.com/dotnet/announcing-dotnet-8/
- [5].NET 7 速度超快, .NET 8 更快:https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/
- [6]TechEmpower 22輪Web框架 性能評測:.NET 8 戰績斐然:https://www.cnblogs.com/shanyou/p/17828353.html
- [7]客戶聊天機器人:https://github.com/dotnet-architecture/eShop
- [8]檢索增強生成RAG: https://github.com/Azure-Samples/azure-search-openai-demo-csharp
- [9]使用 Azure AI 服務開發應用: https://devblogs.microsoft.com/dotnet/demystifying-retrieval-augmented-generation-with-dotnet/
- [10]Visual Studio Code 擴展: https://aka.ms/maui-devkit-blog
- [11]行為方面性能改進: https://devblogs.microsoft.com/dotnet/dotnet-8-performance-improvements-in-dotnet-maui
- [12]C# 12 中的新增功能: https://learn.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-12
- [13]SDK中新的.NET的GitHub Codespaces模板: https://github.com/codespaces