伺服器應用程式的 .NET 與 .NET Framework

建置伺服器端應用程式支援兩種 .NET 實作

實作 包含的版本
.NET .NET Core 1.0 - 3.1、.NET 5 和更新版本的 .NET。
.NET Framework .NET Framework 1.0 - 4.8

這兩者共用許多相同的元件,而您可以在這兩者間共用程式碼。 不過,兩者間有一些基本差異,而您的選擇取決於您想要完成的目標。 本文提供有關每一個選項使用時機的指引。

在下列情況中,請針對伺服器應用程式使用 .NET:

  • 您有跨平台需求。
  • 您的目標為微服務。
  • 您正在使用 Docker 容器。
  • 您需要高效能且可調整的系統。
  • 您需要依應用程式讓 .NET 版本並存。

在下列情況中,請針對伺服器應用程式使用 .NET Framework:

  • 您的應用程式目前使用 .NET Framework (建議進行擴充,而不是移轉)。
  • 您的應用程式使用不適用於 .NET 的協力廠商程式庫或 NuGet 套件。
  • 您的應用程式使用不適用於 .NET 的 .NET Framework 技術。
  • 您的應用程式使用不支援 .NET 的平台。

選擇 .NET 的時機

下列各節將更詳盡說明先前所述挑選 .NET Framework 上 .NET 的理由。

跨平台需求

如果您的 Web 或服務應用程式需要在多種平台上執行,例如 Windows、Linux 和 macOS,請使用 .NET。

.NET 支援先前所述的作業系統作為您的開發工作站。 Visual Studio 提供適用於 Windows 和 macOS 的整合式開發環境 (IDE)。 您也可以使用 Visual Studio Code,其在 macOS、Linux 和 Windows 上執行。 Visual Studio Code 支援 .NET,包括 IntelliSense 和偵錯。 大多數的協力廠商編輯器 (例如 Sublime、Emacs 和 VI) 都可搭配 .NET 使用。 這些協力廠商編輯器會透過 Omnisharp 取得編輯器 IntelliSense。 您也可以避免使用任何程式碼編輯器,並直接使用 .NET CLI (適用於所有支援的平台)。

微服務架構

微服務架構可讓您跨越服務界限混用技術。 此技術混合可讓新的微服務逐步採用 .NET,以便與其他微服務或服務搭配使用。 例如,您可以混合使用 .NET Framework、Java、Ruby 或其他單一技術所開發的微服務或服務。

您可以使用的基礎結構平台有很多。 Azure Service Fabric 是針對大型且複雜的微服務系統所設計。 Azure App Service 是無狀態微服務的理想選擇。 以 Docker 為依據的微服務替代方案符合任何微服務方法,如容器一節中所述。 所有的這些平台均支援 .NET,並使其更適合用來裝載您的微服務。

如需微服務架構的詳細資訊,請參閱 .NET 微服務:容器化 .NET 應用程式的架構

容器

容器通常會與微服務架構一同使用。 容器也可用來將遵循任何架構模式的 Web 應用程式或服務容器化。 .NET Framework 可以在 Windows 容器上使用。 不過,.NET 模組化和輕量化的特質,使其成為容器的較佳選擇。 當您建立和部署容器時,使用 .NET 的映像大小遠小於 .NET Framework。 由於它是跨平台型項目,因此您可以將伺服器應用程式部署到 Linux Docker 容器。

您可以在自己的 Linux 或 Windows 基礎結構中,或在 Azure Kubernetes Service 等雲端服務中裝載 Docker 容器。 Azure Kubernetes Service 可在雲端中管理、協調及調整容器型應用程式。

高效能且可調整的系統

當您的系統需要最佳效能和延展性時,.NET 和 ASP.NET Core 就是最好的選擇。 Windows Server 和 Linux 的高效能伺服器執行階段讓 ASP.NET Core 成為 TechEmpower 基準測試中效能最高的 Web 架構。

效能和延展性對於微服務架構特別重要,其中可執行數百個微服務。 透過 ASP.NET Core,您就能使用較低數目的伺服器/虛擬機器 (VM) 來執行系統。 減少的伺服器/VM 能省下基礎結構與裝載的相關成本。

依據不同應用程式執行不同的 .NET 版本

若要在不同版本的 .NET 上安裝具有相依性的應用程式,建議使用 .NET。 此實作支援在同一部電腦上並存安裝不同版本的 .NET 執行階段。 並存安裝可讓您在相同伺服器上擁有多個服務,每個服務在各自的 .NET 版本上。 它也會在應用程式升級和 IT 作業方面降低風險並省下成本。

.NET Framework 無法並存安裝。 這是 Windows 元件,而且一次只能有一個版本存在於電腦上。 每個版本的 .NET Framework 都會取代舊版元件。 如果您安裝以較新版本 .NET Framework 為目標的新應用程式,可能會中斷電腦上執行的現有應用程式,因為會取代舊版元件。

選擇 .NET Framework 的時機

.NET 可為新的應用程式和應用程式模式提供顯著的優點。 不過,.NET Framework 仍然是許多現有案例的理想選擇;因此 .NET Framework 並不會在所有伺服器應用程式中被 .NET 所取代。

目前的 .NET Framework 應用程式

在大多數的情況中,您不需將現有的應用程式移轉到 .NET, 而是建議您在擴充現有的應用程式時使用 .NET,例如在 ASP.NET Core 中寫入新的 Web 服務。

不適用於 .NET 的協力廠商程式庫或 NuGet 套件

.NET Standard 可跨所有 .NET 實作 (包括 .NET Core/5+) 共用程式碼。 使用 .NET Standard 2.0 時,相容性模式可讓 .NET Standard 和 .NET 專案參考 .NET Framework 程式庫。 如需詳細資訊,請參閱 .NET Framework 程式庫的支援

因此,只有在程式庫或 NuGet 套件使用的技術不適用於 .NET Standard 或 .NET 時,您才需要使用 .NET Framework。

.NET Framework 技術不適用於 .NET

某些 .NET Framework 技術無法在 .NET 中使用。 下列清單顯示 .NET 中找不到的常見技術:

  • ASP.NET Web Forms 應用程式:ASP.NET Web Forms 只能在 .NET Framework 中使用。 ASP.NET Core 無法用於 ASP.NET Web Forms。

  • ASP.NET Web Pages 應用程式:ASP.NET Web Pages 未隨附於 ASP.NET Core 中。

  • 工作流程相關的服務︰Windows Workflow Foundation (WF)、工作流程服務 (WCF + 單一服務中的 WF) 和 WCF Data Services (先前稱為 "ADO.NET Data Services") 僅適用於 .NET Framework。

  • 語言支援:.NET 目前支援 Visual Basic 和 F#,但不是所有專案類型都提供支援。 如需支援的專案範本清單,請參閱 dotnet new 的範本選項

如需詳細資訊,請參閱 .NET 上無法使用的 .NET Framework 技術

平台不支援 .NET

某些 Microsoft 或協力廠商平台不支援 .NET。 部分 Azure 服務提供尚無法在 .NET 上使用的 SDK。 在此類情況下,您可使用對等的 REST API,而非用戶端 SDK。

另請參閱