前面几节,我们学习了配置框架的几种配置方式,本节,我们以文件提供程序为例来说一下,配置变更的操作。
配置文件的访问级别较低,相对比较便利,我们可能需要通过更改配置文件来让某些配置生效,而不需要重启应用程序。那么,此时,就需要用到配置框架的配置变更监听能力。
核心接口
- IChangeToken
配置框架提供了IChangeToken接口,可用于配置变更监听
IChangeToken changeToken = configurationRoot.GetReloadToken();
同时,注册其回调方法
changeToken.RegisterChangeCallback(state => { Console.WriteLine($"key1:{configurationRoot["key1"]}"); Console.WriteLine($"key2:{configurationRoot["key2"]}"); }, configurationRoot);
多次变更获取
但是,这种方法只能获取一次变更,也就是说,第二次更改的话不能再获取,因此,微软为我们提供了一个另外的方法
ChangeToken.OnChange()
通过该方法,只要有变更即可获取,方法有2个参数,一个是变更的获取,一个是变更的回调方法,和上述类似
ChangeToken.OnChange(() => configurationRoot.GetReloadToken(), () => { Console.WriteLine($"key1:{configurationRoot["key1"]}"); Console.WriteLine($"key2:{configurationRoot["key2"]}"); });
这样的话,我们即实现了配置的热更新能力。
这里,我们使用的该种方式只适用于文件提供程序,内存配置、命令行配置、环境变量配置可以通过自定义的监听逻辑来实现,具体过程与上述类似,这里就不详说了,你可以自己试着写一下。
源码可访问
https://github.com/IronMarmot/Samples/tree/master/CoreSamples