針對 Docker 容器選擇 .NET Framework 的時機

提示

本內容節錄自《容器化 .NET 應用程式的 .NET 微服務架構》(.NET Microservices Architecture for Containerized .NET Applications) 電子書,可以在 .NET Docs 上取得,或免費下載可供離線閱讀的 PDF。

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

儘管 .NET 8 可為新的應用程式和應用程式模式提供顯著的優點,但 .NET Framework 仍然是許多現有案例的首選。

將現有應用程式直接移轉至 Windows Server 容器

您可能只想要使用 Docker 容器來簡化部署,即使未建立微服務也是一樣。 例如,您可能想要使用 Docker 來改善 DevOps 工作流程;容器可讓您更適當地隔離測試環境,也可以去除移至生產環境時遺失相依性所造成的部署問題。 如果是這些情況,則即使您要部署整合型應用程式,還是可以將 Docker 和 Windows 容器合理地用於目前 .NET Framework 應用程式。

在大部分情況下,於此案例中,您不需要將現有應用程式移轉至 .NET 8;您可以使用包含傳統 .NET Framework 的 Docker 容器。 不過,建議您在擴充現有應用程式時使用 .NET 8,例如,在 ASP.NET Core 中寫入新的服務。

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

協力廠商程式庫會快速採行 .NET Standard,以跨所有 .NET 類別 (包含 .NET 8) 共用程式碼。 使用 .NET Standard 2.0 和更新版本時,不同架構之間的 API 介面相容性已大幅增加。 此外,.NET Core 2.x 和更新的應用程式也可以直接參考現有的 .NET Framework 程式庫 (請參閱支援 .NET Standard 2.0 的 .NET Framework 4.6.1)。

此外,Windows 相容性套件還擴充了 Windows 上的 .NET Standard 2.0 可用的 API 介面。 透過此套件,只需要些許修改甚至不需修改,大部分的現有程式碼即可重新編譯為 .NET Standard 2.x,以在 Windows 上執行。

然而,即使自 .NET Standard 2.0 和 .NET Core 2.1 或更新版本以來取得了卓越的進步,但在某些情況下,有些特定的 NuGet 套件可能需要 Windows 才能執行,而且可能不支援 .NET Core 或更新版本。 如果這些套件對您的應用程式十分重要,則需要在 Windows 容器上使用 .NET Framework。

使用不適用於 .NET 8 的 .NET 技術

某些 .NET Framework 技術無法在 .NET 8 中使用。 有些技術可在較新版本中使用,但其他技術則不適用於由 .NET Core 設為目標的新應用程式模式,且可能永遠無法使用。

下列清單顯示 .NET 8 中未提供的大部分技術:

  • ASP.NET Web Form。 只有在 .NET Framework 上才能使用這項技術。 目前沒有計劃將 ASP.NET Web Forms 引入 .NET 或更新版本。

  • 工作流程相關服務。 Windows Workflow Foundation (WF)、工作流程服務 (WCF + 單一服務中的 WF) 和 WCF Data Services (先前稱為 ADO.NET Data Services) 僅適用於 .NET Framework。 目前沒有計劃將它們引入 .NET 8。

除了官方 .NET 藍圖中所列的技術之外,其他功能也可能移植到新的統一 .NET 平台。 您可考慮參與 GitHub 上的討論,讓我們可以聽到您的建議。 如果您認為缺少了什麼,請在 dotnet/runtime GitHub 存放庫中提問新的問題。

使用不支援 .NET 8 的平台或 API

某些 Microsoft 和協力廠商平台不支援 .NET 8。 例如,部分 Azure 服務提供尚無法在 .NET 8 上使用的 SDK。 大多數的 Azure SDK 最終應都會移植到 .NET 8/.NET Standard,但有些可能基於一些原因而不會被移植。 您可以在 Azure SDK 最新版本 頁面中,查看有哪些可用的 Azure SDK。

同時,如果 Azure 中的任何平台或服務仍然不支援 .NET 8 與其用戶端 API,您可以在 .NET Framework 上使用 Azure 服務或用戶端 SDK 中的對等 REST API。

將現有的 ASP.NET 應用程式移植到 .NET 8

.NET Core 是 .NET Framework 向前邁出革命性的一大步。 此技術提供一系列優於 .NET Framework 的優點,從生產力到效能,以及跨平台支援到開發人員滿意度等。

其他資源