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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

在.NET Core中用最原生的方式读取Nacos的配置

發布時間:2023/12/4 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在.NET Core中用最原生的方式读取Nacos的配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

之前老黃寫過一篇《ASP.NET Core結合Nacos來完成配置管理和服務發現》簡單介紹了如何讓.NET Core程序接入Nacos,之前的SDK里面更多的是對Nacos的Open API進行了封裝以及對服務注冊和發現的封裝。

配置這一塊當時并沒有過多的處理,用起來有時感覺不會特別順手,所以將它和.NET Core的配置結合起來了,讓它用起來更簡便。

怎么個簡便法呢?

可以說,除了多添加一下provider,其他的操作都是和最原始的一模一樣,你想用IConfiguration就用IConfiguration,想用IOptions系列就用IOptions系列。

更容易做到無縫遷移!

當然,這個SDK出自老黃的手,難免會有一些坑和bug,這個就請各位多多包涵!!

前提條件

  • 啟動Nacos Server

  • 最簡單的方式,用docker啟動一個單機版的。

    docker-compose -f example/standalone-mysql-8.yaml up
  • 創建一個.NET Core項目,并安裝相應nuget包

  • 這里將用ASP.NET Core Web Api做示例,同時要安裝下面的nuget包

    dotnet add package nacos-sdk-csharp-unofficial.Extensions.Configuration --version 0.2.5

    更直接點,直接修改csproj

    <ItemGroup><PackageReference Include="nacos-sdk-csharp-unofficial.Extensions.Configuration" Version="0.2.5" /> </ItemGroup>

    進行配置

    打開Program.cs,在CreateHostBuilder加入Nacos的provider配置,都是Nacos的一些基礎配置。

    public?static?IHostBuilder?CreateHostBuilder(string[]?args)?=>Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((context,?builder)?=>{var?c?=?builder.Build();var?dataId?=?c.GetValue<string>("nacosconfig:DataId");var?group?=?c.GetValue<string>("nacosconfig:Group");var?tenant?=?c.GetValue<string>("nacosconfig:Tenant");var?optional?=?c.GetValue<bool>("nacosconfig:Optional");var?serverAddresses?=?c.GetSection("nacosconfig:ServerAddresses").Get<List<string>>();builder.AddNacosConfiguration(x?=>{x.DataId?=?dataId;x.Group?=?group;x.Tenant?=?tenant;x.Optional?=?optional;x.ServerAddresses?=?serverAddresses;});}).ConfigureWebHostDefaults(webBuilder?=>{webBuilder.UseStartup<Startup>();});

    同樣的,我們還要修改appsettings.json,把Nacos的配置寫進去,主要是用來區分不同環境的配置來源。

    {"Logging":?{"LogLevel":?{"Default":?"Warning","Microsoft":?"Warning","Microsoft.Hosting.Lifetime"?:"Information"}??},"nacosconfig":{"Optional":?false,"DataId":?"msconfigapp","Group":?"","Tenant":?"ca31c37e-478c-46ed-b7ea-d0ebaa080221","ServerAddresses":?["localhost:8848"]} }

    好了,到這里,用于配置Nacos相關的內容就結束了。接下來,要做的就是在nacos控制臺進行配置的維護。

    配置使用

    新建一個配置

    添加一個對應的實體類

    public?class?AppSettings {public?string?Str?{?get;?set;?}public?int?Num?{?get;?set;?}public?List<int>?Arr?{?get;?set;?}public?SubObj?SubObj?{?get;?set;?} }public?class?SubObj {public?string?a?{?get;?set;?} }

    因為要驗證IOptions模式,所以要在Startup中加點代碼

    public?void?ConfigureServices(IServiceCollection?services) {services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));services.AddControllers(); }

    下面就是真正的使用了!

    [ApiController] [Route("api/[controller]")] public?class?ConfigController?:?ControllerBase {private?readonly?IConfiguration?_configuration;private?readonly?AppSettings?_settings;private?readonly?AppSettings?_sSettings;private?readonly?AppSettings?_mSettings;public?ConfigController(IConfiguration?configuration,IOptions<AppSettings>?options,IOptionsSnapshot<AppSettings>?sOptions,IOptionsMonitor<AppSettings>?_mOptions){_configuration?=?configuration;_settings?=?options.Value;_sSettings?=?sOptions.Value;_mSettings?=?_mOptions.CurrentValue;}[HttpGet]public?string?Get(){string?id?=?Guid.NewGuid().ToString("N");Console.WriteLine($"==============?begin?{id}?=====================");var?conn?=?_configuration.GetConnectionString("Default");Console.WriteLine($"{id}?conn?=?{conn}");var?version?=?_configuration["version"];Console.WriteLine($"{id}?version?=?{version}");var?str1?=?Newtonsoft.Json.JsonConvert.SerializeObject(_settings);Console.WriteLine($"{id}?IOptions?=?{str1}");var?str2?=?Newtonsoft.Json.JsonConvert.SerializeObject(_sSettings);Console.WriteLine($"{id}?IOptionsSnapshot?=?{str2}");var?str3?=?Newtonsoft.Json.JsonConvert.SerializeObject(_mSettings);Console.WriteLine($"{id}?IOptionsMonitor?=?{str3}");Console.WriteLine($"===============================================");return?"ok";} }

    從上面的代碼,看上去應該熟悉的不能再熟悉了吧!這些配置的用法,就是.NET Core里面提供的最原始的,原汁原味。

    啟動訪問這個接口,可以看到下面的輸出。

    在控制臺修改這個配置。

    再次訪問,可以發現,除了IOptions之外,都讀取到了新的配置。

    之所以IOptions沒有獲取到最新的配置,那是因為它的默認實現不會進行更新操作,也就是從啟動到結束,它都是不會變的。

    在有配置變更的情景,請盡可能不要用IOptions,用IOptionsSnapshot和IOptionsMonitor來替代!

    總結

    這里介紹了如何讓.NET Core更容易對接Nacos配置的方法,希望對各位有所幫助。

    如果您對 nacos-sdk-charp 這個項目感興趣,也歡迎一起開發和維護這個項目。

    總結

    以上是生活随笔為你收集整理的在.NET Core中用最原生的方式读取Nacos的配置的全部內容,希望文章能夠幫你解決所遇到的問題。

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