ASP.NET Core 中的 .NET 通用主机详解

目录

一、什么是通用主机(Generic Host)?

二、演进历程:从 WebHost 到 Generic Host

早期(.NET Core 2.x)

现代(.NET Core 3.0+)

极简模式(.NET 6+)

三、简化模型背后的机制

四、核心组成组件

1. IHost

2. IHostBuilder

3. IHostedService

五、常见应用场景

参考资料


 

在 ASP.NET Core 中,.NET 通用主机(Generic Host) 是应用程序的启动入口和运行框架,无论是 Web 应用、后台任务服务,还是微服务进程,都提供了统一的构建和生命周期管理方式。

本文将围绕其基本概念、演进过程、核心组件及典型应用场景展开详细介绍。


一、什么是通用主机(Generic Host)?

通用主机由 Microsoft.Extensions.Hosting 提供,核心职责包括:

  • • 应用生命周期管理(启动、运行、停止)

  • • 内建依赖注入(DI)容器支持

  • • 配置系统(支持 JSON、环境变量、命令行等)

  • • 内置日志记录支持

  • • 支持后台服务(如 IHostedService

不仅服务于 ASP.NET Core,还适用于控制台程序、Windows 服务、Worker Service 等。


二、演进历程:从 WebHost 到 Generic Host

早期(.NET Core 2.x)

使用 WebHost 构建 Web 应用:

WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>();

现代(.NET Core 3.0+)

推荐统一使用 Generic Host

Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    });

极简模式(.NET 6+)

简化为一行 WebApplication.CreateBuilder(args)

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();
app.MapControllers();
app.Run();

该语法基于通用主机构建,简化了 Program.cs,但本质仍是 HostBuilder + WebHostBuilder 的组合封装。


三、简化模型背后的机制

WebApplication.CreateBuilder(args) 实际执行了:

  • • Host.CreateDefaultBuilder(args) 创建主机

  • • 自动注册:

    • • Kestrel 服务器

    • • 中间件管道

    • • MVC 控制器

    • • 日志、配置等核心服务

  • • 提供统一入口 builder.Servicesbuilder.Configurationbuilder.Logging 等扩展接口

因此,无需手动配置主机构建流程,也能获得完整的托管能力。


四、核心组成组件

1. IHost

表示通用主机实例,负责管理应用程序的生命周期。

await host.RunAsync();  // 启动主机

2. IHostBuilder

用于配置主机(服务、配置、日志、环境等):

Host.CreateDefaultBuilder()
    .ConfigureServices((ctx, services) => { });

3. IHostedService

定义后台任务的标准接口,如定时任务、监听器等:

public class MyBackgroundService : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            Console.WriteLine("后台任务运行中...");
            await Task.Delay(1000);
        }
    }
}

注册方式:

builder.Services.AddHostedService<MyBackgroundService>();

五、常见应用场景

场景

使用方式

Web API / MVC

使用 WebApplication.CreateBuilder 创建主机

后台任务服务

使用 IHostedService / BackgroundService

Worker Service

基于模板,构建微服务进程或系统守护任务

控制台程序

使用 HostBuilder 构建有生命周期的 CLI 应用


参考资料

引入地址 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值