.NET 6 如期而至

微軟技術棧發表於2021-11-15

大家好,經過多個月的迭代,.NET 6正式版如期和大家見面了!你安裝好了嗎?還是等等黨?希望看完這篇文章你會對.NET 6有更多瞭解。

自2014年11月12日宣佈開源後,.NET就成為了一個跨平臺、面向多場景的技術。換句話說,你可以在傳統的Windows上安裝.NET,也可以在Linux,macOS下安裝.NET並進行雲原生、桌面、移動應用、大資料、機器學習、遊戲、物聯網的開發。這次更新也圍繞這些場景,為不同行業進行賦能。

160d0120bd120e1aa2284d707cc82202.png

.NET 6是一個LTS版本,意味著你除了可以穩定地使用外,還可以得到安全和補丁更新。根據.NET官網上的資料,.NET 6在2023年11月前都會得到維護,所以大家可以安心使用。

673f3a5559535c3a98579be5cc301a1e.png

如果你還沒有/準備安裝.NET 6,請點選以下連結:
https://aka.ms/InstallD

7d85ecd7991e405295343fa4a8414a0e.png

.NET6 有不少更新,針對不同應用場景都有很多亮點,下面進行一些歸納:

Minimal API

Minimal API 是構建 HTTP 服務的另一種方法。在.NET 6通過 web 模板建立的專案都會使用Minimal API。這裡需要說明⼀點:Minimal API不會取代大家熟悉的MVC框架。如果你的應用是希望構建API,建議使用web模板的方式去構建。但如果你需要更多與 ASP.NET頁面相關的東西建議還是使用MVC模板。

dotnet new web -o webapidemo

看看預設Program.cs程式結構

var builder = WebApplication.CreateBuilder(args); 
var app = builder.Build();
app.MapGet("/",()=>"Hello World!"); 
app.Run();

你可以用四行程式碼快速完成一個API功能。當然你可以基於你的需要去新增MVC模組,驗證模組等,這就看專案的需要了。

更多關於Minimal API,請訪問以下網址:
https://aka.ms/LearnDN001

3fe3fc9c17e06df4ee01c17f964596c5.png
(掃碼查閱更多Minimal API資訊)

熱更新

在之前釋出封版前,熱更新成為了熱門話題,微軟作為一個商業公司能夠針對社群的要求,為.NET 6 保留社群所需是非常讚的。這對於微軟和開源社群接觸也是一件好事。

我們先來認識下熱更新,最早期熱更新主要是面向移動應用,特別iOS應用更新的一種最常見的方式。不少開發者通過動態下發程式碼,它可以在不釋出新版本的情況下,修復 BUG 和釋出功能,讓開發者得以繞開蘋果的稽核機制,避免因長時間稽核等待以及多次被拒造成的成本。我記得.NET應用熱更新場景也是在Xamarin下,慢慢地大家就希望如果程式碼編寫能實現熱更新,就可以減少編譯的時間,即所見即所得。

在.NET 6 你可以通過 Windows 下的 Visual Studio 2022 實現,也可以通過 CLI 方式實現。

通過命令列執行相關的HotReload 非常簡單,你只需要在對應專案中執行一下命令就可以為你的Web應用實現HotReload了

dotnet watch run

當然你也可以通過以下命令停止HotReload的功能

dotnet watch run --no-hot-reload

262865a920fcac6671e344be29bab975.png

更多關於.NET CLI HotReload,請訪問以下網址
https://aka.ms/LearnDN002

906ed8698a5342c662599d5f855be9be.png
(掃碼查閱更多.NET CLI HotReload資訊)

MAUI

關於MAUI,我對它的感情是非常深,從早期的monotouch到Xamarin,再到現在的MAUI。有人會覺得微軟放棄了Xamarin,但是我覺得完全併入到.NET 6正是微軟重視Xamarin的表現,我記得在7月Reactor的.NET Day上討論過MAUI的架構,你會發現它是.NET 6最重要的⼀環。

