环境:ASP.NET Core3.1
ASP.NET Core是一个全新的Web开发平台,微软在它上面构建了MVC、SingalR、GRPC、Orleans这样广泛使用的Web框架,我们先以MVC框架为例介绍利用ASP.NET Core构建项目的常见名词。这篇文章介绍泛型主机
ASP.NET Core MVC项目文件夹解读
一、什么是泛型主机?
主机是封装应用资源的对象,例如 :依赖关系注入 (DI)、Logging、Configuration、IHostedService
实现。启动主机时,它对它在 DI 容器中找到的 IHostedService 的每个实现调用 IHostedService.StartAsync
。 在 web 应用中,其中一个 IHostedService
实现是启动 HTTP 服务器实现的 web 服务。一个对象中包含所有应用的相互依赖资源的主要原因是生存期管理:控制应用启动和正常关闭。
二、泛型主机的创建、配置
1、主机通常由 Program
类中的代码配置、生成和运行,Program.cs是ASP.NET Core的启动入口文件。 Main
方法可以拆成以下代码:
IHostBuilder hostBuilder = CreateHostBuilder(args);//产生一个IHostBuilder实例hostBuilder ,创建通用主机 IHost host= hostBuilder.Build(); //运行给定操作以初始化主机。 这只能调用一次 host.Run();//运行应用程序并阻止调用线程,直至主机关闭。
2、CreateHostBuilder在创建泛型主机的时候进行了什么样的配置呢?
(1)CreateDefaultBuilder 方法的默认做的操作如下:
-
- 将 ContentRootPath 设置为 GetCurrentDirectory() 的结果
- 从 "DOTNET_" 前缀的环境变量加载主机 IConfiguration
- 从提供的命令行参数加载主机 IConfiguration
- 从 "appsettings.json" 和 "appsettings.[EnvironmentName].json " 加载应用 IConfiguration
- 从环境变量加载应用 IConfiguration
- 从提供的命令行参数加载应用 IConfiguration
- 将 ILoggerFactory 配置为记录到控制台、调试和事件源输出
- 当 EnvironmentName 为 "开发" 时,对依赖关系注入容器启用范围验证
(2)ConfigureWebHostDefaults
方法的默认做的操作如下:
-
- 从前缀为
ASPNETCORE_
的环境变量加载主机配置。 - 使用应用的托管配置提供程序将 Kestrel 服务器设置为 web 服务器并对其进行配置。 有关 Kestrel 服务器默认选项,请参阅 ASP.NET Core 中的 Kestrel Web 服务器实现。
- 添加主机筛选中间件。
- 如果
ASPNETCORE_FORWARDEDHEADERS_ENABLED
等于true
,则添加转接头中间件。 - 支持 IIS 集成。 有关 IIS 默认选项,请参阅 使用 IIS 在 Windows 上托管 ASP.NET Core。
- 从前缀为
二、Startup.cs简介
三、