.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