.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)

  1. Hot Reload
    這應該算 .NET 6 的最大亮點。之前用 dotnet watch run 即可實現修改 .cs、wwwroot、*.config 存檔 ASP.NET Core 網站就自動重新編譯,瀏覽器重新載入顯示修改後結果。 而 .NET 6 更上一層樓,不需要重新編譯跟重啟程式,存檔即可觸發瀏覽器重整理看到修改結果,開發測試流暢度再提升到另一個層次。
    推薦:關於 Hot Reload,Scott Hanselman 有段很棒的展示影片,值得一看。
  2. ASP.NET Core 網站啟動程式碼簡化
    原本有點複雜的網站啟動程式 Program.cs、Startup.cs 大幅簡化到寥寥幾行,但寫過 ASP.NET Core 3.1/5 的朋友可能要適應一下。這部分可參考保哥的文章 - 體驗全新 ASP.NET Core 6.0 專案範本與 C# 10 語言特性
  3. 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
  4. IAysncDisposable
    Controller、Page Model、View Component 支援 IAysncDisposable 介面,以配合 Async Streaming 及使用 Unmanaged 資源需釋放的場合。
    參考:ASP.​NET Core in .NET 6 - Support for IAsyncDisposable in MVC
  5. Bootstrap 5.1
    ASP.NET Core 範本改用 Bootstrap 5.1 版。(天吶,4.0 還沒上手,轉眼又 5.1 了)
  6. CSS 分離
    新增 .cshtml.css 檔案型別儲存 .cshtml 專屬 CSS 樣式。
  7. JavaScript 分離
    新增 .cshtml.js、.razor.js 儲存放 .cshtml 或 .razor 專屬 JavaScript 程式。
  8. Blazor 強化
    還在青春期的 Blazor 不意外地增加許多新功能及強化,我暫無機緣入坑,純推不下。
  9. .NET Web Assembly 編譯工具
    支援 Blazor WebAssembly 的 AOT(Ahead-Of-Time) 編譯及 Runtime Relinking 及 Native Dependence。
  10. Single Page App
    支援 Angular 12 及 React 17 彈性範本,方便使用熱門前端框架開發 SPA。
  11. Socket Control
    提高 Socket 建立與處理掌握能力。
  12. Strongly-Typed Headers
    以強型別方式處理 HTTP Header。
  13. HTTP 及 W3C Logging
    支援以 W3C Extended Log File 格式記錄 HTTP 傳輸。
  14. HTTP/3 Preview
    加入 HTTP/3 及 QUIC 傳送的伺服器支援 (預覽階段)。

若從 .NET 6 角度,還有以下亮點:(參考來源:Announcing .NET 6 — The Fastest .NET Yet)

  1. 已有一些通過生產環境壓測的實例 (RC 階段就丟上正式環境實戰,真勇士也)
  2. LTS 版,提供三年技術支援
  3. 橫跨瀏覽器、雲端、桌面程式、IoT、行動裝置 App 的統一平台,方便程式碼共用
  4. 在效能、低延遲、節省記憶體上有明顯提升
  5. C# 10 提供 Record Struc、Implicit Using、Lamdba 語法進化... 等新特性。參考:Welcome to C# 10
  6. 為 Visual Basic 做了一些 Windows Forms 專案開啟及 VS 使用體驗提升
  7. Azure App Service 雲端診斷工具提升 - OpenTelemetry、dotnet monitor
  8. JSON API 可預先產生程式碼取代執行期間 Refelction,能大幅提升序列化效能。參考:Try the new System.Text.Json source generator
  9. 檔案 IO 方面:支援 Symbolic Link 與 FileStream 物件砍掉重練,效能飆升四倍
  10. 支援 OpenSSL 3、ChaCha20Poly1305 Encryption Scheme ... 等新一代安全技術
  11. IL Trimming 改良,能更快速及正確篩除未用程式碼,讓程式檔有效瘦身
  12. 提供編譯期程式產生器及分析工具,在一些應用情境可大幅提升效能
  13. 開放 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 了)」 大家努力消化吧~~~

Post a comment