使用 .NET Upgrade Assistant 将 ASP.NET Framework 现代化为 ASP.NET Core

介绍

完全的100 经验值
  • 1分钟

在本模块中,您将把在 .NET Framework 上运行的 ASP.NET MVC 应用程序升级到 ASP.NET Core。

示例场景

假设您是一家名为 Contoso Pizza 的披萨公司的员工。您的经理要求您评估是否应该将在 .NET Framework 4.8.1 上运行的用 ASP.NET MVC 5 编写的现有内部应用程序升级到 ASP.NET Core。

你会做什么?

在本模块中,您将:

  • 了解何时以及为何将 .NET Framework 上运行的现有 ASP.NET 应用程序现代化为 ASP.NET Core。
  • 了解在 .NET Framework 上运行的 ASP.NET 应用程序的现代化选项和机会。
  • 了解升级助手如何帮助您分析和增量升级现有的 ASP.NET 应用程序。
  • 将 .NET Framework 上运行的现有 ASP.NET 应用程序更新为 ASP.NET Core。

主要目标是什么?

在本课程结束时,您将能够将小型 ASP.NET MVC 应用程序从 .NET Framework 4.8.1 升级到 ASP.NET Core。您将了解升级助手如何帮助您分析和增量升级现有的 ASP.NET 应用程序,以及完成升级所需的手动迁移步骤。您将知道在哪里可以找到针对更复杂的迁移场景的其他指导和资源。

了解现代化到 ASP.NET Core 的好处

在本单元中,您将了解何时以及为何将 .NET Framework 上运行的现有 ASP.NET 应用程序升级到 ASP.NET Core。

ASP.NET Core 是 ASP.NET 的最新版本,它包含对 ASP.NET MVC 的许多改进。ASP.NET Core 和 ASP.NET MVC 之间最显着的区别是它运行在最新版本的 .NET(以前称为 .NET Core)上,这是跨平台的。您可以使用它构建可以在 Windows、Linux 或 macOS 上运行的 Web 应用程序。与在 .NET Framework 上运行的 ASP.NET MVC 相比,在 .NET 上运行的 ASP.NET Core 提供了许多优势。有关以下优点的详细信息,请参阅ASP.NET Core 文档:

让我们更详细地讨论一些主要好处。

表现

.NET 上的 ASP.NET Core 提供比 .NET Framework 高得多的性能。这种性能改进提供了几个潜在的优势,包括对单个响应的更快响应、更高的吞吐量、更高的服务器效率以及减少的内存使用。所有这些改进都可以通过使用更少的服务器资源提供更多响应来节省成本。

许多案例研究已经记录了这些性能优势。Microsoft Entra ID 每天处理 1150 亿个请求,并通过迁移到 .NET Core 将 CPU 成本降低了 50%Bing 记录了迁移到 .NET Core 2.1 后服务器延迟降低了 34%。一旦 Bing 在 .NET Core 上运行,团队就能够利用每个 .NET Core 版本更新,并继续在每个更新中看到巨大的改进。性能改进仍然是创新的重点,进一步将 .NET 与 .NET Framework 区分开来。请考虑以下跟踪各种增量改进的性能博客文章:

跨平台支持

.NET Framework 是仅限 Windows 的框架,而 ASP.NET Core 是跨平台框架。ASP.NET Core 可以在 Windows、macOS 和 Linux 上开发和托管。这种跨平台支持可实现开发人员环境、CI/CD 管道和部署的灵活性。开发人员和设计人员经常在 Windows 和 macOS 环境中工作,并将应用程序部署到各种托管环境,包括 Linux、Docker、Windows 和云托管平台。

生态系统

将应用程序更新到 ASP.NET Core 使您可以访问最新版本的流行 NuGet 库、现代开发工具以及来自商业工具供应商的最新组件。

访问 .NET 更新中的新功能

.NET Framework 继续受到支持并接收安全更新,但更新不包括新功能。更新到 ASP.NET Core 使您可以访问年度版本更新中的新功能。

