本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
遷移 .NET 應用程式
遷移 .NET 應用程式 AWS 可讓您建立具有彈性擴展功能的高可用性工作負載、降低操作開銷,並透過專注於差異化價值來提高業務敏捷性。
本節著重於在 上託管 .NET 應用程式的不同選項 AWS。您可以選擇使用 VM,一種受管解決方案,例如 AWS Elastic Beanstalk
評估
選擇 .NET 工作負載的遷移路徑取決於下列主要因素:
-
尋找使用的 .NET 版本:Microsoft 支援兩種不同的 .NET 實作:.NET Framework (1.0 至 4.8) 和 .NET (.NET Core 1.0 至 3.1 和 .NET 5 及更新版本)。兩者共用許多相同的元件,且可執行使用不同的 .NET 程式設計語言 (例如,C#、F# 及 VB.NET) 編寫之應用程式的程式碼。由於 .NET Framework 會在 Windows 中執行,而更新版本的 .NET 為多平台,因此選擇遷移策略和託管服務會取決於使用的執行期。如為 .NET Framework,您可以在 Windows 作業系統中託管或重構程式碼,以使用更新版本的 .NET。更新版本的 .NET 也可託管於 Linux 作業系統服務。現代化 .NET Framework 型工作負載時,您可以使用適用於 .NET 的移植助理
或 AWS Toolkit for .NET Refactoring 來掃描程式碼並產生相容性評估報告。透過找出專案是否參考不相容的 .NET Framework API,即可針對遷移專案的複雜性進行規劃,並決定是否要重構程式碼和進行重構的時機,以使用更新版本的執行期。 -
檢閱目前的部署:檢查目前遷移的工作負載是否具有可更新的現有 CI/CD 管道,以將相同的工作負載部署至雲端。使用現有的建置和部署管道,即可透過自動化建置、設定及部署工作負載所需的步驟,來縮短將應用程式部署至雲端所需的時間。
-
檢閱藍圖:視專案目前的狀態而定,您可能已正在規劃重新架構或重新設計應用程式。任何執行的現代化皆應將產品藍圖列入考量。例如,決定容器化現有程式碼或將整合型架構重構為微服務,理想情況下皆屬產品藍圖的一部分,且與其他開發工作保持一致。
調動
遷移 .NET 工作負載時,需要考慮三種不同的遷移路徑 AWS。您可以根據現有程式碼庫的複雜性,分配給遷移的時間,以及分配用於支援遷移工作的團隊規模,在不同的選項之間進行選擇。在遷移過程中考慮現代化時,最佳實務是與產品的藍圖保持一致。
-
重新託管 (提升和轉移) – 如果您的優先順序更快地遷移到 AWS ,且幾乎沒有變更,您可以選擇此方法。您可以將 ASP.NET 型網站主機轉換至在 Amazon EC2 執行個體中執行的 Internet Information Services (IIS)。您可以將桌面型應用程式 (例如,Windows Presentation Foundation、Web Forms 及 .NET MAUI) 主機轉換至其中一個最終使用者運算平台 (例如,Amazon AppStream 2.0
或 Amazon WorkSpaces )。 -
平台轉換:當您想要在不變更程式碼的情況下使用受管服務託管應用程式,但想要透過擺脫無差別繁重工作 (例如,安裝、修補、升級及執行個體管理) 來減少營運開銷時,非常適合進行平台轉換。此策略也適用於想要移動至容器型工作負載的團隊。您可以將現有應用程式轉換為 Elastic Beanstalk
,或使用 Amazon ECS 、Amazon EKS 或 上託管的 Docker 容器AWS App Runner 。 -
重構:如果您可以投入時間和精力進行程式碼和架構變更,以減少營運開銷,並使用 AWS 雲端原生服務實現更好的擴展、高可用性和災難復原,請選擇此方法。重構涉及透過將現有的 .NET Framework 應用程序移植到 .NET (先前稱為 .NET Core) 或現代化現有的程式碼庫,以更有效地在雲端中執行。您可以使用 從 .NET 程式碼中適用於 .NET 的 AWS SDK
呼叫許多 AWS 雲端服務。適用於 .NET 的 Porting Assistant 等工具,AWS Microservice Extractor for .NET 可用來將程式碼庫從 .NET Framework 移植到 .NET,並將您的整體應用程式分成微型服務。透過重構現有的 .NET 工作負載以在 上執行AWS Lambda ,您可以使用無伺服器運算來避免佈建和管理基礎設施。
遷移
.NET 工作負載遷移的步驟取決於您在評估階段選擇的遷移路徑和應用程式類型。
將 .NET 應用程式主機轉換
如果您想要在不進行任何程式碼變更的情況下遷移應用程式,但想要受益於雲端的自動擴展、負載平衡及彈性,請選擇此遷移路徑。對於 Windows 型網站,重新託管通常意味著在 上的網際網路資訊服務 (IIS) 上執行它們 AWS。如為桌面型應用程式,您必須安裝應用程式,並讓使用者從外部連線至應用程式。
上的網際網路資訊服務 AWS
Internet Information Services (IIS) 是在 Windows 作業系統上執行的 Microsoft Web 服務器,用於託管網站和 Web 服務。IIS 可以安裝在執行 Windows Server 的任何 Amazon EC2 執行個體上。啟用並設定 IIS 之後,您可以透過使用與內部部署環境相同的部署機制來部署 ASP.NET 網站和服務。
如果您在 EC2 Windows 執行個體上託管 IIS,請務必根據您的工作負載和 HADR 需求,使用負載平衡、Auto Scaling 群組和多可用區域部署來遵循 AWS Well-Architected Framework
在 上託管桌面應用程式 AWS
許多用戶端皆需要存取 Windows 複雜型用戶端應用程式。您可以在三種不同的平台之間進行選擇:
-
Amazon EC2
:如果您想要使用者透過使用 Microsoft 遠端桌面連線至 Windows Server 環境,請選擇此選項。若要使用此選項,您必須負責修補和維護作業系統。您還必須為使用者和作用中的軟體保證 (SA) 購買額外的遠端桌面服務用戶端存取授權 (RDS CAL)。如需詳細資訊,請參閱 AWS 文件中的 上的 Microsoft 授權 AWS 。 -
Amazon WorkSpaces
:如果您需要為使用者提供全受管虛擬桌面基礎架構 (VDI),請選擇此選項。您可以使用 WorkSpaces 為使用者提供持續性的 Windows 桌面體驗。您也可以自訂 WorkSpaces 環境,並使用自訂映像安裝 .NET 應用程式,或使用 AWS Systems Manager 將 .NET 應用程式交付到您的 WorkSpaces 環境。使用者可以透過使用瀏覽器或 Amazon WorkSpaces 用戶端 進行連線。 -
Amazon AppStream 2.0
:選擇此選項,即可從任何位置提供安全、可靠且可擴展的應用程式和非持續性桌面存取。您可以使用 AppStream 2.0,讓使用者能夠從網路存取 .NET 應用程式。如果您已經擁有現有的 RDS CAL 和作用中的 SA,則可透過使用授權行動性 搭配 AppStream 2.0 使用此類授權。
平台重建
平台轉換涉及在幾乎沒有程式碼變更的情況下變更託管環境。選擇此策略來降低營運開銷,並利用雲端功能和服務。
AWS Elastic Beanstalk
您可以使用 AWS Elastic Beanstalk
若要進一步了解,請參閱下列資源:
-
在 Elastic Beanstalk 上建立和部署 .NET 應用程式 (Elastic Beanstalk 文件)
-
在 Linux 上使用 .NET Core (Elastic Beanstalk 文件)
-
適用於 .NET 和 的自訂網域的多應用程式支援 AWS Elastic Beanstalk
(AWS 開發人員工具部落格)
容器化現有的應用程式
您可以使用 Amazon ECS 或 Amazon EKS 託管以 Docker 為基礎的容器化應用程式。 AWS 會管理這兩種服務。您可以根據現有的知識和偏好,在兩者之間進行選擇。兩個選項皆可執行 Linux 容器或 Windows 容器。
若要進一步了解,請參閱下列資源:
-
Amazon EC2 Windows 容器 (Amazon ECS 文件)
-
啟用 Amazon EKS 叢集的 Windows 支援 (Amazon EKS 文件)
-
在 上使用 Amazon ECS 執行 Windows 容器 AWS Fargate
(AWS 部落格) -
使用 EC2 映像建置器和映像快取策略加速 Windows 容器啟動時間
(AWS 部落格) -
快速入門: 上的 .NET 應用程式 CI/CD AWS Fargate
(AWS 文件)
根據使用的 .NET 執行期容器化 .NET 型應用程式。考慮下列各項:
-
.NET Framework 型應用程式會執行於 Windows 容器:透過建立概述應用程式需要如何容器化的 Docker 檔案,即可將 Docker 支援新增至現有的應用程式。您可以使用 AWS App2Container
輕鬆容器化現有以 .NET Framework 為基礎的應用程式,並將其遷移至 AWS。App2Container 會掃描 IIS 伺服器以判斷所需的檔案,並擷取目標應用程式以建立 Docker 映像檔。您也可以使用 App2Container 在 中建立託管應用程式所需的部署成品 AWS 雲端。 -
.NET 或 .NET Core – 除了在 Amazon ECS 或 Amazon EKS 上執行較新的 .NET 型 Web 應用程式之外,您也可以使用 AWS App Runner
。App Runner 是無伺服器、全受管的解決方案,可執行程式碼或容器映像,並管理負載平衡、自動擴展、記錄、憑證及聯網。
重構/重新架構現有程式碼
如果您有強大的業務需求,需要新增功能、擴展或效能,否則很難在應用程式目前的環境中實現,請選擇此選項。根據應用程式藍圖,您可以選擇變更程式碼,以使用最新的架構、雲端原生服務,或將其重新架構,以更有效地在雲端中執行。
第一個可用的重構選項為將現有的 .NET Framework 應用程式遷移至 .NET。移動至 .NET 即可讓您在 Linux 中執行,而非在 Windows 中執行。如此可降低總授權成本、為您提供最新的架構,以及提供最新版本的 .NET 程式設計語言。
適用於 .NET 的 AWS SDK
適用於 .NET 的 AWS SDK
現代化 .NET Framework 應用程式
您可透過使用適用於 .NET 的移植助理
整合型服務至微服務
許多開發團隊想要將現有的整合型應用程式重新架構為微服務。透過移至微服務型架構,您的開發團隊可以提高開發敏捷性、降低運算成本、個別擴展服務,以及縮短其部署時間。 AWS Microservice Extractor for .NET
重構為無伺服器應用程式
AWS Lambda
其他資源
-
Amazon CodeCatalyst
(CodeCatalyst 文件) -
AWS Toolkit for Azure DevOps
(AWS 文件) -
透過將 Jenkins 與 AWS CodeBuild 和 整合來設定 CI/CD 管道 AWS CodeDeploy
(AWS DevOps 部落格) -
關於適用於 .NET 的 AWS 部署工具
(AWS GitHub) -
上的 .NET AWS
(AWS 文件) -
aws/dotnet
(GitHub)