共用方式為


選擇適用於 Docker 容器的 .NET Framework 時機

小提示

此內容是適用於容器化 .NET 應用程式的電子書.NET 微服務架構摘錄,可在 .NET Docs 或免費下載的 PDF 中取得,可脫機讀取。

.NET 微服務架構的容器化 .NET 應用程式電子書封面縮圖。

雖然 .NET 8 為新的應用程式和應用程式模式提供顯著優勢,但 .NET Framework 對於許多現有的案例來說,將繼續是不錯的選擇。

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

您可能想要使用 Docker 容器來簡化部署,即使您未建立微服務也一樣。 例如,您可能想要使用 Docker 改善 DevOps 工作流程—容器可以提供您更好的隔離測試環境,也可以在移至生產環境時消除因缺少相依性所造成的部署問題。 在這類情況下,即使您在部署單體應用程式,對於目前的 .NET Framework 應用程式來說,使用 Docker 和 Windows 容器仍然是一個合理的選擇。

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

使用第三方 .NET 連結庫或不適用於 .NET 8 的 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 8 中不提供某些 .NET Framework 技術。 其中一些可能會在更新版本中提供,但其他版本可能不符合以 .NET Core 為目標的新應用程式模式,而且可能永遠無法使用。

下列清單顯示 .NET 8 中無法使用的大部分技術:

  • ASP.NET Web Forms。 這項技術僅適用於 .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,您可以從 Azure 服務或 .NET Framework 上的用戶端 SDK 使用對等的 REST API。

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

.NET Core 是 .NET Framework 向前邁出革命性的一步。 從生產力到效能,以及從跨平臺支援到開發人員滿意度,它提供許多優勢,優於 .NET Framework。

其他資源