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

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

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

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

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

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

首先是公用的配置基類: