不久前,微軟在Build 2019大會上宣布了新的.NET 5(.NET的未來)。 .NET 5將是用于構(gòu)建在所有平臺(Windows,Linux)和設(shè)備(IoT,Mobile)上運行的應(yīng)用程序的單一統(tǒng)一平臺。
如果您是.NET開發(fā)人員,目前支持在.NET框架中開發(fā)的企業(yè)應(yīng)用程序,那么從長遠來看,您需要了解.NET 5將如何影響您當前的企業(yè)應(yīng)用程序。 .Net 5基于.Net標準,這意味著并非每個.Net框架功能都可以在.Net5中使用。此外,還有一些技術(shù)堆棧,如Web表單,WCF和WWF沒有移植到.Net 5.我們將看看 關(guān)于.Net 5未涵蓋的內(nèi)容的細節(jié)以及有哪些替代方案。
技術(shù)堆棧沒有進入.NET 5
ASP.NET Web窗體
ASP.NET Web Forms不會出現(xiàn)在.NET 5中,微軟目前正在推薦向Blazor遷移,這是一個最近被提升為官方的實驗性項目。如果你擅長JavaScript,其他選擇是Angular,React和Vue SPA框架。
如果您當前正在使用ASP.NET MVC作為完整堆棧Web應(yīng)用程序,則可以使用ASP.NET Core MVC或.NET Core 2.0中引入的新Razor頁面繼續(xù)使用相同的堆棧,這可能與ASP類似。 NET Web表單,用于快速構(gòu)建沒有視圖和控制器的Web表單應(yīng)用程序。 但是,如果您正在為企業(yè)開發(fā)現(xiàn)代Web應(yīng)用程序,最好考慮單頁應(yīng)用程序,如Blazor,Angular或React,而不是傳統(tǒng)的Web應(yīng)用程序,以提供豐富的客戶端功能。
WCF(Windows Communication Foundation)
WCF將要錯過.NET 5列車的消息讓很多人感到驚訝,包括我在內(nèi)。關(guān)于將WCF帶回.NET Core的GitHub已經(jīng)有很多討論,但微軟決定不這樣做,因為他們最初估計將WCF移植到.NET Core是三年。(來源:DotNetRocks播客)
Microsoft建議使用gRPC作為替代方案,它是一種可在任何環(huán)境中運行的現(xiàn)代化,開源,高性能的RPC框架。但是,與WCF不同,gRPC目前無法在IIS中托管,因為Http.Sys的HTTP / 2實現(xiàn)不支持gRPC依賴的HTTP響應(yīng)尾隨標頭
WWF(Windows Workflow Foundation)
Workflow Foundation沒有移植到.NET Core中。每個企業(yè)應(yīng)用程序都將具有一些與其集成的工作流程或BPM工具。如果您在應(yīng)用程序中使用了WWF,Microsoft建議您查看WF運行時的非官方分支以移植到.NET Core中。
即將到來的技術(shù)堆棧5
Winforms,WPF和UWP
微軟正在推出Windows桌面包(winforms,WPF和UWP),以支持僅適用于Windows的桌面應(yīng)用程序。 我不希望任何人使用winforms進行任何新的開發(fā),但是,這將有助于將傳統(tǒng)的
winforms應(yīng)用程序移植到.NET5.這并不意味著.NET Core的架構(gòu)正在發(fā)生變化。它仍然是一個跨平臺的框架,但是當您添加桌面包時,它的目標是僅在Windows上工作。 但是,將現(xiàn)有Windows桌面應(yīng)用程序移植到.NETCore中可以提供Core Runtime和API性能改進以及部署靈活性的額外好處。
什么被取代了
EF核心 - 實體框架核心正在取代.NET核心框架中的EF 6。
ASP.NET核心 - ASP.NET被ASP.NET核心取代。 查看遷移指南,將ASP.NET應(yīng)用程序移植到ASP.NETCore中。
ASP.NET Core MVC - ASP.NET Core MVC統(tǒng)一ASP.NET MVC和Web API。查看遷移指南,將asp.net mvc app移植到ASP.NETMVC中。
MSIX - Microsoft的新打包工具,它取代了桌面應(yīng)用程序的舊MSI包安裝程序。
JsonDocument - 來自System.Text.Json.JsonDocument API的新Json Document庫將取代json.net。它比舊的json.net快2-3倍。
其他重要事項要突出
最新版本的C#8.0引入了許多新的語言功能,包括Async Stream,Ranges,Nullable Reference Types和Pattern Matching。但是,它們將僅在.NET Core 3.0及更高版本上可用,這意味著它不會進入舊版.NET Framework或.NET Core 2.2,2.1或1.0。它清楚地表明.NET已經(jīng)死了,.NET Core就是未來。
如果您計劃將.NET應(yīng)用程序移植到.NETCore中,則必須分析項目中使用的API以查看兼容的內(nèi)容。 .NET Portability Analyzer是一個有助于分析和確定應(yīng)用程序在.NET平臺上的靈活性的工具。
作為.NET開發(fā)人員,我對.NET的未來及其發(fā)展方向感到興奮。我不再需要為SPA框架學(xué)習JavaScript,因為Blazor會這樣做。 我不再需要學(xué)習Python用于機器學(xué)習,因為ML.NET會這樣做。我不再需要學(xué)習Android或Swift,因為Xamarin會這樣做。 如果您了解C#,那么現(xiàn)在您可以開發(fā)一個可以從IoT到Cloud運行的應(yīng)用程序。 但是,這種變化將影響許多擁有基于WCF和Web窗體的產(chǎn)品/框架的企業(yè)客戶。
原文.技術(shù)棧