Dot-Net

.NET Core、.NET Framework 和 Xamarin 之間有什麼區別?

  • June 27, 2016

微軟現在在其家族中擁有 .NET Core、.NET Framework 和 Xamarin (Mono)。

這裡似乎有很多重疊。這些類型的 .NET 平台之間有什麼區別?我應該何時選擇在我的項目中使用 .NET Core,而不是 .NET Framework 或 Xamarin?

根據此處的文件,您應該在以下 6 個典型場景中使用 .NET Core,而不是 .NET Framework 或 Xamarin 。

  1. 跨平台需求

顯然,如果您的目標是擁有一個應該能夠跨平台(Windows、Linux 和 MacOS)執行的應用程序(Web/服務),那麼 .NET 生態系統中的最佳選擇是使用 .NET Core 作為其執行時(CoreCLR ) 並且庫是跨平台的。另一種選擇是使用 Mono Project。

這兩種選擇都是開源的,但 .NET Core 得到了微軟的直接和官方支持,未來將有大量投資。

在跨平台使用 .NET Core 時,最好的開發體驗存在於帶有 Visual Studio IDE 的 Windows 上,它支持許多生產力功能,包括項目管理、調試、原始碼控制、重構、豐富的編輯(包括 Intellisense)、測試等等。但也支持在 Mac、Linux 和 Windows 上使用 Visual Studio Code 進行豐富的開發,包括智能感知和調試。甚至像 Sublime、Emacs、VI 等第三方編輯器也能很好地工作,並且可以使用開源 Omnisharp 項目獲得編輯器智能感知。

2.微服務

當您建構一個由多個獨立、動態可擴展、有狀態或無狀態微服務組成的面向微服務的系統時,您在這裡擁有的巨大優勢是您可以在微服務級別使用不同的技術/框架/語言。這使您可以在系統中的每個微區域使用最佳方法和技術,因此如果您想建構高性能和可擴展的微服務,您應該使用 .NET Core。最終,如果您需要使用任何與 .NET Core 不兼容的 .NET Framework 庫,這沒有問題,您可以使用 .NET Framework 建構該微服務,並且將來您可以將其替換為 .NET核。

您可以使用的基礎設施平台有很多。理想情況下,對於大型複雜的微服務系統,您應該使用 Azure Service Fabric。但是對於無狀態微服務,您還可以使用其他產品,例如 Azure App Service 或 Azure Functions。

請注意,截至 2016 年 6 月,並非 Azure 中的所有技術都支持 .NET Core,但隨著 .NET Core 發布 RTM,Azure 中的 .NET Core 支持將急劇增加。

  1. 最佳性能和可擴展系統

當您的系統需要盡可能最佳的性能和可擴展性以便無論您擁有多少使用者都能獲得最佳響應能力時,那麼 .NET Core 和 ASP.NET Core 才是真正大放異彩的地方。使用相同數量的基礎架構/硬體,您可以做的事情越多,最終使用者的體驗就越豐富——而且成本更低。

摩爾定律提高單 CPU 性能的日子不再適用;然而,當您的系統正在增長時,您需要做更多的事情,並且需要更高的可擴展性和性能來滿足日常要求更高的使用者數量呈指數級增長。最終,您需要提高效率,在任何地方進行優化,並在機器、VM 和 CPU 核心的集群中更好地擴展。這不僅僅是使用者滿意度的問題;它還可以在成本/總體擁有成本方面產生巨大差異。這就是為什麼爭取性能和可擴展性很重要。

如前所述,如果您可以將系統的小部分隔離為微服務或任何其他鬆散耦合的方法,那就更好了,因為您不僅能夠獨立地發展每個小部分/微服務,而且擁有更好的長期敏捷性和維護,但如果您需要做的事情與 .NET Core 不兼容,您還可以在微服務級別使用任何其他技術。最終,您將能夠對其進行重構,並儘可能將其引入 .NET Core。

  1. Mac、Linux 或 Windows 的命令行風格開發。

使用 .NET Core 時,此方法是可選的。當然,您也可以使用完整的 Visual Studio IDE。但是,如果您是想要使用輕量級編輯器和大量使用命令行進行開發的開發人員,那麼 .NET Core 是專為 CLI 設計的。它提供了可在所有支持的平台上使用的簡單命令行工具,使開發人員能夠在開發人員、實驗室或生產機器上以最少的安裝量建構和測試應用程序。Visual Studio Code 等編輯器使用相同的命令行工具進行開發體驗。像 Visual Studio 這樣的 IDE 使用相同的 CLI 工具,但將它們隱藏在豐富的 IDE 體驗之後。開發人員現在可以選擇他們想要與工具鏈互動的級別,從 CLI 到編輯器再到 IDE。

  1. 每個應用程序級別需要並排的 .NET 版本。

如果您希望能夠在 .NET 中安裝依賴於不同版本框架的應用程序,則需要使用 .NET Core,它提供 100% 並排,如本文件前面所述。

  1. Windows 10 UWP .NET 應用程序。

此外,您可能還想閱讀:

  1. 什麼時候不應該使用 .NET Core?
  2. 我何時仍應使用 .NET Framework 4.x 而不是 .NET Core?
  3. 何時應使用 Xamarin 而不是 .NET Core?

引用自:https://stackoverflow.com/questions/38063837