4.2 多级可换源的配置(上)

总所周知,配置信息是应用程序可变化的设置信息,存放于配置文件中,开发人员可以使用配置文件来更改应用的设置。.net core提供了多种配置方式,例如json文件配置,注册表配置、环境配置,xml文件配置等。其中大家常用的是一个json配置文件方式,即每个应用都有一个appsettings.json配置文件,存放所有的配置信息。

这里,我还有个需要说明的地方,就是当前系统的配置过于庞大了,我建议尽量采用约定方式,就是约定优于配置。例如所有的MVC Controller都以Controller为结尾就是一种约定优于配置的例子。

但这种配置方式存在重复配置问题。例如有三个应用项目访问某数据库,该数据库的数据库连接串将在这三个应用项目的配置文件中分别存放,当数据库的服务器地址、用户、口令等变化时,均需要在这三个项目中修改,随着系统的增多,极易造成漏改的情况。同样的,在云环境下,应用项目可以部署动态分配、扩展的计算资源中(多台虚拟服务器),修改一个配置项就需要同时修改各个服务器中的配置文件,也一样的容易造成漏改的情况。

为了解决这个问题,我们采用了多级配置文件方式,将公用部分配置信息提取出来,存放到一个独立的公共配置文件中,这三个项目均访问公共配置文件以获取数据库连接串。公共配置文件方式可以解决目前存在的问题。然而,在实际运行过程中又发现了新的问题,就是运行过程中发现了程序异常,技术人员经常需要查看配置信息,或者需要修改配置,而客户安全要求比较高(对于客户技术人员的能力就不吐槽了),根本不允许直接访问服务器,排查问题非常困难。

因此,我们最终采用数据库方式存放配置信息。在数据库中增加一个配置信息表,统一存放公共的配置信息,并增加相应的管理界面进行维护。各系统均从同一数据库中获取公共配置信息,完美的解决了重复性配置问题。

首先是公用的配置基类: