<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Migration | The .NET Blog</title><link>https://thedotnetblog.com/zh/tags/migration/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>zh</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Tue, 05 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/zh/tags/migration/index.xml" rel="self" type="application/rss+xml"/><item><title>用 Agentic Platform Engineering 消除迁移的重复性工作</title><link>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/agentic-platform-engineering-migration-automation/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/agentic-platform-engineering-migration-automation/</guid><description>Git-Ape 演示了将真实的 AWS Terraform 部署迁移到 Azure Bicep 的过程——提取部署意图并重新映射架构，而不是进行 1:1 的语法转换。</description><content:encoded>&lt;p&gt;&lt;em&gt;本文已自动翻译。要查看原始版本，&lt;a href="https://thedotnetblog.com/zh/news/emiliano-montesdeoca/agentic-platform-engineering-migration-automation/"&gt;请点击此处&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/all-things-azure/removing-the-monkey-work-of-migration-using-agentic-platform-engineering/"&gt;Removing the Monkey Work of Migration with Agentic Platform Engineering&lt;/a&gt; — Git-Ape（git 智能体平台工程工具）将真实的 AWS Terraform 仓库迁移到 Azure 的演练，专注于提取部署意图而非逐行转换。&lt;/p&gt;
&lt;h2 id="输入contoso-migration"&gt;输入：contoso-migration&lt;/h2&gt;
&lt;p&gt;源项目是一个真实的 Terraform 项目（&lt;code&gt;contoso-migration&lt;/code&gt;），在 AWS 上部署 Next.js 应用——EC2 用于计算，ALB 用于负载均衡，S3 用于制品，IAM 密钥用于身份认证。成本：约 34 美元/月。目标不是在 Azure 上复现相同的基础设施；而是弄清楚这个部署实际上要做什么，然后用 Azure 原生服务重新构建它。&lt;/p&gt;
&lt;h2 id="步骤-1验证与认证"&gt;步骤 1：验证与认证&lt;/h2&gt;
&lt;p&gt;Git-Ape 首先验证所有必需的 CLI 工具——&lt;code&gt;az&lt;/code&gt;、&lt;code&gt;aws&lt;/code&gt;、&lt;code&gt;gh&lt;/code&gt;、&lt;code&gt;jq&lt;/code&gt;、&lt;code&gt;git&lt;/code&gt;——并在进行任何操作之前确认活跃的认证会话。不做部分运行。&lt;/p&gt;
&lt;h2 id="步骤-2意图提取"&gt;步骤 2：意图提取&lt;/h2&gt;
&lt;p&gt;智能体通过 GitHub API 读取整个源仓库，并提取部署意图：运行时（Node.js）、计算类型、入口模式、制品处理、身份模型、网络和监控。这是关键步骤——它构建了一个关于部署做什么的语义模型，而不是它使用了哪些 Terraform 关键字。&lt;/p&gt;
&lt;h2 id="步骤-3服务映射"&gt;步骤 3：服务映射&lt;/h2&gt;
&lt;p&gt;AWS 服务映射到 Azure 等效服务：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EC2 → App Service（Linux，Node 20 LTS）&lt;/li&gt;
&lt;li&gt;ALB → App Service 内置负载均衡&lt;/li&gt;
&lt;li&gt;IAM 角色/密钥 → Managed Identity&lt;/li&gt;
&lt;li&gt;Terraform → Bicep + GitHub Actions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="步骤-4评审智能体"&gt;步骤 4：评审智能体&lt;/h2&gt;
&lt;p&gt;在生成输出之前，评审智能体运行并发现两个阻塞问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;启动时构建反模式&lt;/strong&gt; — 原始 Terraform 在 EC2 启动时运行 &lt;code&gt;npm install &amp;amp;&amp;amp; npm run build&lt;/code&gt;。修复：在 CI 中构建，部署已就绪的制品。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不必要的 Blob Storage&lt;/strong&gt; — S3 用于制品暂存，通过适当的 CI/CD 可以完全省去。评审智能体将其彻底删除。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="步骤-5生成的输出"&gt;步骤 5：生成的输出&lt;/h2&gt;
&lt;p&gt;结果是约 80 行 Bicep，而不是原来的 200 多行 Terraform。智能体创建了一个新的 GitHub 仓库，包含 &lt;code&gt;infra/main.bicep&lt;/code&gt; 和 &lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt;，并删除了所有 AWS 特定文件。&lt;/p&gt;
&lt;h2 id="安全态势对比"&gt;安全态势对比&lt;/h2&gt;
&lt;p&gt;迁移还带来了显著的安全升级：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;AWS 原始&lt;/th&gt;
&lt;th&gt;Azure 输出&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;仅 HTTP&lt;/td&gt;
&lt;td&gt;仅 HTTPS，TLS 1.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSH 对 0.0.0.0/0 开放&lt;/td&gt;
&lt;td&gt;无 SSH 暴露&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IAM 访问密钥&lt;/td&gt;
&lt;td&gt;OIDC + Managed Identity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;无监控&lt;/td&gt;
&lt;td&gt;Application Insights&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;成本：约 13 美元/月，而原来是 34 美元/月。&lt;/p&gt;
&lt;h2 id="与语法转换器的区别"&gt;与语法转换器的区别&lt;/h2&gt;
&lt;p&gt;评审智能体步骤是将其与机械翻译区分开来的关键。它发现了在 AWS 上可行但在 Azure 上会出错的模式——并修复了它们而不是复制它们。输出不是&amp;quot;Azure 语法的 AWS&amp;quot;；而是以更简洁方式实现同一目标的 Azure 原生部署。&lt;/p&gt;
&lt;p&gt;请查看&lt;a href="https://devblogs.microsoft.com/all-things-azure/removing-the-monkey-work-of-migration-using-agentic-platform-engineering/"&gt;完整演练&lt;/a&gt;以获取完整的智能体追踪和生成的文件。&lt;/p&gt;</content:encoded></item><item><title>GitHub Copilot 的现代化评估是你还没用上的最好迁移工具</title><link>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/zh/news/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/</guid><description>GitHub Copilot 的现代化扩展不仅仅建议代码更改 — 它生成完整的迁移评估，包含可操作的问题、Azure 目标比较和协作工作流。以下是评估文档为何是一切关键的原因。</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;本文为自动翻译。查看原文请&lt;a href="https://thedotnetblog.com/zh/news/emiliano-montesdeoca/dotnet-modernization-assessment-github-copilot/"&gt;点击这里&lt;/a&gt;。&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;将传统 .NET Framework 应用迁移到现代 .NET 是那种每个人都知道应该做但没人想开始的任务。它从来不是简单的&amp;quot;更改目标框架&amp;quot;。而是消失的 API、不再存在的包、工作方式完全不同的托管模型，以及关于什么要容器化、什么要重写、什么要保持不变的无数小决策。&lt;/p&gt;
&lt;p&gt;Jeffrey Fritz 刚刚发布了一篇 &lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;GitHub Copilot 现代化评估的深入解析&lt;/a&gt;，说实话？这是我见过的 .NET 最好的迁移工具。不是因为代码生成 — 那现在已经是标配了。而是因为它生成的评估文档。&lt;/p&gt;
&lt;h2 id="它不仅仅是代码建议引擎"&gt;它不仅仅是代码建议引擎&lt;/h2&gt;
&lt;p&gt;VS Code 扩展遵循&lt;strong&gt;评估 → 计划 → 执行&lt;/strong&gt;模型。评估阶段分析你的整个代码库，生成一份结构化文档，捕获一切：什么需要更改、需要配置哪些 Azure 资源、使用什么部署模型。下游的一切 — 基础设施即代码、容器化、部署清单 — 都源自评估发现的内容。&lt;/p&gt;
&lt;p&gt;评估存储在项目的 &lt;code&gt;.github/modernize/assessment/&lt;/code&gt; 下。每次运行产生一份独立的报告，因此你可以积累历史记录，并在修复问题时跟踪迁移态势的演变。&lt;/p&gt;
&lt;h2 id="两种开始方式"&gt;两种开始方式&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;推荐评估&lt;/strong&gt; — 快捷路径。从策划好的领域（Java/.NET 升级、云就绪、安全）中选择，无需配置即可获得有意义的结果。非常适合初次了解应用的状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自定义评估&lt;/strong&gt; — 定向路径。精确配置要分析的内容：目标计算（App Service、AKS、Container Apps）、目标操作系统、容器化分析。选择多个 Azure 目标来并排比较迁移方法。&lt;/p&gt;
&lt;p&gt;那个比较视图真的很有用。一个应用在 App Service 上可能有 3 个必须解决的问题，在 AKS 上可能有 7 个。看到两者有助于在确定迁移路径之前做出托管决策。&lt;/p&gt;
&lt;h2 id="问题分解是可操作的"&gt;问题分解是可操作的&lt;/h2&gt;
&lt;p&gt;每个问题都带有严重程度级别：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;必须&lt;/strong&gt; — 必须修复，否则迁移失败&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;潜在&lt;/strong&gt; — 可能影响迁移，需要人工判断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可选&lt;/strong&gt; — 推荐的改进，不会阻止迁移&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每个问题都链接到受影响的文件和行号，提供详细描述说明什么地方有问题以及为什么对目标平台重要，给出具体的修复步骤（不仅仅是&amp;quot;修复这个&amp;quot;），并包含官方文档链接。&lt;/p&gt;
&lt;p&gt;你可以将单个问题分配给开发者，他们拥有行动所需的一切。这就是告诉你&amp;quot;有个问题&amp;quot;的工具和告诉你如何解决的工具之间的区别。&lt;/p&gt;
&lt;h2 id="涵盖的升级路径"&gt;涵盖的升级路径&lt;/h2&gt;
&lt;p&gt;针对 .NET 具体来说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET Framework → .NET 10&lt;/li&gt;
&lt;li&gt;ASP.NET → ASP.NET Core&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每条升级路径都有检测规则，知道哪些 API 被移除、哪些模式没有直接等价物、哪些安全问题需要关注。&lt;/p&gt;
&lt;p&gt;对于管理多个应用的团队，还有一个 CLI 支持多仓库批量评估 — 克隆所有仓库，全部评估，获取每个应用的报告加上汇总的组合视图。&lt;/p&gt;
&lt;h2 id="我的看法"&gt;我的看法&lt;/h2&gt;
&lt;p&gt;如果你坐拥传统 .NET Framework 应用（说实话，大多数企业团队都是这样），这就是&lt;em&gt;那个&lt;/em&gt;应该开始使用的工具。仅评估文档就值得投入时间 — 它将模糊的&amp;quot;我们应该现代化&amp;quot;变成了一个具体的、有优先级的工作项列表，指明了前进的方向。&lt;/p&gt;
&lt;p&gt;协作工作流也很聪明：导出评估、与团队分享、无需重新运行即可导入。决策者不是运行工具的人的架构评审？涵盖了。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;GitHub Copilot 的现代化评估将 .NET 迁移从一个可怕的、不明确的项目转变为一个结构化的、可跟踪的过程。从推荐评估开始了解你的现状，然后使用自定义评估来比较 Azure 目标并制定迁移计划。&lt;/p&gt;
&lt;p&gt;阅读&lt;a href="https://devblogs.microsoft.com/dotnet/your-migrations-source-of-truth-the-modernization-assessment/"&gt;完整演练&lt;/a&gt;并获取 &lt;a href="https://aka.ms/ghcp-appmod/vscode-ext"&gt;VS Code 扩展&lt;/a&gt;在你自己的代码库上试试。&lt;/p&gt;</content:encoded></item></channel></rss>