適用于伺服器應用程式的 .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 (建議進行擴充,而不是移轉)。
  • 您的應用程式使用協力廠商程式庫或NuGet套件不適用於 .NET。
  • 您的應用程式會使用不適用於 .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 不會取代.NET Framework。

目前的 .NET Framework 應用程式

在大部分情況下,您不需要將現有的應用程式移轉至 .NET。 相反地,建議的方法是在擴充現有應用程式時使用 .NET,例如在 ASP.NET Core 中撰寫新的 Web 服務。

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

.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 的單一服務) ,而先前稱為「ADO.NET Data Services」) WCF Data Services (僅適用于.NET Framework。

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

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

平臺不支援 .NET

某些 Microsoft 或協力廠商平臺不支援 .NET。 有些 Azure 服務提供 SDK 尚無法供 .NET 使用。 在這種情況下,您可以使用對等的 REST API,而不是用戶端 SDK。

另請參閱