评估 ASP.NET 应用程序的现代化选项和机会
完全的
100 经验值
4分钟
假设您是一家名为 Contoso Pizza 的披萨公司的员工。您的团队维护一个用 ASP.NET MVC 5 编写并在 .NET Framework 4.8 上运行的内部应用程序。您的经理要求您评估是否应该将应用程序升级到 ASP.NET Core。

选项 1:保持原样
.NET Framework 上的 ASP.NET MVC 继续由 Microsoft 支持和维护。虽然这对于新项目来说不是一个好的选择,但您可能会认为它是您现有项目的最佳选择。当您权衡升级应用程序的成本和收益时,您应该考虑保留 .NET Framework 作为一个有效的选择。您仍然可以使用使用 Visual Studio 将 ASP.NET Web 应用程序迁移到 Azure学习路径来探索将现有 ASP.NET 应用程序迁移到 Azure 的好处。

选项 2:完全升级到 ASP.NET Core
如果您的项目时间表和预算允许完全升级到 ASP.NET Core,您应该考虑此选项。完整的升级将为您提供 ASP.NET Core 的全部优势,并可以简化在混合环境中运行时遇到的问题。

选项 3:增量升级
在许多情况下,开发团队决定对 ASP.NET Core 实施分阶段更新。此迁移策略将允许您继续使用现有的 ASP.NET MVC 5 应用程序,但将允许您通过一系列较小的步骤升级 .NET 运行时。您将首先按垂直切片或水平层划分应用程序,然后将每个部分作为单独的步骤进行升级。

额外的机会
升级到 ASP.NET Core 为您提供了一些托管和部署应用程序的新机会。您可能需要考虑这些,将其作为升级计划的一部分或作为升级计划的后续措施。

迁移到云端
ASP.NET Core 针对云托管进行了优化,您可以考虑将全部或部分应用程序迁移到云,作为升级到 ASP.NET Core 的一部分或后续操作。您可以使用Azure 应用服务迁移助手(一种自动将 Web 应用程序从本地迁移到云的免费且简单的路径)来简化将 .NET Framework Web 应用程序迁移到云的过程,只需进行最少的代码更改或无需更改任何代码。

更新为基于容器的部署
虽然 .NET Framework 上的 ASP.NET MVC 仅限于在 Windows 上的 IIS 中运行,但 ASP.NET Core 应用程序具有许多部署选项,包括容器。有关为何以及如何在 ASP.NET Core 中使用基于容器的部署的更多信息,请参阅我们的微服务与 .NET指南。

什么是 .NET 升级助手?

200 经验值
  • 5分钟

在本单元中,您将了解 .NET Upgrade Assistant 如何帮助您分析现有的 ASP.NET 应用程序并规划到 ASP.NET Core 的升级。

.NET Upgrade Assistant是一个工具,可帮助您将不同类型的应用程序从旧版本的 .NET Framework、.NET Core、.NET 5 和 .NET 6 升级到最新的 .NET 版本。它有两种“风格”:Visual Studio 扩展和 CLI 工具。运行升级助手后,在某些情况下,应用程序将需要额外的努力才能完成升级。该工具通过附加分析器不断更新,自动修复重大更改并简化升级过程,因此请确保您拥有该工具的最新版本。

Visual Studio 扩展很方便,并在整个升级过程中提供图形反馈,因此在本单元中我们将展示如何使用该扩展。同时,如果您更喜欢使用 CLI,可以在 GitHub 上获取文档和安装程序

要继续操作,您需要下载并安装 VS 扩展:

该工具支持以下 .NET Framework 应用程序类型:

  • Windows 窗体应用程序
  • WPF 应用程序
  • ASP.NET MVC 应用程序
  • ASP.NET Web API 应用程序
  • 控制台应用程序
  • 类库

它从以下版本的 .NET 升级应用程序:

  • .NET框架
  • .NET核心
  • .NET 5
  • .NET 6

最新的标准期限支持 (STS)、长期支持 (LTS) 或 .NET 预览版本。

命令行版本的升级助手工具也支持升级:

  • 从 Xamarin.Forms 到 .NET MAUI
  • 从 WCF 到核心 WCF

升级助手执行的升级步骤

