为什么迁移到 ASP.NET Core 6 最小托管模型?

Why migrate to the ASP.NET Core 6 minimal hosting model?

我正在将系统从 ASP.NET 核心 5 升级到核心 6。我已阅读 migration guide 新的“最小托管模型”。

文档说新方法是首选和推荐的,但支持旧方法 - 所以我不需要更改。他们还表示旧方法对“高级”场景很有用,但没有提及细节。

有很多关于如何使用新方法的文档/博客/SO 问题 - 但没有提及为什么。给出了“仅四行的应用程序”作为理由,但这不足以成为迁移工作系统的理由。

我将升级到 v6,但不确定托管模式。我或我的 工作生产系统 将如何受益?

如果您将生产系统迁移到新的托管模型,能否请您分享一下是否值得的建议?新方法的优点(和缺点)是什么?谢谢!

新托管模式的最大变化是风格的变化。 IHostBuilder 上的回调已更改为更直线的模型(不是添加回调然后构建主机,而是编写代码来配置然后构建主机)。这使您可以在初始化和编写命令式逻辑之间进行操作。出现这种情况的主要方式之一是异步初始化。您可以只编写等待某些异步配置的代码,然后使用其结果来添加服务。这真的很难用回调来做,因为我们需要添加 async Configure/ConfigureServices 和许多其他东西。这个模型就是让你写代码。

迁移指南中的示例展示了如何保留 Startup class 但仍然使用新的 WebApplicationBuilder 最能说明这一点:

using Microsoft.AspNetCore.Builder;

var builder = WebApplication.CreateBuilder(args);

var startup = new Startup(builder.Configuration);

startup.ConfigureServices(builder.Services);

var app = builder.Build();

startup.Configure(app, app.Environment);

app.Run();

何时调用这些方法以及如何构建 Startup 非常清楚。

最后,这实际上是一种模式更改,如果您已经完全理解现有模型并围绕现有模型进行编程,那么您可能看不到巨大的好处。这就是为什么它是可选的。