本节所谓的“配置同步”主要体现在两个方面:其一,如何监控配置源并在其变化的时候自动加载其数据,其目的是让应用中通过Configuration对象承载的配置与配置源的数据同步;其二、当Configuration对象承载的配置放生变换的时候如何向应用程序发送通知,最终让应用程序使用最新的配置。
配置模型提供了三个原生ConfigurationProvider(JsonConfigrationProvider、XmlConfigurationProvider和IniConfigurationProvider)使我们可以将三种格式(JSON、XML和INI)的文件作为配置原始数据的来源,所以针对物理文件的配置同步是配置同步机制的一个主要的应用领域。在上面演示的实例中,基于物理文件的同步是通过调用ConfigurationRoot的扩展方法ReloadOnChanged来实现的。
这个扩展方法定义在NuGet包“Microsoft.Extensions.Configuration.FileProviderExtensions”之中,除了在我们演示的实例中使用的那个方法之外,这个ReloadOnChanged方法还具有如下两个额外的重载。对于这三个ReloadOnChanged方法重载来说,最终的实现均落在第三个重载上。至于最本质的物理文件监控的功能则由一个名为FileProvider的对象负责。
class FileProviderExtensions
2: {
static IConfigurationRoot ReloadOnChanged(
string filename);
5:
static IConfigurationRoot ReloadOnChanged(
string filename);
8:
this IConfigurationRoot config,
string filename);
11: }