AgileConfig-如何使用AgileConfig.Client读取配置
前面的文章都是介紹AgileConfig服務端已經控制臺是如何工作、如何使用的,其實AgileConfig還有一個重要的組成部分:AgileConfig.Client。
AgileConfig.Client是使用C#編寫的一個類庫,只有使用它才能跟AgileConfig的服務端配合工作實現實時推送配置信息等功能。
最近有幾個同學問我如何集成Client,如何使用Client,看來光是Readme上的示例還是不夠的,有必要比較詳細的介紹下如何使用AgileConfig.Client。
下面通過幾個示例來演示下如何AgileConfig.Client如何在mvc,控制臺,wpf等程序上來讀取配置:
asp.net core mvc下讀取配置
mvc項目應該是目前使用最廣泛的項目,同樣它與AgileConfig.Client的集成最深入。下面來看看如何在mvc項目下使用AgileConfig.Client。
安裝AgileConfig.Client
Install-Package AgileConfig.Client當然第一步是使用nuget命令安裝最新版的Client庫。
修改appsettings.json
"AgileConfig": {"appId": "test_app","secret": "","nodes": "http://agileconfig.xbaby.xyz:5000"}AgileConfig.Client連接服務端需要一點必要的信息,我們把這些信息配置在appsettings.json文件里。節點的名稱叫“AgileConfig”,里面配置了:
appId 應用id
secret 應用密鑰,沒有的話留空
nodes 節點地址,如果有多個則使用英文逗號(,)分隔
AddAgileConfig
修改program.cs文件:
public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((context, config) =>{//注入AgileConfig Configuration Providerconfig.AddAgileConfig();}).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();});通過AddAgileConfig擴展方法注入AgileConfigProvider。AgileConfigProvider才是跟配置系統打交道的組件。如果你想要使用Client的實例進行讀取配置,也可以手動實例化一個client然后通過AddAglieConfig的另外一個重載注入進去。
Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((context, config) =>{//注入AgileConfig Configuration Providervar client = new ConfigClient();config.AddAgileConfig(client);})讀取配置
通過以上的設置,其實后面的配置讀取跟使用appsettings.json沒什么區別了。
public HomeController(ILogger<HomeController> logger, IConfiguration configuration, ){_logger = logger;_IConfiguration = configuration;}/// <summary>/// 使用IConfiguration讀取配置/// </summary>/// <returns></returns>public IActionResult ByIConfiguration(){var userId = _IConfiguration["userId"];var dbConn = _IConfiguration["db:connection"];ViewBag.userId = userId;ViewBag.dbConn = dbConn;return View("Configuration");}控制臺下讀取配置
當然了從本質上來說控制臺項目跟mvc項目沒啥區別。同樣可以引入ConfigurationBuilder來注入ConfigClient。但是一般我們使用控制臺可能是寫個小工具,不用搞的這么復雜,直接new一個ConfigClient的實例是最直接的方法。
static void Main(string[] args){Console.WriteLine("Hello World!");var appId = "test_app";var secret = "";var nodes = "http://agileconfig.xbaby.xyz:5000";//使用有參構造函數,手動傳入appid等信息var client = new ConfigClient(appId, secret, nodes);Task.Run(async () =>{while (true){await Task.Delay(5000);foreach (string key in client.Data.Keys){var val = client[key];Console.WriteLine("{0} : {1}", key, val);}}});client.ConnectAsync();//如果不是mvc項目,不使用AddAgileConfig方法的話,需要手動調用ConnectAsync方法來跟服務器建立連接Console.WriteLine("Test started .");Console.Read();需要注意的一個地方是手工new ConfigClient是需要自己調用ConnectAsync方法進行連接服務器的。
WPF程序讀取配置
跟控制臺程序一樣,WPF同樣首選直接new一個ConfigClient實例比較簡單易用。
public partial class App : Application{public static IConfigClient ConfigClient { get; private set; }private void Application_Startup(object sender, StartupEventArgs e){//跟控制臺項目一樣,appid等信息取決于你如何獲取。你可以寫死,可以從配置文件讀取,可以從別的web service讀取。var appId = "test_app";var secret = "";var nodes = "http://agileconfig.xbaby.xyz:5000";ConfigClient = new ConfigClient(appId, secret, nodes);ConfigClient.ConnectAsync().GetAwaiter();}}實例化的位置可以選在App文件的Application_Startup方法內。并且把實例直接掛到App類的靜態變量上。
注意:Application_Startup方法是同步方法。調用ConnectAsync之后需要調用GetAwaiter()方法等待連接成功。
在窗體程序內使用配置
private void Window_Loaded(object sender, RoutedEventArgs e){this.tbx1.Text = App.ConfigClient["userId"];this.tbx2.Text = App.ConfigClient["connection"];}我們通過直接訪問App類上的ConfigClient對象讀取配置信息。
AgileConfig.Client公共方法
下面列舉下Client常用的幾個公共方法
| string this[string key] | 直接通過鍵索引值 |
| string Get(string key) | 根據鍵獲取值 |
| List?GetGroup(string groupName) | 根據組名獲取配置列表 |
| Task?ConnectAsync() | 連接至服務器 |
| bool Load() | 手工從服務器拉取一次配置到客戶端 |
| void LoadConfigs(List?configs) | 手工把配置項加載到客戶端 |
| event Action?ConfigChanged | 這是一個事件,當某個配置值發生變化的時候觸發 |
gihub地址:
AgileConfig
AgileConfig.Client
AgileConfig MVCSample
AgileConfig WPFSample
AgileConfig ConsoleSample
求星星!!!
相關文章:
造輪子-AgileConfig一個基于.NetCore開發的輕量級配置中心
AgileConfig-輕量級配置中心 1.1.0 發布,支持應用間配置繼承
總結
以上是生活随笔為你收集整理的AgileConfig-如何使用AgileConfig.Client读取配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【gRPC】 在.Net core中使用
- 下一篇: 轻量级 Kubernetes K3s -