.NET 5 - 下一代ASP.NET

不知不覺中微軟已經計劃推出了下一代的ASP了,我們先來看一下新的ASP有包含什麼What's new in .NET 5?

.NET 5 - 下一代ASP.NET

.NET 5將會引入新的APIs,運行時功能和新的語言特色。

  • 在運行時體驗中將有更多的選擇性。
  • 所有平臺將提供Java 互操作性。
  • 將會在多個操作系統提供支持 Objective-C 和 Swift 互操作性。
  • CoreFX 將擴展為支持 .NET 的靜態編譯(ahead-of-time – AOT),更小的空間佔用和對更多操作系統的支持。

.NET 5 = .NET Core vNext

首先需要明確的是,.NET 5是下一代的Core,即使它不再使用Core命名,接著我們已經熟悉的Core裡面的內容是保留的,因為.NET 5是Core的延續,按照微軟的計劃,.NET 5是在2020年的10月份才有release版本出來,所以接下來我們看到的版本還是ASP.NET Core 3.x 系列

.NET 5 - 下一代ASP.NET

為啥不繼續用Core命名呢?從發展軌跡來看,Core的出現是因為微軟希望從本質上區分Framework, 這也確實從底層到使用都進行了非常大的更改,這次微軟希望清楚地傳達, .NET 5 是 .NET 平臺的未來,將其稱為 .NET 5 是要讓它成為微軟發佈過的最高版本。

Improving

每一次的更新換代,肯定是基於易用性和性能上的提升,我們來看一下微軟官方的一個基於.NET 5的改進:

  • 改進體驗,在任何地方都可以使用 .NET 運行時和框架,並具有統一的運行時行為
  • 充分利用 .NET Core、.NET Framework、Xamarin 和 Mono 來擴展 .NET 的功能。

運行時體驗

Mono 是 .NET 跨平臺實現的基石,它最初是以開源為目的來替代 .NET Framework 的,Mono 是用作 Xamarin 一部分的運行時。

CoreCLR 是作為 .NET Core 一部分的運行時。它主要用於支持雲應用程序,包括 Microsoft 的最大服務,現在也用於 Windows 桌面,物聯網和機器學習應用程序。

總而言之,.NET Core 和 Mono 運行時有許多相似之處(畢竟它們都是 .NET 運行時),但也有寶貴的獨特功能。讓選擇所需的運行時體驗成為可能是非常有意義的。我們正在使 CoreCLR 和 Mono 可以互相替換。我們將使它像構建開關一樣簡單,以便在不同的運行時選項之間進行選擇。

高吞吐量和高生產率

最開始.NET 就依賴於JIT(即時編譯器)將IL(中間語言)代碼轉換為機器代碼,從那時微軟就構建了業界領先的基於 JIT 的託管運行時。該運行時具有非常高的吞吐量,並且提升了開發體驗,使編程變得快速而簡單,這也是為什麼這麼多人口中微軟的低門檻:)

大多數 .NET 5 的默認體驗將使用基於 JIT 的 CoreCLR 運行時。兩個值得注意的例外是 iOS 和客戶端 Blazor(web assembly),因為它們都需要 ahead-of-time (AOT) 原生編譯。

更快的啟動,更低的內存佔用率

Mono 項目的集中了大部分精力在移動和遊戲機上。該項目的一個關鍵功能是基於業界領先的 LLVM 編譯器項目的 .NET AOT 編譯器。AOT 編譯的應用可以在較小的位置高效運行, 並在需要時交換吞吐量以進行啟動。

Blazor 項目已經在使用 Mono AOT,這將是最早過渡到 .NET 5 的項目之一。

有兩種類型的 AOT 解決方案:

  • 需要 100% AOT 編譯的解決方案。
  • 大多數代碼是 AOT 編譯的解決方案, 但 JIT 或解釋器可用於與 AOT 不友好的代碼模式。

.NET Native 是微軟用於 Windows UWP 應用程序的 AOT 編譯器, 也就是上面的第一種 AOT 類型。隨著第一種方案的實現, 微軟限制了 .NET API 和可以使用的功能,從這一經驗中瞭解到, AOT 解決方案需要覆蓋 .NET API 和模式的所有方面。

原則和交叉體驗

基於startup,吞吐量,內存佔用, 可靠性和診斷性作為平臺的整體風格是非常重要的,這也是微軟專注的努力方向。在專注於吞吐和可靠性的同時,也更專注於startup 和 Mono AOT編譯器的大小控制,這是很好的匹對,例如吞吐和可靠性,startup 和 大小控制。

微軟將會持續在各種場景對.NET 5進行優化,特別是在具有多種交叉場景的情況下進行重點優化。

所有的 .NET 5應用將會使用CoreFX框架,微軟將會確保在如今不經常使用的地方保證.NET 5的正常工作,這主要集中在Xamarin 和 客戶端 Blazor的工作場景。還有.NET 5的應用在.NET CLI都是可構建的,只需確保在項目中有基於命令行的基礎編譯工具即可。

C#語言將會保持跟.NET 5的同步,開發者在後續開發.NET 5應用是將可使用最新版本的C#以及對應的特性。

Birth of the project

微軟於 2018 年 12 月在波士頓碰頭後組建了技術團隊並開始了這個項目。來自 .NET 團隊(Mono/Xamarin和.NET Core)以及 Unity 的設計領導者介紹了各種技術和架構方向。

.NET 5這個項目目前是作為單個團隊推進,並以提供一套可交付成果為導向。自 12 月以來,在以下一些項目上取得了較多的進展:

  • 定義一個極小的分層用來定義運行時 <-> 託管代碼層,目標是實現 >99% 的 CoreFX 公共代碼。
  • MonoVM 可以使用 CoreFX 及其類庫。
  • 在 MonoVM 上使用CoreFX的實現運行所有 CoreFX 測試。
  • 在 MonoVM 上運行 ASP.NET Core 3.0 應用程序。
  • 在 CoreCLR 上運行 MonoDevelop,然後運行 Visual Studio for Mac。

遷移到單個.NET的實現會引發一些問題: 目標框架將是什麼? NuGet包兼容性規則是否相同? .NET 5 SDK 應該支持哪些工作負載?特定框架的編碼將如何工作?我們還需要 .NET Standard嗎?

好吧,讓巨人先走,我們慢慢爬上去吧:)

Ending

.NET 5 是令人興奮的新方向。微軟這次的.NET更新換代,旨在讓所有的人看到, .NET 將變得更簡單,且具有更廣泛功能和實用性。所有新的開發和功能都將成為 .NET 5 的一部分,包括新的 C# 版本,在使用相同的 .NET API 和語言來針對各種應用程序類型、操作系統和芯片架構將會使微軟的發展有著更光明的未來,它可以使我們在 Visual Studio ,Visual Studio for Mac,Visual Studio Code,Azure DevOps 或命令行中輕鬆更改構建配置用於構建不同的應用程序。

來源:http://www.cnblogs.com/lex-wu/p/10870052.html

相關推薦

推薦中...