.NET 5.0 Preview 2發布解析

2020年4月2日微軟.NET 團隊的項目經理 Richard 在部落格上 發布了.NET 5 Preview 2:https://devblogs.microsoft.com/dotnet/announcing-net-5-0-preview-2/ ,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萬用戶。」),也就是2周後(一個迭代)就發布了這個新版本。這兩個版本都沒有什麼新特性,主要是整合.NET Core 3.1 和Mono功能到一起, 很多同學開玩笑的說.NET 5 這兩個版本的發布,開發團隊都在划水,打醬油。事實肯定不是這樣的了,這兩個版本的發布是為了在新的版本中為大家提供期待的新特性,接下來發布的.NET 5 Preview 3將會出現很多新特性,按照一個迭代一個版本的節奏,在微軟5.19的 Microsoft Build 2020 大會上將發布.NET 5 Preview 5,到時肯定是Scott Hunter 向大家揭開.NET 5 的廬山真面目 ,到時也會發布Blazor RTM,正式開啟Webassembly的應用,也就是C#全棧的時代,Winform/WPF的同學就可以很輕鬆的轉移到Web上開發了,Blazor支援可以在瀏覽器中, 在移動設備上以及作為本機桌面應用程式(例如Windows 10x)運行的應用程式。

部落格里談到的一點就是 RyuJIT中程式碼品質改進:在Preview1 也談到這點,在這個版本里做的更多了,後面每個版本都對JIT生成的程式碼進行了一系列性能改進,相信在11月正式發布時會是一個超級好性能的開發平台. 我們將這些類型的改進稱為”CQ”或程式碼品質.在大多數情況下,這些改進也適用於為準備運行的images生成的程式碼. Preview2 的性能提升方面做的非常好,而且對ARM64 的改進更多一些,有很多性能的提升是很大的,還專門寫了一篇.NET 5中的Regex性能改進:https://devblogs.microsoft.com/dotnet/regex-performance-improvements-in-net-5/。對該Regex引擎進行了一些重大改進,這些更改通常會導致吞吐量提高3-6倍,在某些情況下甚至會提高更多。

部落格里另外談到一點是垃圾回收器GC的改進,不斷向著快速啟動、更小的體積和記憶體使用,更加契合雲原生時代的應用開發需求。

更重要的一點是.NET團隊開始在吃自己的狗糧,使用Azure負載平衡在.NET 5.0上運行了50%的.NET網站流量。.NET團隊很早就在.NET Core 3.0和3.1做過類似的事情。通過將流量分流為50/50,我們可以確保在不斷獲得性能數據的情況下5.0持續變得更好。我們可以訪問.NET網站 ,通過瀏覽器刷新的形式交替看到Power by .NET Core 3.1.3和Powered by .NET Core 5.0.0-preview.2.20160.6:

image

image

園子里已經有同學翻譯了這幾篇文章: