重构为现代。 NET然后迁移到 Linux - AWS 规范性指导

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

重构为现代。 NET然后迁移到 Linux

概述

对遗产进行现代化改造。 NET框架应用程序可以帮助您提高安全性、性能和可扩展性。实现现代化的有效方法。 NET框架应用程序是将它们迁移到现代的。 NET版本 (6+)。以下是将这些应用程序迁移到开源的一些主要好处。 NET:

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

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

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

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

成本影响

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

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

移植这些。 NET框架应用程序到现代。 NET需要开发人员的努力。您必须评估您的应用程序及其依赖关系,以查看它们是否与目标平台版本兼容。AWS 的@@ 移植助手。 NET是一款扫描辅助工具。 NET构架应用程序并生成. NET兼容性评估,帮助您更快地移植应用程序,使其与 Linux 兼容。的移植助手. NET标识与的不兼容之处。 NET,查找已知的替代品,并生成详细的兼容性评估。移植解决方案后,必须手动更改代码,才能使用依赖项成功编译项目。这样可以减少将应用程序现代化为 Linux 所涉及的手动工作。如果您的应用程序支持ARM处理器,则迁移到 Linux 可以解锁使用 Graviton 实例的能力。这可以帮助您进一步降低20%的成本。有关更多信息,请参阅通电。 NET5 使用 AWS Graviton2:计算博客中的基准测试。 AWS

还有其他工具,例如用于的AWS 工具包。 NET重构和. NET升级助手,它可以帮助您移植旧版。 NET框架应用程序到现代。 NET。

成本优化建议

要迁移。 NET框架应用程序,请执行以下操作:

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

  2. 评估 —下载移植助手. NET作为可执行(下载)文件。您可以将该工具下载并安装到您的计算机上,以开始评估您的应用程序。评估页面包含移植的项目、软件包APIs,这些项目和包与现代版本不兼容。 NET。因此,评估结束后,解决方案中会出现构建错误。您可以查看评估结果或将其下载到CSV文件中。有关更多信息,请参阅 “移植助手” 中的移植解决方案。 NET文档。

  3. 重构 — 评估应用程序后,您可以将项目移植到目标框架版本。移植解决方案时,移植助手将修改您的项目文件和部分代码。您可以查看日志,查看源代码的更改。在大多数情况下,代码需要付出额外的努力才能完成迁移和测试,从而为生产做好准备。根据应用程序的不同,某些更改可能包括实体框架、身份和身份验证。有关更多信息,请参阅 “移植助手” 中的移植解决方案。 NET文档。

这是将应用程序现代化为容器的第一步。可能有许多业务和技术驱动因素可以帮助您实现现代化。 NETLinux 容器的框架应用程序。其中一个重要的驱动因素是通过从 Windows 操作系统迁移到 Linux 来降低总拥有成本。在将应用程序迁移到的跨平台版本时,这可以降低许可成本。 NET以及用于优化资源利用率的容器。

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

其他注意事项和资源