重构为现代的 .NET,并迁移到 Linux 上 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

重构为现代的 .NET,并迁移到 Linux 上

概述

实现旧版 .NET Framework 应用程序的现代化,能够帮助您提升安全性、性能和可扩展性。实现 .NET Framework 应用程序现代化的有效方法是将其迁移到现代的 .NET 版本(6+)。以下是将这些应用程序迁移到开源 .NET 所带来的部分主要优势:

  • 通过在 Linux 操作系统上运行它们来降低 Windows 许可成本

  • 充分利用现代语言的可用性

  • 获得经过优化可在 Linux 上运行的性能

许多组织仍在运行较旧版本的 .NET Framework。这可能会带来安全风险,因为 Microsoft 不再解决旧版本中的漏洞。Microsoft 已停止对 .NET Framework 4.5.2、4.6 和 4.6.1 这些新版本的支持。评估继续运行该框架旧版本所带来的风险与收益非常重要。为了降低风险并减少成本,值得投入时间和精力重构为现代的 .NET 版本。

成本影响

以通用 EC2 实例类型 (m5) 为例,它提供了计算、内存和网络资源的平衡。这些实例适用于各种应用程序,例如 Web 服务器、中型数据库和源代码存储库。

例如,美国东部(弗吉尼亚北部)的 Windows Server(含许可证)上的 4 v CPUs 和 16 GB 内存的按需 m5.xlarge 实例每月的费用为 274.48 美元。在 Linux 服务器上使用同样的资源,每月费用为 140.16 美元。在此示例中,如果将您的应用程序从 .NET Framework 迁移到现代版本的 .NET 并在 Linux 服务器上运行应用程序,成本将降低 49%。您的费用可能会有所不同,具体取决于您在选择实例时选择的选项(例如,实例类型、操作系统、存储)。EC2 您可以使用节省计划预留实例进一步优化成本。有关更多详细信息,请使用 AWS 定价计算器 进行成本估算。对于包含 Windows 的实例,无论定价模式如何,许可费用均为每小时每个 vCPU 0.046 美元

将这些基于 .NET Framework 应用程序移植到现代 .NET 需要开发人员付出努力。您必须评估您的应用程序及其依赖关系,以查看它们是否与目标平台版本兼容。AWS Porting Assistant for .NET 是一款辅助工具,它能够扫描 .NET Framework 应用程序,并生成 .NET 兼容性评测报告,以帮助您更快地移植应用程序以与 Linux 兼容。Porting Assistant for .NET 能够识别与 .NET 的不兼容之处,找出已知的替换方案,并生成详细的兼容性评测报告。在移植您的解决方案之后,您必须手动更改代码,以便您的项目能够使用依赖关系成功编译。这减少了将您的应用程序现代化迁移至 Linux 所需的人工工作量。如果您的应用程序支持 ARM 处理器,迁移到 Linux 便能解锁使用 Graviton 实例的能力。这将有助于您再节省 20% 的成本。有关更多信息,请参阅《计算》博客中的 “使用 AWS Graviton2 为.NET 5 提供支持:基准测试” AWS 。

还有一些其他工具,例如适用于 .NET 重构的AWS Toolkit.NET 升级助手,它们能够帮助您将遗留的 .NET Framework 应用程序移植到现代的 .NET。

成本优化建议

要迁移 .NET Framework 应用程序,请执行以下操作:

  1. 先决条件 – 要使用 Porting Assistant for .NET,您必须在计划分析应用程序源代码的计算机上安装 .NET 5+ 版本。计算机上的资源必须至少具有 1.8 的 GHz 处理速度、4 GB 的内存和 5 Gb 的存储空间。有关更多信息,请参阅 Porting Assistant for .NET 文档中的先决条件

  2. 评测 – 下载 Porting Assistant for .NET 作为可执行(下载)文件。您可以下载并将该工具安装到您的计算机上,以开始对您的应用程序进行评测。评估页面包含移植的项目、软件包 APIs ,它们与现代.NET 不兼容。因此,在评测完成后,您在解决方案中会遇到构建错误。您可以查看评测调查发现或将其下载到 CSV 文件中。有关更多信息,请参阅 Porting Assistant for .NET 文档中的移植解决方案

  3. 重构 – 评测应用程序后,您可以将项目移植到目标框架版本。移植解决方案时,您的项目文件以及部分代码将会由 Porting Assistant 进行修改。您可以检查日志,以查看对您源代码所做的更改。在大多数情况下,要完成代码迁移和测试工作以使其达到可投入生产状态,还需要付出额外的努力。根据应用程序的不同,这些更改可能包括实体框架、身份和身份验证等。有关更多信息,请参阅 Porting Assistant for .NET 文档中的移植解决方案

这是将您的应用程序现代化到容器的第一步。将您的 .NET Framework 应用程序现代化到 Linux 容器,可能有多种商业和技术方面的推动因素。其中一个重要的推动因素是通过从 Windows 操作系统转向 Linux 系统来降低总拥有成本。这在将您的应用程序迁移到跨平台的 .NET 版本以及迁移到容器中以优化资源利用时,能够降低许可费用。

将您的应用程序移植到 Linux 后,您可以使用 AWS App2Container 对应用程序进行容器化。App2Container 使用 Amazon ECS 或 Amazon EKS 作为您可以直接部署到的端点服务。App2Container 提供了所有必要的基础设施即代码(IaC)部署构件,以帮助您反复将应用程序容器化。

其他注意事项和资源