重构为现代的 .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 个 vCPU 和 16GB 内存的按需型 m5.xlarge 实例每月的费用为 274.48 美元。在 Linux 服务器上使用同样的资源,每月费用为 140.16 美元。在此示例中,如果将您的应用程序从 .NET Framework 迁移到现代版本的 .NET 并在 Linux 服务器上运行应用程序,成本将降低 49%。您的成本可能会因您在选择 EC2 实例
将这些基于 .NET Framework 应用程序移植到现代 .NET 需要开发人员付出努力。您必须评测您的应用程序及其依赖关系,以确定它们是否与目标平台版本兼容。AWSPorting Assistant for .NET
还有一些其他工具,例如适用于 .NET 重构的 AWS Toolkit 和 .NET 升级助手
成本优化建议
要迁移 .NET Framework 应用程序,请执行以下操作:
-
先决条件 – 要使用 Porting Assistant for .NET,您必须在计划分析应用程序源代码的计算机上安装 .NET 5+ 版本。该计算机上的资源必须具备最少 1.8GHz 的处理速度、4GB 的内存以及 5GB 的存储空间。有关更多信息,请参阅 Porting Assistant for .NET 文档中的先决条件。
-
评测 – 下载 Porting Assistant for .NET 作为可执行
(下载)文件。您可以下载并将该工具安装到您的计算机上,以开始对您的应用程序进行评测。该评测页面包含了那些与现代 .NET 不兼容的已移植项目、包和 API。因此,在评测完成后,您在解决方案中会遇到构建错误。您可以查看评测调查发现或将其下载到 CSV 文件中。有关更多信息,请参阅 Porting Assistant for .NET 文档中的移植解决方案。 -
重构 – 评测应用程序后,您可以将项目移植到目标框架版本。移植解决方案时,您的项目文件以及部分代码将会由 Porting Assistant 进行修改。您可以检查日志,以查看对您源代码所做的更改。在大多数情况下,要完成代码迁移和测试工作以使其达到可投入生产状态,还需要付出额外的努力。根据应用程序的不同,这些更改可能包括实体框架、身份和身份验证等。有关更多信息,请参阅 Porting Assistant for .NET 文档中的移植解决方案。
这是将您的应用程序现代化到容器的第一步。将您的 .NET Framework 应用程序现代化到 Linux 容器,可能有多种商业和技术方面的推动因素。其中一个重要的推动因素是通过从 Windows 操作系统转向 Linux 系统来降低总拥有成本。这在将您的应用程序迁移到跨平台的 .NET 版本以及迁移到容器中以优化资源利用时,能够降低许可费用。
将您的应用程序移植到 Linux 后,您可以使用 AWS App2Container
其他注意事项和资源
-
如果您使用的是基于 VB.NET(2002 年推出的旧版框架)构建的应用程序,并且想要将其移植到 .NET 6,请参考 AWS 上的 Microsoft 工作负载博客上的使用 Porting Assistant for .NET 将旧版 VB.NET 应用程序移植到 .NET 6.0
一文。 -
如果您在 Windows Communication Foundation(WCF)上运行的是旧版应用程序,并且想在现代 .NET 上运行它们,您可以采用 CoreWCF。有关更多信息,请参阅 AWS 上的 Microsoft 工作负载博客上的使用 Porting Assistant for .NET 将 WCF 应用程序现代化到 CoreWCF
一文。 -
您可以将移植助手作为扩展程序添加到您的 Visual Studio IDE 中。这使得您能够执行代码转换所需的所有任务,而无需在您的 IDE 和 Porting Assistant for .NET 工具之间来回切换。有关更多信息,请参阅 AWS 上的 Microsoft 工作负载博客中的使用 Porting Assistant for .NET Visual Studio IDE 扩展程序加速 .NET 应用程序的现代化过程
一文。 -
AWS Porting Assistant for .NET 现在是一款开源工具
,其中包含源代码以及评测的兼容性分析组件。这能够鼓励您的开发人员去使用和共享 .NET 移植知识和最佳实践。 -
您可以使用适用于 .NET 重构的 AWS Toolkit 将 .NET Framework 应用程序移植到 Linux 上的 .NET。有关更多信息,请参阅 AWS 上的 Microsoft 工作负载博客中的使用适用于 .NET 重构的 AWS Toolkit 加速 .NET 的现代化过程
一文。 -
您可以使用 AWS App2Container 加快 ASP.NET Core 应用程序的容器化以及向 AWS 的迁移
。