在.NET Core中用最原生的方式讀取Nacos的配置
阿新 • • 發佈:2020-04-26
## 背景
之前老黃寫過一篇《ASP.NET Core結合Nacos來完成配置管理和服務發現》簡單介紹瞭如何讓.NET Core程式接入Nacos,之前的SDK裡面更多的是對Nacos的Open API進行了封裝以及對服務註冊和發現的封裝。
配置這一塊當時並沒有過多的處理,用起來有時感覺不會特別順手,所以將它和.NET Core的配置結合起來了,讓它用起來更簡便。
怎麼個簡便法呢?
可以說,除了多新增一下provider,其他的操作都是和最原始的一模一樣,你想用`IConfiguration`就用`IConfiguration`,想用`IOptions`系列就用`IOptions`系列。
更容易做到無縫遷移!
當然,這個SDK出自老黃的手,難免會有一些坑和bug,這個就請各位多多包涵!!
## 前提條件
1. 啟動Nacos Server
最簡單的方式,用docker啟動一個單機版的。
```
docker-compose -f example/standalone-mysql-8.yaml up
```
2. 建立一個.NET Core專案,並安裝相應nuget包
這裡將用ASP.NET Core Web Api做示例,同時要安裝下面的nuget包
```
dotnet add package nacos-sdk-csharp-unofficial.Extensions.Configuration --version 0.2.6
```
更直接點,直接修改csproj
```
```
## 進行配置
開啟`Program.cs`,在`CreateHostBuilder`加入Nacos的provider配置,都是Nacos的一些基礎配置。
```cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, builder) =>
{
var c = builder.Build();
var dataId = c.GetValue("nacosconfig:DataId");
var group = c.GetValue("nacosconfig:Group");
var tenant = c.GetValue("nacosconfig:Tenant");
var optional = c.GetValue("nacosconfig:Optional");
var serverAddresses = c.GetSection("nacosconfig:ServerAddresses").Get
- >();
// 0.2.6版本之前,只支援這種方式
builder.AddNacosConfiguration(x =>
{
x.DataId = dataId;
x.Group = group;
x.Tenant = tenant;
x.Optional = optional;
x.ServerAddresses = serverAddresses;
});
//// 0.2.6版本之後可以從配置檔案讀取Nacos的基本配置
//builder.AddNacosConfiguration(c.GetSection("nacosconfig"));
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup