.Net vs .Net Core,我改如何選擇?看這一篇文章就夠了

.Net vs .Net Core,我改如何選擇?看這一篇文章就夠了
前言

.Net目前支持構建服務器端應用程序的兩種實現主要有兩種,.NET Framework和.NET Core。兩者共享許多相同的組件,並且您可以在兩者之間共享代碼。但是,兩者之間存在根本差異,在我們選擇使用哪種框架構建應用時,您的選擇取決於您要完成的工作,以下說明兩種框架的應用場景,希望能夠幫助您做出最正確的選擇。

在以下情況下,將.NET Core用於服務器應用程序:
您有跨平臺的需求。
您正在針對微服務。
您正在使用Docker容器。
您需要高性能和可擴展的系統。
每個應用程序需要並行的.NET版本。
在以下情況下,將.NET Framework用於服務器應用程序:
您的應用當前使用.NET Framework(建議擴展而不是遷移)。
您的應用程序使用了.NET Core不可用的第三方.NET庫或NuGet軟件包。
您的應用使用了.NET Core無法使用的.NET技術。
您的應用使用的平臺不支持.NET Core。 Windows,macOS和Linux支持.NET Core。
何時選擇.NET Core

以下各節對前面所述選擇.NET Core的原因進行了更詳細的說明。

跨平臺需求
如果您的應用程序(Web /服務)需要在多個平臺(Windows,Linux和macOS)上運行,請使用.NET Core。

.NET Core支持將前面提到的操作系統作爲您的開發工作站。 Visual Studio爲Windows和macOS提供了集成開發環境(IDE)。您還可以使用Visual Studio Code,該代碼可在macOS,Linux和Windows上運行。 Visual Studio Code支持.NET Core,包括IntelliSense和調試。大多數第三方編輯器(例如Sublime,Emacs和VI)都可以使用.NET Core。這些第三方編輯器使用Omnisharp獲得編輯器IntelliSense。您也可以避免使用任何代碼編輯器,而直接使用適用於所有受支持平臺的.NET Core CLI。

微服務架構
微服務架構允許跨服務邊界混合使用多種技術。這種技術組合使.NET Core可以逐漸與可與其他微服務或服務一起使用的新微服務兼容。例如,您可以混合使用.NET Framework,Java,Ruby或其他單片技術開發的微服務或服務。

有許多可用的基礎架構平臺。 Azure Service Fabric專爲大型和複雜的微服務系統而設計。 Azure應用服務是無狀態微服務的理想選擇。如``容器''部分所述,基於Docker的微服務替代品適合任何類型的微服務方法。所有這些平臺都支持.NET Core,使其成爲託管微服務的理想選擇。

有關微服務體系結構的更多信息,請參見.NET微服務。容器化.NET應用程序的體系結構。

容器
容器通常與微服務架構結合使用。容器還可以用於容器化遵循任何體系結構模式的Web應用程序或服務。 .NET Framework可以在Windows容器上使用,但是.NET Core的模塊化和輕量級的特性使其成爲容器的更好選擇。創建和部署容器時,.NET Core的映像大小比.NET Framework小得多。因爲它是跨平臺的,所以您可以將服務器應用程序部署到Linux Docker容器。

Docker容器可以託管在您自己的Linux或Windows基礎結構中,也可以託管在諸如Azure Kubernetes Service之類的雲服務中。 Azure Kubernetes Service可以在雲中管理,協調和擴展基於容器的應用程序。

對高性能和可擴展系統的需求
當您的系統需要最佳的性能和可伸縮性時,.NET Core和ASP.NET Core是您的最佳選擇。 Windows Server和Linux的高性能服務器運行時使.NET成爲TechEmpower基準測試中性能最高的Web框架。

性能和可伸縮性與可能正在運行數百個微服務的微服務體系結構特別相關。使用ASP.NET Core,系統運行的服務器/虛擬機(VM)數量少得多。減少的服務器/虛擬機節省了基礎架構和託管成本。

每個應用程序級別並排的.NET版本的需求
要安裝依賴於不同版本.NET的應用程序,建議使用.NET Core。 .NET Core可在同一臺計算機上並行安裝不同版本的.NET Core運行時。這種並行安裝允許在同一服務器上提供多個服務,每個服務都在其自己的.NET Core版本上。它還降低了風險,並節省了應用程序升級和IT運營的費用。

何時選擇.NET Framework

.NET Core爲新的應用程序和應用程序模式提供了明顯的好處。但是,對於許多現有方案而言,.NET Framework仍然是自然的選擇,因此對於所有服務器應用程序,.NET Core都不會取代.NET Framework。

當前.NET Framework應用程序
在大多數情況下,您不需要將現有應用程序遷移到.NET Core。相反,建議的方法是在擴展現有應用程序時使用.NET Core,例如在ASP.NET Core中編寫新的Web服務。

需要使用不適用於.NET Core的第三方.NET庫或NuGet軟件包
圖書館正在迅速擁抱.NET標準。 .NET Standard支持跨所有.NET實現(包括.NET Core)共享代碼。使用.NET Standard 2.0,這甚至更加容易:

API的表面變得更大。
引入了.NET Framework兼容模式。此兼容模式允許.NET Standard / .NET Core項目引用.NET Framework庫。要了解有關兼容模式的更多信息,請參見宣佈.NET Standard 2.0。
因此,僅在庫或NuGet軟件包使用.NET Standard / .NET Core中不可用的技術的情況下,才需要使用.NET Framework。

需要使用.NET Core不可用的.NET技術
.NET Core中不提供某些.NET Framework技術。其中一些可能在更高的.NET Core版本中可用。其他則不適用於.NET Core定位的新應用程序模式,並且可能永遠不可用。以下列表顯示了.NET Core中找不到的最常見技術:

ASP.NET Web窗體應用程序:
ASP.NET Web窗體僅在.NET Framework中可用。 ASP.NET Core不能用於ASP.NET Web窗體。沒有計劃將ASP.NET Web窗體引入.NET Core。

ASP.NET Web Pages應用程序:
ASP.NET Core中不包含ASP.NET Web Pages。

WCF服務實施。
即使有WCF-Client庫可以使用.NET Core中的WCF服務,WCF服務器實現當前也僅在.NET Framework中可用。該方案不是當前.NET Core計劃的一部分,但正在考慮將來使用。

與工作流相關的服務:
Windows Workflow Foundation(WF),工作流服務(單個服務中的WCF + WF)和WCF數據服務(以前稱爲“ ADO.NET數據服務”)僅在.NET Framework中可用。沒有計劃將WF / WCF + WF / WCF數據服務引入.NET Core。

需要使用不支持.NET Core的平臺
某些Microsoft或第三方平臺不支持.NET Core。某些Azure服務提供了尚無法在.NET Core上使用的SDK。這是一個過渡情況,因爲所有Azure服務都使用.NET Core。同時,您始終可以使用等效的REST API代替客戶端SDK。

結語
以上總結了.Net與.Net Framework之間的差異和每項的最佳使用場景,希望能夠爲剛上手.Net的朋友們答疑解惑。接下來我會陸續製作.Net與.Net Core相關基礎教程,並分享到個人博客,希望大家能夠關注支持,原創,喜歡的話記得幫忙點個贊。

原文地址https://www.cnblogs.com/dalianmaodada/p/12454323.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章