升级解决方案时,该工具将:

  • 确定哪些项目需要升级并建议项目升级的顺序。
  • 将项目文件更新为SDK样式的项目。
  • 删除packages.config 中可能存在的传递性NuGet 包依赖项。
  • 将项目重新定位为标准期限支持 (STS)、长期支持 (LTS) 或预览
  • 将 NuGet 包依赖项更新为与 STS、LTS 或预览版兼容的版本。
  • 在 C# 源代码中进行简单更新,以将 .NET Framework 中的工作模式替换为 STS、LTS 或 Preview 等效项。
  • 对于某些应用程序模型(例如 ASP.NET 应用程序),添加通用模板文件(例如Startup.cs)并根据识别的 web.config 或 app.config 值进行简单更新。
  • 对于面向 Windows 的项目,请添加对包的引用Microsoft.Windows.Compatibility

 提示

升级助手和升级文档重复引用了TFMTFM 是Target Framework Moniker的缩写,用于指示项目或库可用的 API 集。一些 TFM 示例包括net48.NET Framework 4.8 和net7.0.NET 7.0。升级助手将为您处理项目文件中的 TFM 转换。

故障排除提示

使用 .NET Upgrade Assistant 时可能会出现几个已知问题。在某些情况下,这些是.NET Upgrade Assistant 内部使用的try-convert 工具的问题。

该工具的 GitHub 存储库提供了更多故障排除提示和已知问题。

练习 - 将应用程序升级到 ASP.NET Core

完全的100 经验值
  • 8分钟

在本单元中,您将使用升级助手将 ASP.NET MVC 5 应用程序升级到 ASP.NET Core。

升级 .NET Framework ASP.NET MVC 应用程序

本部分演示针对面向 .NET Framework 的现有 ASP.NET MVC 应用程序运行 .NET Upgrade Assistant。

验证工具是否已安装

可以从 Visual Studio 中的扩展管理器安装 .NET Upgrade Assistant 扩展,但在本练习中,您将使用 Visual Studio 安装程序。这样,您还可以仔细检查是否拥有构建示例应用程序所需的组件。

  1. 启动 Visual Studio 安装程序并在 Visual Studio 2022 安装上选择“修改” 。
  2. 工作负载选项卡上,确保选择ASP.NET 和 Web 开发工作负载。
  3. “单个组件”选项卡上,搜索以下组件并确保选择它们:
    • .NET Framework 4.8.1 目标包
    • .NET升级助手
  4. 选择“修改”按钮(如果有)以应用任何更改。如果未进行任何更改,请选择“关闭”

获取示例代码

让我们获取示例应用程序。它只是从 ASP.NET MVC 模板生成的标准样板应用程序。

  1. 打开 Visual Studio 2022。

  2. 使用快速启动窗口上的克隆存储库按钮或菜单栏上的Git > 克隆https://github.com/MicrosoftDocs/mslearn-modernize-aspnet-framework-to-core命令,从 . 下载并打开示例存储库。

    Visual Studio Git 克隆菜单命令的屏幕截图。

  3. 项目打开后,在解决方案资源管理器中查看文件。该应用程序是在 .NET Framework 4.8.1 中构建的 ASP.NET 项目。按F5运行该应用程序。验证其有效后,停止该应用程序。

运行升级助手

  1. “解决方案资源管理器”中,右键单击“AspNetMvcTest”项目并选择“升级”

    解决方案资源管理器的屏幕截图,其中显示了项目的上下文菜单并突出显示了升级命令。

    升级助手选项卡打开。由于要升级的应用程序是 ASP.NET MVC 应用程序,因此唯一可用的选项是并行增量项目升级

    升级助手欢迎屏幕的屏幕截图。 仅显示一个选项:并行增量项目升级。

    这种升级方法非常适合网络应用程序。它生成一个新的 .NET 项目,该项目实现 YARP(又一个反向代理)。如果请求资源 URL 但在新项目中找不到,则请求将转发到旧项目。这样,您就可以逐步迁移到新应用程序,而不会丢失任何功能。

  2. 选择并行增量项目升级

  3. 选择“新建项目”,然后选择“下一步”

  4. 为新项目选择一个名称。助手建议名称为AspNetMvcTestCore。这已经足够描述了,所以就别管它了。验证项目模板是否设置为ASP.NET Core MVC并选择Next

  5. 选择您的目标框架。选择.NET 7.0并选择下一步

  6. 检查要执行的任务:

    向导最后一个屏幕的屏幕截图,显示创建新的 AspNetMvcTestCore 项目时要执行的任务。

    升级助手将:

    • 创建一个新的 ASP.NET Core 项目。
    • 设置新的开始操作(不打开页面)。
    • 将这两个项目设置为解决方案的启动项目。
    • 将 YARP 和 System.Web 适配器包添加到新项目中。
    • 将 YARP 设置添加到appsettings.json。这些设置将配置为将请求转发到旧项目。
  7. 选择“完成”,升级助手将完成初始迁移。

  8. 选择“完成”以查看升级摘要。

    显示端点分布的摘要屏幕的屏幕截图。 目前所有端点都在 ASP.NET MVC 项目中。

