4.2 多級可換源的配置(上)

總所周知,配置信息是應(yīng)用程序可變化的設(shè)置信息,存放于配置文件中,開發(fā)人員可以使用配置文件來更改應(yīng)用的設(shè)置。.net core提供了多種配置方式,例如json文件配置,注冊表配置、環(huán)境配置,xml文件配置等。其中大家常用的是一個json配置文件方式,即每個應(yīng)用都有一個appsettings.json配置文件,存放所有的配置信息。

這里,我還有個需要說明的地方,就是當前系統(tǒng)的配置過于龐大了,我建議盡量采用約定方式,就是約定優(yōu)于配置。例如所有的MVC Controller都以Controller為結(jié)尾就是一種約定優(yōu)于配置的例子。

但這種配置方式存在重復(fù)配置問題。例如有三個應(yīng)用項目訪問某數(shù)據(jù)庫,該數(shù)據(jù)庫的數(shù)據(jù)庫連接串將在這三個應(yīng)用項目的配置文件中分別存放,當數(shù)據(jù)庫的服務(wù)器地址、用戶、口令等變化時,均需要在這三個項目中修改,隨著系統(tǒng)的增多,極易造成漏改的情況。同樣的,在云環(huán)境下,應(yīng)用項目可以部署動態(tài)分配、擴展的計算資源中(多臺虛擬服務(wù)器),修改一個配置項就需要同時修改各個服務(wù)器中的配置文件,也一樣的容易造成漏改的情況。

為了解決這個問題,我們采用了多級配置文件方式,將公用部分配置信息提取出來,存放到一個獨立的公共配置文件中,這三個項目均訪問公共配置文件以獲取數(shù)據(jù)庫連接串。公共配置文件方式可以解決目前存在的問題。然而,在實際運行過程中又發(fā)現(xiàn)了新的問題,就是運行過程中發(fā)現(xiàn)了程序異常,技術(shù)人員經(jīng)常需要查看配置信息,或者需要修改配置,而客戶安全要求比較高(對于客戶技術(shù)人員的能力就不吐槽了),根本不允許直接訪問服務(wù)器,排查問題非常困難。

因此,我們最終采用數(shù)據(jù)庫方式存放配置信息。在數(shù)據(jù)庫中增加一個配置信息表,統(tǒng)一存放公共的配置信息,并增加相應(yīng)的管理界面進行維護。各系統(tǒng)均從同一數(shù)據(jù)庫中獲取公共配置信息,完美的解決了重復(fù)性配置問題。

首先是公用的配置基類: