今年最大的.NET活動正在進行, 可以通過Channel9 https://channel9.msdn.com/Events/dotnetConf/2021 看具體的Session 。微軟和社群一直在努力統一.NET技術棧。從Visual Studio 到 SQL 和 Azure ,所有功能聚集一堂,讓您在桌面、網路、移動和跨平臺開發夢想成為現實。在第一天的Keynotes上斯科特 ·亨特 和其他的團隊成員為我們做.NET 6釋出的相關說明。
首先是回顧了.NET統一平臺的生態系統,這張圖相比以往有大的變化, 底層完成了統一,生態工具越發完整。自2014年11月12日宣佈開源後,.NET就成為了一個跨平臺、面向多場景的技術。你可以在傳統的Windows上安裝.NET,也可以在Linux,macOS下安裝.NET並進行雲原生、桌面、移動應用、大資料、機器學習、遊戲、物聯網的開發。這次更新也圍繞這些場景,為不同行業進行賦能。
過往一年.NET的生態繼續增長,使用vs開發的人數增長到了540萬,特別是.NET 6的開發,社群貢獻者超過6900人,貢獻的超過2.1W。
NET 6 帶來了許多效能改進和生產力提升,而且還是一個長期支援版本,意味著你除了可以穩定地使用外,還可以得到安全和補丁更新。根據.NET官網上的資料,.NET 6在2023年11月前都會得到維護,所以大家可以安心使用 。在.NET 的每個連續版本中,.NET 在執行速度和記憶體使用方面都取得了一些令人印象深刻的進步。如果你一直沒有跟蹤, 你很可能會被. NET 框架的累積收益吹走。這一點你可以看看Techempower的測試的報告,具體參見 https://www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=composite
Visual Studio 2022從公開預覽開始,微軟就告訴⼤家這是第⼀個64位版本的Visual Studio。這意味著你不再需要受限於devenv.exe程式內4G記憶體的限制,開發人員能夠更快開啟,編輯,運⾏和除錯更多大而複雜的解決⽅案。當然Visual Studio 2022是64位應⽤程式,但它是不會改變通過Visual Studio構建應⽤程式的型別和位數。也就是說你依然可以通過它去維護你之前構建的32位應⽤程式,以及基於arm架構的應⽤程式
Visual Studio 2022 讓開發團隊更快地構建雲原生應用。結合GitHub Actions , 更好地讓你的雲原生應用能夠基於CI/CD快速迭代,提升開發效率。當你構建初次構建雲應用時,Visual Studio 2022就會幫你設定你所需要的相關配置,如Azure環境,如GitHub Actions 上所對應的設定等。讓開發⼈員更專注於開發。
Visual Studio 2022 更好地讓你編寫.NET應⽤程式,⽆論你是傳統的桌面和網頁開發人員,是基於全新的Blazor構建你的Web解決⽅案,還是基於MAUI的跨平臺客戶端解決方案,你都可以通過Visual Studio 2022快速搭建,編寫,除錯和部署。當然之前鬧得沸沸揚揚的熱過載都會在Visual Studio 2022出現。作為.NET 開發⼈員的你不心動麼?
.NET升級助手已經支援.NET 6,幫助你把傳統的.NET Framework應用程式升級到.NET 6
C#語言的最新版本是10.0,有幾個有趣的變化,對於愛整潔的csharper 來說,全域性引用(Global using)和 檔案範圍的名稱空間 是很好的互補。現在,您可以宣告適用於整個編譯單元(很可能是專案)的全域性使用,並避免到每個檔案頂部的去新增相同指令集。檔案範圍的名稱空間還允許您宣告適用於給定檔案中所有程式碼的名稱空間,無需單行無需更多匹配捲曲大括號,原始檔中的凹痕級別也較少。
Minimal API 是構建 HTTP 服務的另一種方法,用於開發雲原生應用是很爽的。在.NET 6通過 web 模板建立的專案都會使用Minimal API。這裡需要說明⼀點:Minimal API不會取代大家熟悉的MVC框架。如果你的應用是希望構建API,建議使用web模板的方式去構建。但如果你需要更多與 ASP.NET頁面相關的東西建議還是使用MVC模板。
微軟雲服務的產品已經使用.NET 5/6構建,獲得了很大的收益,你訪問https://cn.bing.com/version 就知道bing已經執行在.NET 6
YARP 也釋出了期待的1.0, Microsoft Dynamics 365 和 Azure App Service已經在使用YARP。
從單體應用到微服務應用的開發也是.NET 6的主要場景,各類雲服務已經全面支援.NET6,AKS 搭配Dapr 上執行dotnet應用是最佳選擇,微軟已經推出的Azure Container Apps 就是整合 了Dapr,使用Visual Studio 2022開發容器化應用程式可以直接釋出到Azure Container Apps,具體參見我的另外一篇文章<整合Dapr的 Azure 容器應用>瞭解一下Azure Container Apps
在 ASP.NET Core 6 裡面有大量的更新是關於Blazor。例如,Blazor 應用程式現在可以直接編譯到 WebAssembly,以便在 IL 解釋(即.NET 本地編譯)版本的相同程式碼上來提高應用程式速度。本地編譯/除錯體驗仍然很快,因為漫長的編譯時間僅適用於包裝/釋出。微軟也為Blazor的開發帶來了一套元件庫Blazor Fluent UI
還有一個非常有趣的功能,使 Blazor 可用於通過 MAUI 編寫桌面應用程式。Blazor 的最大好處就是開發人員可以完全用 C# 編寫 Web 應用程式,而不需要為了寫前端必須切換到 Javascript。如果沒有 C# 和 Javascript 之間的額外接縫,前端和後端程式碼之間就不需要對映層。可以在兩側使用相同的 C# 模型,這意味著需要的程式碼更少,因此開發應用程式所需的時間也更少。Blazor 桌面進一步擴充套件了這一概念,以允許此共享程式碼現在也可以與桌面應用程式無縫整合。
MAUI 是 Xamarin 的演進,還包括桌面平臺。它允許從單個程式碼庫針對 iOS、Android、macOS 和 Windows。MAUI 處理對本機平臺 API 的抽象,因此您可以以與平臺無關的方式訪問裝置感測器等內容。對 Xamarin 的一種印象是,它們最終得到的介面很少,而且在任何平臺上都不太好看。MAUI 將如何解決這一問題還有待觀察。如果你關心的是跨多個平臺的開發速度和維護成本,那麼 MAUI 值得仔細研究。MAUI 要在2022年的第二個季度正式釋出,大會上釋出了.NET MAUI Preview 10, 很多同學安裝了VS2022卻找不到MAUI,因為他需要 需要使用Visual Studio 2022 的Preview 通道下安裝17.1 Preview,建議當前採取觀望的方法,進行小的嘗試以瞭解平臺在全面採用之前的長期發展方向。