1. 程式人生 > >.NET 5 Preview 1的深度解讀和跟進

.NET 5 Preview 1的深度解讀和跟進

 這幾天微軟.NET 團隊釋出了.NET 5 Preview 1, 如約而至。很興奮,因為.NET Core和.NET Framework終於實現了大一統,同時也很期待,期待.NET 5能給我們帶來哪些好的新特性。

 讓我們先把時間撥回到2019年...

 一、2019年.NET 5的提前劇透

   去年2019年 Richard提前劇透了.NET 5 https://devblogs.microsoft.com/dotnet/introducing-net-5/。這篇文章中,我們先回顧並畫一下重點:

   1. NET Core 3.x之後會統一升級到.NET 5,一個統一的平臺 A unified platform

       .NET 5 = .NET Core vNext

       直接跳過.NET Core 4, 原因是.NET Core 4.x和.NET Framework 4.*.* 會產生版本上的混淆,索性就直接.NET 5,

      .NET 5 名字中直接去掉了.NET Core,  為了統一.NET的命名,目標就是隻有一個.NET, 

      統一一個執行時和框架,框架可以在任何地方執行,具備統一的執行行為和開發體驗

      充分利用.NET Core、.NET Framework、Mono、Xamarin來擴充套件.NET 功能

      統一單個程式碼庫,微軟.NET 開發團隊和社群共同維護、發展

  2. .NET 5 定位與Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly等全平臺、全場景開發

      

  3. .NET 5的新特性

      Java互操作性將在所有平臺上可用。

      在多個作業系統上將支援Objective-C和Swift的互操作性。

      CoreFX將得到擴充套件,以支援.NET的靜態編譯(ahead-of-time – AOT),更小的佔用空間並支援更多的作業系統。

  4. 更高的吞吐量和生產效率

  5. 快速啟動、更小的體積和記憶體使用

二、2020年3月16日 .NET 5 Preview 1 released

  前幾天,3月16號,Scott Hunter 在部落格中釋出了一個令人興奮的訊息,.NET 5 Preview 1 第一個預覽版釋出。

  https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-1/

  博文中,Scott Hunter說:“.NET Core 3 has become the fastest adopted version of .NET ever and we’ve gained another million more users in just the last year.”,

             翻譯:“.NET Core 3成為有史以來最快採用的.NET版本,而僅僅在去年,我們又獲得了100萬用戶。”

  這個資料強有力地說明了.NET Core的強大吸引力。同時.NET Core 3.1也是一個LTS版本,包括我們特來電在內的不少公司,都已經升級到了.NET Core 3.1這個版本。

  寫到這,同時結合2019年的提前劇透,我們對.NET 5 的期待非常高,但是在這裡,新發布的.NET 5 Preview 1, 大家要冷靜一下,為什麼呢?

  •    這是第一個預覽版
  •    GA一般可用版本講在2020年11月份釋出
  •    目前看Preview 1的新特性有限

  接下來,我們詳細研究一下.NET 5 Preview 1的新特性:

  1. 安裝部署

  • .NET 5.0 Preview 1 SDK
  • .NET 5.0 Preview 1 Runtime

   2. 升級現有專案

<TargetFramework>netcoreapp5.0</TargetFramework>

   如果是ASP.NET Core專案

  • 將所有Microsoft.AspNetCore。*程式包引用更新為5.0.0-preview.1.20124.5
  • 將所有Microsoft.Extensions。*軟體包引用更新為5.0.0-preview.1.20120.4

   3. ASP.NET Core 5.0 的更新

    貌似只修復和改進幾個功能點和些許Bug......

    https://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-5-preview-1/

ASP.NET Core in .NET 5 Preview 1 doesn’t include any major new features just yet, but it does include plenty of minor bug fixes. 

   

   4. 正則表示式效能提升

      官方:我們嘗試過的許多表達式中,這些改進通常可以使吞吐量提高3-6倍,在某些情況下甚至可以提高更多。

   5. RyuJIT中程式碼質量改進

     官方:每個版本都對JIT生成的程式碼進行了一系列效能改進。我們將這些型別的改進稱為“ CQ”或程式碼質量。

   6. 程式集載入診斷新增到事件管道

     將程式集載入資訊新增到事件管道。方便診斷分析程式集的載入情況(與.NET Framework一起使用Fusion Log Viewer的一部分)。可以使用dotnet-trace通過以下命令來收集此資訊:

dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:4:4 --process-id [process ID]

   

   7. 事件管道探查器程式設計API

   事件管道是在.NET Core 2.2中新增的新子系統和API,可以在任何作業系統上執行效能和其他診斷調查。在.NET 5.0中,事件管道已得到擴充套件,以使探查器能夠寫入事件管道事件。

   這個類似於原來.NET Framework中往事件檢視器中寫事件的功能。比如說可以用到程式啟動、關閉、Crash時的資訊記錄,方便程式問題跟蹤、分析。

   8. GItHub倉庫合併

  .NET 5中減少了用於構建和打包.NET 的GitHub儲存庫的數量。  程式碼合併了,統一了!

   dotnet /執行時(是dotnet / corefx,dotnet / coreclr和dotnet / core-setup)
   dotnet / aspnetcore(在aspnet組織中有多個儲存庫)
   dotnet / sdk(以前是dotnet / sdk,dotnet / cli)

   9. 然而,不包含.NET 5的一些高階目標(不詳細展開說了,期待後續預覽版本了)

   通過上面的梳理和整理,.NET 5 Prevew 1, 大家期待不要太高,畢竟是第一個預覽版。可以理解為合併現有程式碼、修復部分Bug,為.NET 5 打了個基線。

   我們可以繼續等待並期待後續更新預覽版和GA版本的釋出。

   以上是.NET 5 Preview 1的深度解讀和跟進。分享給大家。

 

 

周國慶

2020/3/23