8afd3d3d8139d28c3b92558d3e3440da.png

你直接可以通過命令⾏構建你的MAUI專案

dotnet new maui -o mauidemo

從不少資料上你可以瞭解到MAUI對Xamarin的控制元件做了重新的封裝,實現更高效能。但我想和大家回顧下當時MAUI釋出就有一個令我喜歡的功能,那就是在Visual Studio Code上Debug MAUI,這得益於新的專案結構,但更重要是它終於讓MAUI的開發更加極客了。但現在 MAUI的正式版還沒有release,但我在Github上找到一個類似的專案可以給大家先體驗一把 (https://github.com/Clancey/vs...)

更多關於MAUI,請訪問以下網址
https://aka.ms/LearnDN003

ca69a211e81c727d37b701dde172cdfc.png
(掃碼查閱更多MAUI資訊)

關於workload

隨著.NET應用場景的增加,不同的使用者需要的支援不盡相同,例如我專注於 MAUI的應用,這個時候我就需要iOS、macOS、Android的支援,但預設情況下是沒有做相關的SDK新增的。因為如果全部場景的功能都合併到SDK,就變成一個巨物了,從編譯到部署都是非常麻煩的。.NET團隊致力於維護SDK的小而精,針對不同場景在.NET 6中增加了workload去為不同場景做量身定製。

當我通過 dotnet new maui 的時候,在預設情況下是沒有new maui的template的,而且也不會含有相關的一些SDK,這個時候系統會教你通過查詢的方式去確認是否有官方或者地方的template。

e39612c6c7ae3d0a261c902411eb12e5.png

通過命令列執行以下操作

dotnet workload install maui

可以把MAUI所需要的SDK安裝起來,並新增好基於dotnet new maui的模板,真的非常方便和人性化,這樣可以減少.NET SDK一些不必要的安裝,太棒了。

d97fbc94d6cbd7e0b7896626f77d6ca5.png

你可以通過執行以下語句檢視相關的workload有哪些

dotnet workload search

e972040d31e447cbdeb6ad2d0bde1b95.png

現在的場景有針對MAUI和Blazor的場景希望日後會新增更多的場景,滿足更多的需要。

更多關於dotnet workload,請訪問以下網址
https://aka.ms/LearnDN004

afc00d07d8d35f1efbd9c14968d1ea0b.png
(掃碼查閱更多dotnet workload資訊)

關於機器學習

我這幾年投入到機器學習的時間非常多,也致力為.NET 開發⼈員帶來更多機器學習的知識。提到.NET 下的機器學習,我相信很多人都已經認識 ML.NET 了,但我⼀直在推薦的是開源 TensorFlow.NET。

(https://github.com/SciSharp/T...)

這個專案經過幾年的發展現在已經為.NET在深度學習領域提供了很好的解決方案。這次通過.NET 6,微軟帶來了更多的場景,比如 TorchSharp。

https://github.com/dotnet/Tor...

這是在 dotnet 開源下的⼀個專案,它參照的就是 TensorFlow.NET 的方式,通過繫結 PyTorch 底層 C++ API實現了.NET 原生的 PyTorch 框架。我相信以後大家可以在 ML.NET 下在深度學習的場景可以像 Keras ⼀樣呼叫不同深度學習框架。

更多關於.NET機器學習的知識,請訪問以下網址
https://aka.ms/LearnDN005

b5b12f5e6060a29f50f0800755b369a3.png
(掃碼查閱更多.NET 機器學習資訊)


.NET 6 還有很多更新,包括在 Blazor,在效能,在C# 10.0等,我這裡就不一一和大家介紹了,大家感興趣可以點選以下連結查閱。
https://aka.ms/LearnDN006
00b8a83e4ff37b7b7ae710924050534c.png
(掃碼查閱更多 .NET 6 更新)

相關文章