ASP.NET Core基础系列(一)(应用程序启动)

一、什么是Host

Host作为一个可以用来托管web程序的服务对象,用于封装应用资源以及应用程序启动和生存期管理,其主要功能包括配置初始化、创建托管环境和Host通用上下文、依赖注入等。封装的应用资源有:

  • 依赖注入框架DI
  • Logging日志
  • Cofiguration配置
  • 托管服务:IHostedService服务接口的实现

二、Host是如何构建的

    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>();
                });
    }

从上述代码可以看到,Main函数中首先调用CreateHostBuilder方法,返回一个IHostBuilder。任何调用IHostBuilder.Build()方法完成。

2.1 通过Host.CreateDefaultBuilder(args):构造IHostBuilder的默认实现HostBuilder

上述.NET Core源代码中,可以看到CreateDefaultBuilder内部构造了一个HostBuilder,同时设置了:

  • 将内容根目录(contentRootPath)设置为由 GetCurrentDirectory 返回的路径。

  • 通过以下源加载主机配置

    • 环境变量(DOTNET_前缀)配置
    • 命令行参数配置
  • 通过以下对象加载应用配置

    • appsettings.json
    • appsettings.{Environment}.json
    • 密钥管理器 当应用在 Development 环境中运行时
    • 环境变量
    • 命令行参数
  • 添加日志记录提供程序

    • 控制台
    • 调试
    • EventSource
    • EventLog( Windows环境下)
  • 当环境为“开发”时,启用范围验证和依赖关系验证。

2.2 IHostBuilder.ConfigureWebHostDefaults:通过GenericWebHostBuilder对HostBuilder增加ASP.NET Core的运行时设置

2.3返回ConfigureWebHostDefaults代码中的configure(webHostBuilder):执行Program类中的webBuilder.UseStartup()

2.4CreateHostBuilder(args).Build()

详见:https://www.cnblogs.com/tianqing/p/12726181.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值