

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

# 将架构重新设计为 Linux 容器
<a name="refactor-linux"></a>

通过将.NET Framework 应用程序移植到.NET Core 或.NET 6，可以在多个平台上运行应用程序，降低许可成本，提高性能并提高可扩展性。

## 使用案例
<a name="refactor-linux-use-case"></a>

此迁移策略在以下任何情况下都很有用：
+ 您有足够的资源和时间来重构应用程序。
+ 您可以解析所有.NET 框架依赖关系。
+ 你有一个长时间运行的应用程序。

## 优点
<a name="refactor-linux-advantages"></a>

与本地.NET 应用程序相比，这种迁移方法具有以下优点：
+ 降低总拥有成本 (TCO)
+ 提高了安全性和性能
+ 加速创新
+ 转换为云原生应用程序的好处
+ 开源

## 劣势
<a name="refactor-linux-disadvantages"></a>
+ 重构的工作量和成本

## AWS 服务
<a name="refactor-linux-services"></a>

用于存储容器镜像：
+ [Amazon ECR](https://aws.amazon.com/ecr)

对于编排容器：
+ [亚马逊 ECS](https://aws.amazon.com/ecs)，或带有 [AWS Fargate](https://aws.amazon.com/fargate/)
+ [亚马逊 EKS](https://aws.amazon.com/eks)，或者带有 [Far](https://aws.amazon.com/fargate/) gate 的亚马逊 EKS

AWS Fargate 是一款无服务器 pay-as-you-go计算引擎，可让您专注于构建应用程序，而无需管理服务器。Fargate 与亚马逊 ECS 和亚马逊 EKS 兼容。

## 工具
<a name="refactor-linux-tools"></a>


****  

| **工具** | **目的** | **资源** | 
| --- | --- | --- | 
| Porting Assistant for .NET | 此分析工具扫描.NET Framework 应用程序并生成.NET Core 兼容性评估。该评估可帮助您更快地将应用程序移植到 Linux。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-net-applications/refactor-linux.html) | 
| AWS App2Container (A2C) | A2C 是一款命令行工具，可轻松将.NET 和 Java 应用程序转换为容器化应用程序，从而实现这些应用程序的现代化。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-net-applications/refactor-linux.html) | 

## 部署决策
<a name="refactor-linux-deploy"></a>

您可以从五个部署选项中进行选择：
+ 如果您想完全控制计算环境的配置，包括内存和存储设置，并控制操作系统补丁，请将您的应用程序作为 Linux 容器部署到 EC2 实例上。
+ 如果您希望容器由 Kubernetes 管理并作为无服务器容器运行，请使用 Fargate 将您的应用程序作为 Linux 容器部署到亚马逊 EKS 上。
+ 如果您希望容器由 Amazon ECS 管理并作为无服务器容器运行，请使用 Fargate 将您的应用程序作为 Linux 容器部署到亚马逊 ECS 上。
+ 如果您希望容器由 Kubernetes 管理，但又想自己管理容器的计算资源，请将您的应用程序作为 Linux 容器部署在 Amazon EKS 上。
+ 如果您希望容器由 Amazon ECS 管理，但又想自己管理容器的计算资源，请将您的应用程序作为 Linux 容器部署在 Amazon ECS 上。

 ![Refactoring .NET applications as Linux containers on AWS](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-net-applications/images/rearchitect-linux.png) 