Configuration Extensions - 簡化配置,讓你配置支援變數

KAnts發表於2017-09-21

在開發“RabbitCloud”專案時,使用配置檔案發現會有很多重複值,所以我基於”Microsoft.Extensions.Configuration”寫了一個擴充套件庫,來豐富對配置的支援。

實際案例——“RabbitCloud”

之前,我是這樣的

image

因為公司ip和家裡機器的ip不一致,所以經常需要切換配置檔案。

但根據這份配置檔案,我更改健康檢查的主機和埠就意味著我得改三個地方,然而一般情況下這三個地方都是一致的,如果這時候我能定義一個變數“ServiceHost”,然後這三個地方使用這個變數就好了。

現在,我是這樣的

image

如果有變更需要只需改動幾個變數值就可以了,不需要在滿屏的配置檔案裡面去檢視、搜尋替換了。

特性

支援的配置源

  1. JSON
  2. XML
  3. Consul
  4. Ini
  5. Yaml
  6. EnvironmentVariables
  7. CommandLine
  8. SQL Server/MySQL…
  9. ……

寫了這麼多其實是廢話。。只不過是為了列出一些常用的配置源。

因為這個擴充套件元件是基於“Microsoft.Extensions.Configuration”框架在內部進行了一次二次渲染而已,所以只要是適配了“Microsoft.Extensions.Configuration”的配置源都可以進行支援。

配置資訊變更重新渲染

當配置檔案變更,進行Reload時,模板會自動進行重新渲染,不用擔心渲染之後配置監控不可用的問題。

Demo

配置檔案如下:

image

程式碼如下:

image

效果1(dotnet run):

image

效果2(dotnet run --ServiceHost=localhost):

image

效果3(dotnet run --ServiceHost=localhost --ServicePort=5000):

image

地址

原始碼:https://github.com/RabbitTeam/Rabbit-Extensions

nuget:https://www.nuget.org/packages/Rabbit.Extensions.Configuration

寫在最後

RabbitCloud核心部分已經構建的差不多了,近期會寫一篇文章來介紹說明。先放一些圖。

L(VZOBRVQ6{SSM22B~A9P8O

image

image

.NET技術棧討論QQ群:384413261(點選加入 .NET Group

相關文章