.netcore入门34:配置模块、依赖注入、选项模型、日志框架在asp.net core中的关系
环境:
- window 10x64
- .net core 3.1
一、配置模块
配置模块是.net core中的基石。它有以下几大特点:
- 不依赖于“依赖注入容器”;
- 可从六大数据源中抽取配置数据;
如: Json、命令行、内存、xml、Jni、环境变量
- 可以为其他模块提供配置数据;
如:选项模型、日志框架;
涉及到的nuget包:
- Microsoft.Extensions.Configuration.Abstractions: 抽象定义;
- Microsoft.Extensions.Configuration:配置模块顶层实现(包含从内存中提取配置);
- 六大数据源包;
Microsoft.Extensions.Configuration.Json:从json中提取配置
Microsoft.Extensions.Configuration.Xml:从xml中提取配置
Microsoft.Extensions.Configuration.EnvironmentVariables:从环境变量中提取配置;
Microsoft.Extensions.Configuration.CommandLine:从命令行中提取配置;
Microsoft.Extensions.Configuration.Ini:从ini文件中提取配置;
从内存中提取数据(包含在Microsoft.Extensions.Configuration
中) - Microsoft.Extensions.Configuration.Binder:将配置数据绑定到对象;
二、依赖注入
依赖注入也是.net core中的基石,但它和配置模块是分开的,互不影响。
涉及到的nuget包:
- Microsoft.Extensions.DependencyInjection.Abstractions:抽象定义;
- Microsoft.Extensions.DependencyInjection:依赖容器实现;
三、选项模型
选项模型为.net core应用程序提供配置对象,它有以下几大特点:
- 构建在“依赖注入容器之上”;
- 数据来源大部分来自于“配置模块”,与“配置模块”一起成为.net core的一对基石;
虽然是这么相称,但它们之间并无直接的关系。
涉及的nuget包:
- Microsoft.Extensions.Options: 选项模型本身就这一个包(构建在依赖注入容器之上);
- Microsoft.Extensions.Options.ConfigurationExtensions:用于和“配置模块”集成,集成后可以从“配置模块”提取数据;
四、日志框架
日志框架定义了.net core应用程序的日志输出规则,是我们开发应用程序的基石,构建在“依赖注入容器”之上。
涉及的nuget包:
- Microsoft.Extensions.Logging.Abstractions:抽象定义;
- Microsoft.Extensions.Logging:具体实现;
- 常见的日志记录提供程序:
- Microsoft.Extensions.Logging.Console :微软提供,输出日志到控制台
- Microsoft.Extensions.Logging.Debug :微软提供, 输出日志到调试器的调试窗口
- log4net:流行第三方日志记录提供程序,需引用 Microsoft.Extensions.Logging.Log4Net.AspNetCore
- Serilog:流行第三方日志记录提供程序,需引用 Serilog.AspNetCore
- NLog: 流行第三方日志记录提供程序,需引用 NLog.Web.AspNetCore
五、通用主机
参考:
.netcore入门23:asp.net core源码分析之通用主机
.netcore入门24:asp.net core源码分析之Startup调用时机
上面列举的都可以称之为.net core
程序中的基石,在asp.net core框架中它们已经做了集成(使用通用主机将它们封装到了一起),直接看图: