.NET6新东西--ConfigurationManager
.NET6于2021年11月9日凌晨0点30分与VS2022一同发布,从今天开始我将带领大家来看一下.NET6新引入的内容。今天我们先来看一下.NET6中的ConfigurationManager。 这里所说的ConfigurationManager并不是.NET Framework中的静态类ConfigurationManager,而是.NET6为Minimal API引入的一个新内容,它位于Microsoft.Extensions.Configuration中。简单的说.NET6中的ConfigurationManager就是.NET Framework 中 ConfigurationBuilder和ConfigurationRoot的结合体,我们在ConfigurationManager的源代码中就可以看出来:
///
/// Configuration is mutable configuration object. It is both an and an .
/// As sources are added, it updates its current view of configuration. Once Build is called, configuration is frozen.
///
public sealed class ConfigurationManager : IConfigurationBuilder, IConfigurationRoot, IDisposable
{
private readonly ConfigurationSources _sources;
private readonly ConfigurationBuilderProperties _properties;
private readonly object _providerLock = new();
private readonly List<IConfigurationProvider> _providers = new();
private readonly List<IDisposable> _changeTokenRegistrations = new();
private ConfigurationReloadToken _changeToken = new();
//more code
//....
// Don't rebuild and reload all providers in the common case when a source is simply added to the IList.
private void AddSource(IConfigurationSource source)
{
lock (_providerLock)
{
var provider = source.Build(this);
_providers.Add(provider);
provider.Load();
_changeTokenRegistrations.Add(ChangeToken.OnChange(() => provider.GetReloadToken(), () => RaiseChanged()));
}
RaiseChanged();
}
//more code
//.....
}
从上面的源码中我们可以看出来ConfigurationManager在添加IConfigurationSource的时候会注册IConfigurationProvider。每添加一个新的配置源时都会去创建一个IConfigurationProvider,并去加载配置数据和注册配置更新事件。因此才能在添加了source之后拿到Configuration中的配置。 就目前来说,ConfigurationManager主要用在Minimal API中,但是我们也可以在其他类型的项目中直接使用。而且.NET6为我们做了兼容,即使在.NET6中使用原来的IConfigurationBuilder也没有问题。但是这里有个问题,虽说使用ConfigurationManager会更加简单(对于编写代码来说),不用像以前那样先声明一个IConfigurationBuilder对象,并注册好后再创建一个IConfiguration对象,但性能会差一些,注册的配置源越多就越明显。因为每次ConfigurationManager注册配置源都会区创建并注册IConfigurationProvider,但以前的方式则是在最后Build的时候才去创建。这里建议根据实际项目情况使用。
相关文章
- 在Linux系统下玩《炉石传说:魔兽英雄传》
- 数据挖掘与数据化运营实战. 1.2 数据化运营的主要内容
- 如何在Linux上提高文本的搜索效率
- 数据挖掘与数据化运营实战. 1.3 为什么要数据化运营
- Google账户两步验证是如何工作的?
- 数据挖掘与数据化运营实战. 1.4 数据化运营的必要条件
- 数据挖掘与数据化运营实战. 1.5 数据化运营的新现象与新发展
- 用 Google Authenticator 加强 VPS 及 WordPress 甚至桌面电脑的安全性
- Linux中的more命令-逐页显示长文本文件
- 互联网企业安全高级指南1.1切入“企业安全”的视角
- 数据挖掘与数据化运营实战. 3.7 服务保障模型
- 互联网安全高级开发指南导读
- 数据挖掘与数据化运营实战. 3.11 商品推荐模型
- 数据挖掘与数据化运营实战. 3.12 数据产品
- 数据挖掘与数据化运营实战. 3.13 决策支持
- 10个 Linux/Unix下 Bash 和 KSH shell 的作业控制实例
- Linux 移动或重命名文件/目录-mv 的10个实用例子
- 互联网企业安全高级指南1.3 互联网企业和传统企业在安全建设中的区别
- 互联网企业安全高级指南1.2 企业安全包括哪些事情
- 互联网企业安全高级指南1.4 不同规模企业的安全管理