重構現代 .NET 並移至 Linux - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

重構現代 .NET 並移至 Linux

概觀

現代化舊版 .NET Framework 應用程式可協助您改善安全性、效能和可擴展性。現代化 .NET Framework 應用程式的有效方法是將應用程式遷移至現代 .NET 版本 (6+)。以下是將這些應用程式移至開放原始碼 .NET 的一些主要優點:

  • 在 Linux 作業系統上執行 Windows 授權,以降低 Windows 授權成本

  • 利用現代語言的可用性

  • 取得最佳化以在 Linux 上執行的效能

許多組織仍在執行舊版的 .NET Framework。這可能會帶來安全風險,因為 Microsoft 不再處理較舊版本的漏洞。Microsoft 已終止對最新版本 .NET Framework 4.5.2、4.6 和 4.6.1 的支援。請務必評估繼續執行舊版架構的風險和好處。為了降低風險和降低成本,值得投入時間和精力來重構現代版本的 .NET。

成本影響

考慮一般用途的 EC2 執行個體類型 (m5),可提供運算、記憶體和聯網資源的平衡。這些執行個體適用於各種應用程式,例如 Web 伺服器、中型資料庫和原始程式碼儲存庫。

例如,在美國東部 (維吉尼亞北部) 的 Windows Server (包含授權) 上具有 4 個 vCPUs和 16 GB 記憶體的隨需 m5.xlarge 執行個體每月花費 274.48 USD。Linux 伺服器上的相同資源每月花費 140.16 美元。在此範例中,當您將應用程式從 .NET Framework 遷移至現代版本的 .NET,並在 Linux 伺服器上執行應用程式時,成本會降低 49%。您的成本可能會因您在選取 EC2 執行個體時選擇的選項 (例如,執行個體類型、作業系統、儲存體) 而有所不同。您可以使用 Savings Plans預留執行個體進一步最佳化成本。如需詳細資訊,請使用 AWS 定價計算工具執行成本估算。對於包含 Windows 的執行個體,無論定價模式為何,授權費用為每小時每個 vCPU 0.046 USD

將這些 .NET Framework 應用程式移植到現代 .NET 需要開發人員的努力。您必須評估您的應用程式及其相依性,以查看它們是否與目標平台版本相容。適用於 AWS .NET 的移植助理是一項輔助工具,可掃描 .NET Framework 應用程式並產生 .NET 相容性評估,協助您更快地移植應用程式以與 Linux 相容。適用於 .NET 的移植助理可識別與 .NET 的不相容、尋找已知的替代項目,並產生詳細的相容性評估。移植解決方案之後,您必須手動變更程式碼,您的專案才能透過相依性成功編譯。這可減少將應用程式現代化為 Linux 所涉及的手動工作。如果您的應用程式支援 ARM 處理器,移至 Linux 會釋放使用 Graviton 執行個體的能力。這可協助您在進一步降低成本時達到額外的 20%。如需詳細資訊,請參閱 AWS 運算部落格中的使用 AWS Graviton2: Benchmarks 為 .NET 5 提供支援

還有其他工具,例如 AWS Toolkit for .NET Refactoring.NET Upgrade Assistant,可協助您將舊版 .NET 架構應用程式移植到現代 .NET。

成本最佳化建議

若要遷移 .NET Framework 應用程式,請執行下列動作:

  1. 先決條件 – 若要使用適用於 .NET 的移植助理,您必須在計劃分析應用程式原始碼的機器上安裝 .NET 5+。機器上的資源必須至少有 1.8 GHz 的處理速度、4 GB 的記憶體和 5 Gb 的儲存空間。如需詳細資訊,請參閱 .NET 的移植助理文件中的先決條件

  2. 評估 – 將 .NET 的移植助理下載為可執行檔 (下載) 檔案。您可以在機器上下載並安裝 工具,以開始評估您的應用程式。評估頁面包含與現代 .NET 不相容的移植專案、套件和 APIs。因此,在評估之後,您會在解決方案中收到建置錯誤。您可以檢視或下載評估問題清單至 CSV 檔案。如需詳細資訊,請參閱適用於 .NET 的移植助理文件中的移植解決方案

  3. 重構 – 評估應用程式後,您可以將專案移植到目標架構版本。當您移植解決方案時,您的專案檔案和一些程式碼將由移植助理修改。您可以檢查日誌,以檢閱原始程式碼的變更。在大多數情況下,程式碼需要額外的努力來完成遷移和測試,以使其生產準備就緒。根據應用程式,某些變更可能包括實體架構、身分和身分驗證。如需詳細資訊,請參閱適用於 .NET 的移植助理文件中的移植解決方案

這是將您的應用程式現代化為容器的第一步。有許多商業和技術驅動程式可將 .NET Framework 應用程式現代化為 Linux 容器。其中一個重要驅動因素是透過從 Windows 作業系統轉移到 Linux 來降低總擁有成本。這可降低將應用程式遷移至跨平台版本的 .NET 和容器以最佳化資源使用率時的授權成本。

將應用程式移植到 Linux 之後,您可以使用 AWS App2Container 將應用程式容器化。App2Container 使用 Amazon ECS 或 Amazon EKS 作為您可以直接部署的端點服務。App2Container 提供所有必要的基礎設施做為程式碼 (IaC) 部署成品,以重複容器化您的應用程式。

其他考量事項和資源