.NET 6 亮點快速巡覽
9 | 15,427 |
.NET 6 於 2021/11/8 正式發佈了,依照 .NET Roadmap,雙數版號的 .NET 6 為 LTS 版,技術支援週期較符合企業應用需求。
補充:依據.NET 支援週期政策,2020/11/10 發行的.NET 5 支援等級為 Current,支援期間約 18 個月(在下一版本發行後六個月終止),預計 2022/5/8 EOS;.NET 6 為 LTS,提供三年的技術支援,於 2024/11/8 結束。
整理 ASP.NET Core 6 的新功能:(參考來源:Announcing ASP.NET Core in .NET 6)
- Hot Reload
這應該算 .NET 6 的最大亮點。之前用 dotnet watch run 即可實現修改 .cs、wwwroot、*.config 存檔 ASP.NET Core 網站就自動重新編譯,瀏覽器重新載入顯示修改後結果。 而 .NET 6 更上一層樓,不需要重新編譯跟重啟程式,存檔即可觸發瀏覽器重整理看到修改結果,開發測試流暢度再提升到另一個層次。
推薦:關於 Hot Reload,Scott Hanselman 有段很棒的展示影片,值得一看。 - ASP.NET Core 網站啟動程式碼簡化
原本有點複雜的網站啟動程式 Program.cs、Startup.cs 大幅簡化到寥寥幾行,但寫過 ASP.NET Core 3.1/5 的朋友可能要適應一下。這部分可參考保哥的文章 - 體驗全新 ASP.NET Core 6.0 專案範本與 C# 10 語言特性 - Async Streaming
.NET Core 3 時代推出 IAsyncEnumerable,程式 ASP.NET MVC Controller 能以非同步方式查詢資料,減少佔用 ThreadPool 提高產能(Throughput) (延伸閱讀:ASP.NET async 基本心法);.NET 6 開始 System.Text.Json 可串接 IAsyncEnumerable 形成生產線執行序列化,省下彙整結果再序列化的等待,降低回應延遲。
參考:ASP.NET Core 6 and IAsyncEnumerable - Async Streamed JSON vs NDJSON by Tomasz Pęczek - IAysncDisposable
Controller、Page Model、View Component 支援 IAysncDisposable 介面,以配合 Async Streaming 及使用 Unmanaged 資源需釋放的場合。
參考:ASP.NET Core in .NET 6 - Support for IAsyncDisposable in MVC - Bootstrap 5.1
ASP.NET Core 範本改用 Bootstrap 5.1 版。(天吶,4.0 還沒上手,轉眼又 5.1 了) - CSS 分離
新增 .cshtml.css 檔案型別儲存 .cshtml 專屬 CSS 樣式。 - JavaScript 分離
新增 .cshtml.js、.razor.js 儲存放 .cshtml 或 .razor 專屬 JavaScript 程式。 - Blazor 強化
還在青春期的 Blazor 不意外地增加許多新功能及強化,我暫無機緣入坑,純推不下。 - .NET Web Assembly 編譯工具
支援 Blazor WebAssembly 的 AOT(Ahead-Of-Time) 編譯及 Runtime Relinking 及 Native Dependence。 - Single Page App
支援 Angular 12 及 React 17 彈性範本,方便使用熱門前端框架開發 SPA。 - Socket Control
提高 Socket 建立與處理掌握能力。 - Strongly-Typed Headers
以強型別方式處理 HTTP Header。 - HTTP 及 W3C Logging
支援以 W3C Extended Log File 格式記錄 HTTP 傳輸。 - HTTP/3 Preview
加入 HTTP/3 及 QUIC 傳送的伺服器支援 (預覽階段)。
若從 .NET 6 角度,還有以下亮點:(參考來源:Announcing .NET 6 — The Fastest .NET Yet)
- 已有一些通過生產環境壓測的實例 (RC 階段就丟上正式環境實戰,真勇士也)
- LTS 版,提供三年技術支援
- 橫跨瀏覽器、雲端、桌面程式、IoT、行動裝置 App 的統一平台,方便程式碼共用
- 在效能、低延遲、節省記憶體上有明顯提升
- C# 10 提供 Record Struc、Implicit Using、Lamdba 語法進化... 等新特性。參考:Welcome to C# 10
- 為 Visual Basic 做了一些 Windows Forms 專案開啟及 VS 使用體驗提升
- Azure App Service 雲端診斷工具提升 - OpenTelemetry、dotnet monitor
- JSON API 可預先產生程式碼取代執行期間 Refelction,能大幅提升序列化效能。參考:Try the new System.Text.Json source generator
- 檔案 IO 方面:支援 Symbolic Link 與 FileStream 物件砍掉重練,效能飆升四倍
- 支援 OpenSSL 3、ChaCha20Poly1305 Encryption Scheme ... 等新一代安全技術
- IL Trimming 改良,能更快速及正確篩除未用程式碼,讓程式檔有效瘦身
- 提供編譯期程式產生器及分析工具,在一些應用情境可大幅提升效能
- 開放 Red Hat 等組織從原始碼編譯自己的 .NET 6 版本,方便進階應用
先掌握關鍵字,細節待找時間消化後再分享。
A brief of the new features of .NET 6.
Comments
# by 我是誰
推這句:「先掌握關鍵字,細節待找時間消化後再分享。」 技術人就是要不斷精進。
# by 小黑
黑哥就是讚
# by 債主
挖坑要記得填 技術債要記得還
# by Anthony LEE
一如傳統的水印: "支援 Angular 12 及 Refact 17 彈性範本"
# by Died
react 17 <--typo
# by Jeffrey
to Anthony LEE,您真內行! 謝謝指正 to Died,謝謝指正。
# by yiiiy
請教一下hot reload ,是不是與 aspnet 2.0 3.5 時代的 webform 一樣,原碼整個架到iis上,改原碼,就即時更新程式。且不會中斷網站,除非更新 app_code 裡面的程式
# by Jeffrey
to yiiiy, 不大一樣,Web Site Project 模式下每支 WebForm 是獨立即時編譯,MVC 之後,整個網站編譯成單一 dll (頂多 Views 另成一個 dll),更新程式就要全網站重新編譯。Hot Reload 是靠特殊機制實現只抽換部分編譯內容,且僅能在偵錯模式運作,不適用線上環境。
# by Victor Tseng
"推這句:「先掌握關鍵字,細節待找時間消化後再分享。」 技術人就是要不斷精進。" 我也留了一堆關鍵字,可是不少都積灰塵,就像公文跑不過病毒,消化趕不上進化,連黑暗大也 「改用 Bootstrap 5.1 版。(天吶,4.0 還沒上手,轉眼又 5.1 了)」 大家努力消化吧~~~