增量升级控制器

从这里,您可以将类和控制器增量移动到新项目。

  1. 选择端点资源管理器按钮并查看端点。

    端点资源管理器步骤的屏幕截图显示了检测到的端点,所有端点都位于 HomeController 上。

    显示检测到的路线和端点。请注意,端点是家庭控制器上的所有操作。

  2. 选择升级下拉列表并选择控制器

  3. “选择要升级的控制器”对话框中,选择AspNewMvcTest.Controllers.HomeController并选择Upgrade

  4. “选择组件”对话框中,展开树视图上的所有节点。

    “选择组件”对话框的屏幕截图,其中树视图已展开。

    升级助手已检测到需要迁移以支持家庭控制器的路由、类和视图。

  5. 选择升级选择以升级所选组件。

  6. 选择端点资源管理器并注意端点和路由现在出现在新项目中。

完成手动升级步骤

完成升级助手中的步骤后,您需要完成一些手动步骤才能完成升级。静态.js.css文件不是自动升级的一部分,因此您需要采取替代方法。对于此应用程序,我们将手动移动它们。

将静态文件移动到wwwroot

应由 Web 服务器提供服务的静态文件应移动到名为 的根级文件夹中的适当文件夹中wwwroot。有关详细信息,请参阅ASP.NET Core 中的静态文件

  1. 在AspNewMvcTextCorewwwroot项目的根目录中创建一个新目录。

  2. wwwroot创建一个名为 的子目录css

  3. 创建另一个子目录wwwroot命名为js

    wwwroot 目录以及 js 和 css 子目录的屏幕截图。

  4. 将以下文件从AspNetMvcTest项目Content中的目录复制到AspNetMvcTestCore项目中: wwwroot/css

    • bootstrap.min.css
    • 站点.css
  5. 将以下文件从AspNetMvcTest项目Scripts中的目录复制到AspNetMvcTestCore项目中: wwwroot/js

    • bootstrap.min.js
    • jquery-3.6.4.min.js
    • jquery.validate.min.js
    • jquery.validate.unobtrusive.min.js
    • Modernizr-2.8.3.js

所需的静态文件已被移动。

wwwroot 目录和子目录的屏幕截图,其中包含所有必需的文件。

更新布局页面中的静态文件引用

静态文件位于它们需要的位置,因此现在我们可以更新 Razor 布局以反映它们的新位置。

  1. 新的 AspNetMvcTestCore项目中,打开Views/Shared/_Layout.cshtml.

  2. 在元素中找到以下行<head>

    剃刀复制
    @*@Styles.Render("~/Content/css")*@
    @*@Scripts.Render("~/bundles/modernizr")*@
    
  3. 将上面的行替换为:

    超文本标记语言复制
    <link rel="stylesheet" href="~/css/bootstrap.min.css" />
    <link rel="stylesheet" href="~/css/site.css" />
    
  4. 从元素底部找到以下行<body>

    剃刀复制
    @*@Scripts.Render("~/bundles/jquery")*@
    @*@Scripts.Render("~/bundles/bootstrap")*@
    
  5. 将上面的行替换为:

    超文本标记语言复制
    <script src="~/js/jquery-3.6.4.min.js"></script>
    <script src="~/js/jquery.validate.min.js"></script>
    <script src="~/js/jquery.validate.unobtrusive.min.js"></script>
    <script src="~/js/modernizr-2.8.3.js"></script>
    <script src="~/js/bootstrap.min.js"></script>
    

