.Net目前支持構建服務器端應用程序的兩種實現主要有兩種,.NET Framework和.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框架。spa
性能和可伸縮性與可能正在運行數百個微服務的微服務體系結構特別相關。使用ASP.NET Core,系統運行的服務器/虛擬機(VM)數量少得多。減小的服務器/虛擬機節省了基礎架構和託管成本。
要安裝依賴於不一樣版本.NET的應用程序,建議使用.NET Core。 .NET Core可在同一臺計算機上並行安裝不一樣版本的.NET Core運行時。這種並行安裝容許在同一服務器上提供多個服務,每一個服務都在其本身的.NET Core版本上。它還下降了風險,並節省了應用程序升級和IT運營的費用。
.NET Core爲新的應用程序和應用程序模式提供了明顯的好處。可是,對於許多現有方案而言,.NET Framework仍然是天然的選擇,所以對於全部服務器應用程序,.NET Core都不會取代.NET Framework。
在大多數狀況下,您不須要將現有應用程序遷移到.NET Core。相反,建議的方法是在擴展示有應用程序時使用.NET Core,例如在ASP.NET Core中編寫新的Web服務。
圖書館正在迅速擁抱.NET標準。 .NET Standard支持跨全部.NET實現(包括.NET Core)共享代碼。使用.NET Standard 2.0,這甚至更加容易:
引入了.NET Framework兼容模式。此兼容模式容許.NET Standard / .NET Core項目引用.NET Framework庫。要了解有關兼容模式的更多信息,請參見宣佈.NET Standard 2.0。
所以,僅在庫或NuGet軟件包使用.NET Standard / .NET Core中不可用的技術的狀況下,才須要使用.NET Framework。
.NET Core中不提供某些.NET Framework技術。其中一些可能在更高的.NET Core版本中可用。其餘則不適用於.NET Core定位的新應用程序模式,而且可能永遠不可用。如下列表顯示了.NET Core中找不到的最多見技術:
ASP.NET Web窗體僅在.NET Framework中可用。 ASP.NET Core不能用於ASP.NET Web窗體。沒有計劃將ASP.NET Web窗體引入.NET Core。
ASP.NET Core中不包含ASP.NET Web Pages。
即便有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。
某些Microsoft或第三方平臺不支持.NET Core。某些Azure服務提供了尚沒法在.NET Core上使用的SDK。這是一個過渡狀況,由於全部Azure服務都使用.NET Core。同時,您始終可使用等效的REST API代替客戶端SDK。
以上總結了.Net與.Net Framework之間的差別和每項的最佳使用場景,但願可以爲剛上手.Net的朋友們答疑解惑。接下來我會陸續製做.Net與.Net Core相關基礎教程,並分享到我的博客,但願你們可以關注支持,原創,喜歡的話記得幫忙點個贊。
本文由博客羣發一文多發等運營工具平臺 OpenWrite 發佈