日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AgileConfig-如何使用AgileConfig.Client读取配置

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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读取配置的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。