运行应用程序

返回“摘要”对话框,并注意旧的 .NET Framework 应用程序中不保留任何未升级的终结点。您可能需要构建应用程序来更新助手。

升级助手中“摘要”选项卡的屏幕截图,显示所有端点均已迁移。

当您按下 时F5,应用程序应该会成功构建并运行。恭喜!

显示 ASP.NET Core 应用程序主页的浏览器窗口的屏幕截图。

如果此应用程序有更多控制器,您将为其他控制器重复此过程,直到升级整个应用程序。

删除 YARP

现在所有端点都已迁移,不再需要反向代理映射到旧项目。

在新应用程序中,完成以下步骤来删除 YARP:

  1. Program.cs中,删除调用builder.Services.AddReverseProxy().LoadFromConfig().
  2. 在同一文件中,删除行app.MapReverseProxy();.
  3. appsettings.json中,删除ReverseProxy配置对象。

现在可以独立于原始应用程序来构建和部署新应用程序。

 笔记

在这个简单的场景中,您能够一步完成现代化。在许多现实世界的应用中,现代化需要更长的时间。在这种情况下,YARP 代理将保留在适当的位置,以便您可以增量更新您的应用程序。

概括

在本部分中,您完成了一个简单的特定测试场景的升级:默认的 ASP.NET MVC 5 应用程序,没有身份验证、数据访问、其他 NuGet 包或自定义代码。在更复杂的场景中,您需要完成ASP.NET Core 迁移指南中详细介绍的其他迁移步骤。

概括

完全的100 经验值
  • 1分钟

在本模块中,您研究了何时以及为何将 .NET Framework 上运行的现有 ASP.NET 应用程序现代化为 ASP.NET Core。您探索了在 .NET Framework 上运行的 ASP.NET 应用程序的现代化选项和机会。您学习了如何使用 .NET Upgrade Assistant 分析现有 ASP.NET 应用程序并计划升级到 ASP.NET Core,并且学习了如何使用 .NET Core CLI 升级 ASP.NET 应用程序。

下一步

更深入地了解 .NET Upgrade Assistant 的文档:

请参考以下内容,了解有关如何将 ASP.NET 应用程序现代化为 ASP.NET Core 的深入信息:

  • 25
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在 Linux 上部署 .NET 应用程序需要使用 .NET Core,以下是详细步骤: 1. 安装 .NET Core 运行时和 SDK 在 Linux 上部署 .NET 应用程序需要安装 .NET Core 运行时和 SDK。可以从官网下载适合自己操作系统的版本:https://dotnet.microsoft.com/download 2. 编写 .NET 应用程序 使用 .NET Core SDK 编写 .NET 应用程序,可以使用 Visual Studio Code 或者其他文本编辑器。 3. 编译 .NET 应用程序 使用 .NET Core SDK 编译 .NET 应用程序,可以使用以下命令: ``` dotnet build ``` 4. 发布 .NET 应用程序 使用 .NET Core SDK 发布 .NET 应用程序,可以使用以下命令: ``` dotnet publish -c Release -o /app/publish ``` 其中,`-c` 参数指定编译模式,`-o` 参数指定发布目录。 5. 安装和配置 Web 服务器 在 Linux 上部署 .NET 应用程序需要安装和配置 Web 服务器,可以使用 nginx 或者 Apache。 6. 配置 Web 服务器 在 Web 服务器上配置反向代理,将请求转发到 .NET 应用程序。以下是 nginx 的配置示例: ``` server { listen 80; server_name example.com; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } ``` 其中,`proxy_pass` 指定 .NET 应用程序的地址。 7. 启动 .NET 应用程序 使用以下命令启动 .NET 应用程序: ``` dotnet /app/publish/YourApplication.dll ``` 其中,`YourApplication.dll` 是应用程序的入口文件。 以上是在 Linux 上部署 .NET 应用程序的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值