本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 AWS 上將 ASP.NET 網頁表單應用程式現代化
由阿南德·拉馬林甘(AWS)和拜縣斯雷拉克斯米(AWS)創建
環境:PoC 或試點 | 技術:現代化;容器與微服務 DevelopmentAndTesting;Web 和行動應用程式 | 工作量:Microsoft |
AWS 服務:Amazon CloudWatch; Amazon ECS; AWS Systems Manager |
Summary
此模式描述了將傳統的整體 ASP.NET Web 表單應用程式移植到 AWS 上的 ASP.NET 核心來現代化的步驟。
將 ASP.NET 網頁表單應用程式移植到 ASP.NET 核心可協助您充分利用 Linux 的效能、節省成本和強大的生態系統。但是,這可能是一個顯著的手動努力。在此模式中,舊版應用程式會使用階段化方法逐步現代化,然後在 AWS 雲端中進行容器化。
考慮購物車的舊版整體式應用程式。讓我們假設它是建立為 ASP.NET Web 表單應用程式,而且由具有程式碼隱藏 () 檔案的 .aspx 網頁所組成。aspx.cs
現代化過程包含以下步驟:
通過使用適當的分解模式將整體分解為微服務。如需詳細資訊,請參閱 AWS Prescriptive Guidance 網站上的將單位分解為微型服務指南。
將您的舊版 ASP.NET 網頁表單 (.NET 架構) 應用程式移植到 .NET 5 或更新版本中的 ASP.NET 核心。在此模式中,您可以使用移植助理 .NET 掃描您的 ASP.NET Web 表單應用程式,並識別與 ASP.NET 核心不相容性。這樣可以減少手動移植的工作量。
通過使用反應重新開發 Web 窗體 UI 層。此模式不涵蓋 UI 重建。如需指示,請參閱 React 文件中的建立新的 React 應用
程式。 重新開發 Web 表單代碼隱藏文件(業務界面)作為 ASP.NET 核心 Web API。此病毒碼使用 NDepend 報告來協助識別必要的檔案和相依性。
使用 .NET 的移植助理,將舊版應用程式中的共用/一般專案 (例如商務邏輯和資料存取) 升級為 .NET 5 或更新版本。
新增 AWS 服務以補充您的應用程式。例如,您可以使用 Amazon CloudWatch 日誌來監控、存放和存取應用程式的日誌,而 AWS Systems Manager
則可以存放應用程式設定。 容器化現代化的 ASP.NET 核心應用程式。這種模式創建一個碼頭文件,該文件以 Linux 為目標,並使用泊塢窗桌面在本地進行測試。此步驟假設您的舊版應用程式已在現場部署或 Amazon 彈性運算雲端 (Amazon EC2) Windows 執行個體上執行。如需詳細資訊,請參閱在 Amazon EC2 Linux 執行個體上執行 ASP.NET 核心網路 API 泊塢視窗容器模式。
將現代化的 ASP.NET 核心應用程式部署到 Amazon Elastic Container Service (Amazon ECS)。此模式不涵蓋部署步驟。如需指示,請參閱 Amazon ECS 研討
會。
附註:此模式不涵蓋 UI 開發、資料庫現代化或容器部署步驟。
先決條件和限制
先決條件
架構
現代化購物車應用程式
下圖說明舊版 ASP.NET 購物車應用程式的現代化程序。
目標架構
下圖說明 AWS 上現代化購物車應用程式的架構。ASP.NET 核心網頁 API 部署到 Amazon ECS 叢集。記錄和組態服務由 Amazon CloudWatch 日誌和 AWS Systems Manager 提供。
工具
AWS 服務
Amazon ECS — 亞馬遜彈性容器服務 (Amazon ECS) 是一種高度可擴展、快速的容器管理服務,用於在叢集上執行、停止和管理容器。您可以在 AWS Fargate 管理的無伺服器基礎設施上執行任務和服務。或者,若要進一步控制基礎設施,您可以在您管理的 EC2 執行個體叢集上執行任務和服務。
Amazon CloudWatch 日誌 — Amazon CloudWatch 日誌會集中您使用的所有系統、應用程式和 AWS 服務的日誌。您可以檢視和監視記錄、搜尋特定錯誤代碼或模式、根據特定欄位對其進行篩選,或安全地將其封存以供日 future 分析。
AWS Systems Manager ─ AWS Systems Manager 是一項 AWS 服務,可讓您在 AWS 上檢視和控制基礎設施。您可以使用 Systems Manager 主控台檢視來自多個 AWS 服務的操作資料,並自動化 AWS 資源的操作任務。Systems Manager 會掃描您的代管執行個體,並針對偵測到的任何原則違規報告 (或採取修正措施),協助您維護安全性與合規性。
工具
史诗
任務 | 描述 | 所需技能 |
---|---|---|
將您的 .NET 框架舊版應用程序升級到 .NET 5。 | 您可以使用 .NET 的移植助理程式,將舊版 ASP.NET Web 表單應用程式轉換為 .NET 5 或更新版本。請遵循 .NET 文件的移植助理中的指示。 | 應用程式開發人員 |
產生 N 依賴報告。 | 當您將 ASP.NET Web Form 應用程式分解為微服務來現代化時,您可能不需要舊版應用程式中的所有 .cs 檔案。您可以使用 NDepend 產生任何程式碼隱藏 (.cs) 檔案的報告,以取得所有呼叫者和呼叫者。此報告可協助您識別並僅使用微服務中所需的檔案。 安裝 nDepend 之後 (請參閱 [必要條件] 區段),請在 Visual Studio 中開啟舊版應用程式的解決方案 (.sln 檔案),然後依照下列步驟執行︰
此程序會產生程式碼後置檔案的報告,其中列出所有呼叫者和呼叫者。如需相依性圖形的詳細資訊,請參閱 nDepend 說明文件 | 應用程式開發人員 |
建立新的 .NET 5 解決方案。 | 要為現代化的 ASP.NET 核心 Web API 創建一個新的 .NET 5(或更高版本)結構:
如需有關建立專案和解決方案的詳細資訊,請參閱 Visual Studio 文件 注意當您建置解決方案並驗證功能時,除了 nDepend 識別的檔案之外,您可能會識別要新增至解決方案的其他檔案。 | 應用程式開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
使用 ASP.NET 核心實作網頁 API。 | 假設您在舊版整體購物車應用程式中識別的其中一個微服務是「產品」。您建立了一個新的 ASP.NET 核心 Web API 專案的產品在先前的史詩。在此步驟中,您會識別與產品相關的所有 Web 表單 (.aspx 頁面) 並將其現代化。假設「產品」由四個 Web 表單組成,如前面「架構」一節所示:
您應該分析每個 Web 表單,確定發送到數據庫以執行某些邏輯的所有請求,並獲得響應。您可以將每個請求實作為 Web API 端點。鑑於其 Web 表單,產品可以具有以下可能的端點:
如前所述,您還可以重複使用升級到 .NET 5 的所有其他項目,包括業務邏輯,數據訪問和共享/通用項目。 | 應用程式開發人員 |
設定 Amazon CloudWatch 日誌。 | 您可以使用 Amazon CloudWatch 日誌來監控、存放和存取應用程式的日誌。您可以使用 AWS 開發套件將資料登入 Amazon CloudWatch 日誌。您也可以使用常用的 .NET 記 CloudWatch 錄架構 (例如 NLog 如需有關此步驟的詳細資訊,請參閱 Amazon CloudWatch 日誌和 .NET 記錄架構 | 應用程式開發人員 |
設定 AWS Systems Manager Parameter Store。 | 您可以使用 AWS Systems Manager Parameter Store 將應用程式設定 (例如連接字串) 與應用程式的程式碼分開存放。該 NuGet 軟件包亞馬遜。擴展。 SystemsManager 如需有關此步驟的詳細資訊,請參閱部落格文章 AWS Systems Manager 的 .NET 核心組態提供者 | 應用程式開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
使用共享 cookie 進行身份驗證。 | 將傳統的整體式應用程式現代化是一個反覆的程序,需要整體式及其現代化版本共存。您可以使用共享 cookie 來實現兩個版本之間的無縫身份驗證。舊版 ASP.NET 應用程式會繼續驗證使用者認證,並在現代化的 ASP.NET 核心應用程式驗證 Cookie 時發出 Cookie。 如需指示和範例程式碼,請參閱範例 GitHub 專案 | 應用程式開發人員 |
任務 | 描述 | 所需技能 |
---|---|---|
通過使用視覺工作室創建碼頭映像。 | 在此步驟中,您可以使用適用於 .NET 核心網頁 API 的視覺工作室建立碼頭檔案。
視覺工作室創建一個碼頭文件為您的項目。如需碼頭檔案範例,請參閱 Microsoft 網站上的泊塢視覺工具 | 應用程式開發人員 |
使用 Docker 桌面構建和運行容器。 | 現在,您可以在 Docker 桌面中構建,創建和運行容器。
| 應用程式開發人員 |
相關資源
在 Amazon EC2 Linux 執行個體上執行 ASP.NET 核心網路 API 泊塢視窗容器 (AWS Prescriptive Guidance)
使用 AWS 執行 ECS 藍/綠部署 CloudFormation ( CodeDeploy AWS CloudFormation 文件)
開始使用 N 依賴 (nDepen
d 文件)
其他資訊
下表提供舊版購物車應用程式的範例專案範例,以及現代化 ASP.NET Core 應用程式中的對等專案。
傳統解決方案:
專案名稱 | 專案範本 | 目標框架 |
---|---|---|
業務介面 | 類別圖書館 | .NET Framework |
BusinessLogic | 類別圖書館 | .NET Framework |
WebApplication | 框架網頁應用程式 | .NET Framework |
UnitTests | nUnit 測試項目 | .NET Framework |
共用-> 通用 | 類別圖書館 | .NET Framework |
共享-> 框架 | 類別圖書館 | .NET Framework |
新解決方案:
專案名稱 | 專案範本 | 目標框架 |
---|---|---|
BusinessLogic | 類別圖書館 | .NET 5.0 |
<WebAPI> | 核心網頁 API | .NET 5.0 |
<WebAPI>。 UnitTests | nUnit 3 測試專案 | .NET 5.0 |
共用-> 通用 | 類別圖書館 | .NET 5.0 |
共享-> 框架 | 類別圖書館 | .NET 5.0 |