翻译自 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/generic-host?view=aspnetcore-5.0
ASP.NET Core 模板创建了一个 .NET Core 通用主机 (Generic Host HostBuilder)。
本话题提供了关于在 ASP.NET Core 中使用 .NET 通用主机。关于在控制台中使用 .NET Generic Host 的信息,查看 .NET Generic Host。
主机定义主机是指封装了应用程序资源的对象,例如:
依赖注入(DI)
日志
配置
IHostedService 实现
当一个主机启动的时候,它会调用 IHostedService.StartAsync 在每一个在服务容器中托管服务集合中注册的 IHostedService 的实现。 在 Web 应用程序中,一个 IHostedService 的实现是一个启动 的 web 服务。
包含所有的应用程序相互依赖的资源在一个对象中的主要原因是声明周期管理:控制应用程序启动和优雅的关闭。
设置一个主机主机一般在 Program 类中通过代码配置,创建,运行。Main 方法:
调用 CreateHostBuilder 方法创建和配置一个 builder 对象
在 builder 对象上调用 Build 和 Run 方法
ASP.NET Core web 模板生成下列代码创建一个主机:
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }