本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
现代化ASP。 NET开启的 Web 表单应用程序 AWS
由 Vijai Anand Ramalingam () 和 Sreelaxmi Pai () AWS 创作 AWS
摘要
这种模式描述了对遗产巨石进行现代化改造的步骤。ASP NET将 Web 表单应用程序移植到ASP。 NET核心开启AWS。
移植ASP。 NETWeb 表单应用程序可以ASP. NET Core 可帮助您充分利用 Linux 的性能、成本节约和强大的生态系统。不过,这可能需要大量的人工操作。在这种模式下,使用分阶段方法逐步实现传统应用程序的现代化,然后在云中进行容器化。AWS
考虑一个用于购物车的传统单体应用程序。假设它是作为创建的ASP. NET Web Forms 应用程序,由带有代码隐藏文件 () 的.aspx 页面组成。aspx.cs
现代化过程包括以下步骤:
使用适当的分解模式将单体分解为微服务。有关更多信息,请参阅《规范指南》网站上的 “将巨石分解为微服务” 指南。AWS
移植你的遗产ASP。 NET网络表单 (. NET框架) 应用于ASP。 NETCore in。 NET5 或更高版本。在这种模式中,你使用移植助手。 NET来扫描你的ASP。 NETWeb Forms 应用程序并识别与的不兼容之处。ASP NET核心。这减少了手动移植的工作量。
使用 React 重新开发 Web 表单用户界面层。此模式不涵盖 UI 重新开发。有关说明,请参阅 React 文档中的创建新的 React 应用程序
。 将 Web Forms 代码隐藏文件(业务界面)重新开发为。ASP NET核心网API。此模式使用NDepend报告来帮助识别所需的文件和依赖关系。
将旧版应用程序中的共享/通用项目(例如业务逻辑和数据访问)升级为。 NET5 或更高版本,使用移植助手。 NET。
添加AWS服务以补充您的应用程序。例如,您可以使用 Amazon CloudWatch Logs 来监控、存储和访问应用程序的日志,使用 S AWSystems Manager
来存储您的应用程序设置。 容器化现代化。ASP NET核心应用程序。此模式在 Visual Studio 中创建一个面向 Linux 的 Docker 文件,并使用 Docker Desktop 在本地对其进行测试。此步骤假设您的旧版应用程序已在本地或亚马逊弹性计算云 (AmazonEC2) Windows 实例上运行。有关更多信息,请参阅模式 Run an ASP。 NET亚马逊 EC2 Linux 实例上的核心 Web API Docker 容器。
部署现代化ASP的。 NET亚马逊弹性容器服务 (AmazonECS) 的核心应用程序。此模式不涵盖部署步骤。有关说明,请参阅 Amazon ECS 研讨会
。
注意
这种模式不包括用户界面开发、数据库现代化或容器部署步骤。
先决条件和限制
先决条件
Visual Studio
或 Visual Studio Code ,已下载并安装。 使用AWS管理控制台和AWS命令行界面 (AWSCLI) 版本 2 访问AWS账户。(请参阅有关配置的说明AWSCLI。)
适用于 Visual Studio 的 AWS Toolkit(参见安装说明)。
Docker Desktop,已下载
并安装。 。 NETSDK,已下载
并安装。 NDepend工具,已下载
并安装。要安装 Visual Studio 的NDepend扩展程序,请运行 NDepend.VisualStudioExtension.Installer
(参见说明书)。可以选择 Visual Studio 2019 或 2022,具体取决于你的要求。 的移植助手。 NET,已下载
并安装。
架构
实现购物车应用程序的现代化
下图说明了遗产的现代化过程ASP。 NET购物车应用程序。
目标架构
下图说明了上现代化购物车应用程序的架构。AWS ASP。 NET核心网络部署APIs到一个 Amazon ECS 集群。日志和配置服务由 Amazon CloudWatch Logs 和 S AWS ystems Manager 提供。
工具
AWS 服务
Amaz on ECS — Amazon 弹性容器服务 (AmazonECS) 是一项高度可扩展、快速的容器管理服务,用于在集群上运行、停止和管理容器。您可以在由 Far AWS gate 管理的无服务器基础架构上运行任务和服务。或者,为了更好地控制您的基础架构,您可以在自己管理的EC2实例集群上运行任务和服务。
Amaz CloudWatch on CloudWatch Logs — Amazon Logs 集中您使用的所有系统、应用程序和AWS服务的日志。您可以查看和监控日志,搜索特定的错误代码或模式,根据特定字段过滤日志,或将日志安全存档以备将来分析。
AWSS yst AWS ems Manager ─ Systems Manager 是一项可用于查看和控制基础架构的AWS服务AWS。通过使用 Systems Manager 控制台,您可以查看来自多个 AWS 服务的操作数据并在 AWS 资源之间自动执行操作任务。Systems Manager 通过扫描托管实例并报告其检测到的所有策略违规行为(或采取纠正措施)来帮助您维护安全性与合规性。
工具
Visual Stud
io 或 Visual Studio 代码 — 构建工具 NET应用程序APIs、Web 和其他程序。 AWSVisual Studio 工具包 — Visual Studio 的扩展,可帮助开发、调试和部署。 NET使用AWS服务的应用程序。
Docker Desktop
- 一种简化构建和部署容器化应用程序的工具。 NDepend
— 用于监控的分析器。 NET依赖关系、质量问题和代码变更的代码。 的@@ 移植助手。 NET
— 一种可以扫描的分析工具。 NET用于识别不兼容之处的代码。 NET核心并估算迁移工作量。
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
升级你的. NET 将旧版应用程序框架化为. NET 5. | 你可以使用移植助手。 NET来转换你的遗产ASP。 NETWeb 表单应用程序适用于. NET5 或更高版本。请按照移植助手中的说明进行操作。 NET文档。 | 应用程序开发人员 |
生成NDepend报告。 | 当您实现现代化时ASP. NET Web Forms 应用程序通过将其分解为微服务,您可能不需要旧应用程序中的所有.cs 文件。您可以使用NDepend为任何隐藏代码 (.cs) 的文件生成报告,以获取所有调用者和被调用者。此报告可帮助您仅识别和使用微服务中所需文件。 安装后NDepend(参见 “先决条件” 部分),在 Visual Studio 中打开旧版应用程序的解决方案(.sln 文件),然后按照以下步骤操作:
此过程会生成代码隐藏文件的报告,其中列出了所有调用者和被调用者。有关依赖关系图的更多信息,请参阅NDepend文档 | 应用程序开发人员 |
创建一个新的。 NET5 个解决方案。 | 创建一个新的. NET5(或更高版本)结构供您进行现代化改造。ASP NET核心网页APIs:
有关创建项目和解决方案的详细信息,请参阅 Visual Studio 文档 注意在构建解决方案和验证功能时,除了已识别的文件外,您可能会NDepend发现要添加到解决方案中的其他几个文件。 | 应用程序开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
使用实现APIs网络ASP。 NET核心。 | 假设您在旧版单体购物车应用程序中确定的微服务之一为产品。您创建了一个新的ASP。 NET上一篇长篇故事中产品的核心网络API项目。在此步骤中,您将识别和现代化与产品相关的所有 Web 窗体(.aspx 页面)。假设产品由四个 Web 表单组成,如前面的架构部分所示:
您应该分析每个 Web 表单,识别发送到数据库以执行某些逻辑的所有请求,并获取响应。您可以将每个请求作为 Web API 端点来实现。鉴于其 Web 表单,产品可以具有以下可能的端点:
如前所述,您还可以重复使用已升级到的所有其他项目。 NET5,包括业务逻辑、数据访问和共享/通用项目。 | 应用程序开发人员 |
配置 Amazon CloudWatch 日志。 | 您可以使用 Amazon CloudWatch Logs 来监控、存储和访问应用程序的日志。您可以使用 Amazon Logs 将数据记录到 Amazon CloudWatch 日志AWSSDK。你也可以整合。 NET使用流行的带有 CloudWatch 日志的应用程序。 NET日志框架 NLog 有关此步骤的更多信息,请参阅博客文章 Amazon CloudWatch Logs 和。 NET日志框架 | 应用程序开发人员 |
配置 S AWS ystems Manager 参数存储。 | 您可以使用 AWSSystems Manager Parameter Store 将应用程序设置(例如连接字符串)与应用程序代码分开存储。Amazon.extens.Configurat NuGet SystemsManager 有关此步骤的更多信息,请参阅博客文章。 NETS@@ AWSystems Manager 的核心配置提供商 | 应用程序开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
使用共享 cookie 进行身份验证。 | 对旧版单体应用程序进行现代化改造是一个迭代过程,需要单体应用及其现代化版本共存。您可以使用共享 cookie 来实现两个版本之间的无缝身份验证。遗产ASP。 NET应用程序继续验证用户凭证并在现代化ASP期间发布 Cookie。 NET核心应用程序会验证 cookie。 有关说明和示例代码,请参阅示例 GitHub 项目 | 应用程序开发人员 |
任务 | 描述 | 所需技能 |
---|---|---|
使用 Visual Studio 创建 Docker 映像。 | 在此步骤中,您将使用适用的 Visual Studio 创建 Docker 文件。 NET核心网API。
Visual Studio 为您的项目创建一个 Docker 文件。有关示例 Docker 文件,请参阅 Microsoft 网站上的 Visual Studio Container Tools for Docker | 应用程序开发人员 |
使用 Docker Desktop 构建并运行容器。 | 现在您可以在 Docker Desktop 中构建、创建和运行容器。
| 应用程序开发人员 |
相关资源
其他信息
下表提供了旧版购物车应用程序的示例项目以及现代化ASP版本中的等效项目的示例。 NET核心应用程序。
传统解决方案:
项目名称 | 项目模板 | 目标架构 |
---|---|---|
业务界面 | 类库 | 。 NET框架 |
BusinessLogic | 类库 | 。 NET框架 |
WebApplication | ASP。 NET框架 Web 应用程序 | 。 NET框架 |
UnitTests | NUnit测试项目 | 。 NET框架 |
共享->通用 | 类库 | 。 NET框架 |
共享->框架 | 类库 | 。 NET框架 |
新解决方案:
项目名称 | 项目模板 | 目标架构 |
---|---|---|
BusinessLogic | 类库 | 。 NET5.0 |
<网页 > API | ASP。 NET核心网页 API | 。 NET5.0 |
<网页 API >。 UnitTests | NUnit3 测试项目 | 。 NET5.0 |
共享->通用 | 类库 | 。 NET5.0 |
共享->框架 | 类库 | 。 NET5.0 |