微軟Azure配置中心 App Configuration (一):輕鬆整合到Asp.Net Core
寫在前面
在日常開發中,我這邊比較熟悉的配置中心有,攜程Apollo,阿里Nacos(配置中心,服務治理一體)
之前文章:
Asp.Net Core與攜程阿波羅(Apollo)的第一次親密接觸
總體來說,Apollo和Nacos社群都比較活躍,可能是後發優勢或者我們技術選型的原因,我們生產選用的是Nacos,我個人也是優先推薦Nacos(熟悉點,整合方便)。不管怎麼說兩者都是比較不錯的配置中心;
今天我帶來了另一個配置中心:微軟Azure App Configuration,希望給大家帶來一點技術選型上的幫助;
本文先講講微軟Azure配置中心 App Configuration
在Asp.Net Core中的整合;
本文假設你有一點點微軟雲Azure的瞭解,能建立和使用基本的服務,能大概知道什麼是雲平臺;
沒有Azure的話找個雙幣信用卡去開一個免費的(免費12個月);
先在Azure雲管理介面建立一個AppConfiguration
[Azure 管理後臺]搜尋找到App Configuration(我這裡是世紀互聯的)
http://portal.azure.cn/#home )
點這個create
新增資源分組服務名稱
- 資源分組就是當前建立這個服務的所在的分組(沒有點選Create new)
- 服務名稱就是當前建立服務名稱
建立後稍等一會就可以用了;
新增一些測試配置
OK,目前服務建立成功,且寫入了一些測試配置,後面看看怎麼在Asp.net Core裡面用了;
在Asp.Net Core中整合
基本使用
1、先隨便建立一個WebApi服務(我這裡用net6)
勾選啟用swagger
2、安裝nuget
install-package Microsoft.Azure.AppConfiguration.AspNetCore
3、appsetting.json加入連線字串
"ConnectionStrings": { "AppConfig": "<your app connection string >" },
4、修改Program.cs
var connectionString = builder.Configuration.GetConnectionString("AppConfig"); builder.Host.ConfigureAppConfiguration((hostingContext, config) => { ////簡單使用只配置connection string config.AddAzureAppConfiguration(connectionString); });
5、使用
建立AzureConfigController
AzureConfigController
[Route("api/azure/config/[action]")] public class AzureConfigController : PassportApiController { private readonly ILogger _logger; private readonly IConfiguration _configuration; private readonly Settings _settings; public AzureConfigController(IConfiguration configuration, IAzureStorageApi azureStorageApi, IOptionsSnapshot<Settings> settings) { _configuration = configuration; _settings = settings.Value; } /// <summary> /// 讀取配置string /// </summary> /// <param name="key">The key.</param> /// <returns></returns> [HttpGet] public IActionResult Get(string key) { var result = _configuration[key]; return Success("get config success", result); } /// <summary> /// 讀取配置物件 /// </summary> /// <param name="key">The key.</param> /// <returns></returns> [HttpGet] public async Task<IActionResult> GetObject(string key) { var result = _configuration.GetSection(key).Get<AzureStorageConfig>(); return Success("get config success", result); } }
讀取string配置
讀取配置的整個物件
物件key這樣配置:
AzureStorageConfig1:ConnectionString
AzureStorageConfig1:ContainerName
...
ok,就這麼簡單~
根據環境變數讀取配置
我們一般Asp.Net Core Web應用程式是用環境變數去載入不同配置的,一般我們的配置這樣:
appsettings.json appsettings.<HostEnvironment>.json
同一個key的配置在不同Development和Production環境是可以不一樣的。
在Azure App Configuration ,引入一個 Label
的概念來實現;
修改整合程式碼:
builder.Host.ConfigureAppConfiguration((hostingContext, config) => { ////簡單使用只配置connection string //config.AddAzureAppConfiguration(connectionString); //配置不同功能 config.AddAzureAppConfiguration(options => { //啟用Label(多環境)支援 options.Connect(connectionString) .Select(KeyFilter.Any, LabelFilter.Null)//配置過濾器,讀取空Lable的配置 .Select(KeyFilter.Any, hostingContext.HostingEnvironment.EnvironmentName); //配置過濾器,只讀取某個環境的配置 }); });
管理後臺給一個Key設定環境變數:
這樣 TestKey1
只有在對應環境變數才有值, TestKey2
在所有環境變數都有值(空Label);
測試
這裡簡單測下Development環境的
總結
目前只是一個非常簡單的整合,可以看到整合是非常簡單的。後面我們再講下怎麼主動更新配置,怎樣啟用功能開關等其他高階特性;
另外,我們這裡測試都是手填配置到Azure管理後臺,其實它也是支援配置的匯入匯出的,無需擔心;
原始碼
http://github.com/gebiWangshushu/Hei.Azure.Test
[參考]
http://docs.microsoft.com/en-us/azure/azure-app-configuration/overview
- 記一次批量更新整型型別的列 → 探究 UPDATE 的使用細節
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 執行緒池底層原理詳解與原始碼分析
- 30分鐘掌握 Webpack
- 線性迴歸大結局(嶺(Ridge)、 Lasso迴歸原理、公式推導),你想要的這裡都有
- Django 之路由層
- 【前端必會】webpack loader 到底是什麼
- day42-反射01
- 中心化決議管理——雲端分析
- HashMap底層原理及jdk1.8原始碼解讀
- 詳解JS中 call 方法的實現
- 列印 Logger 日誌時,需不需要再封裝一下工具類?
- 初識設計模式 - 代理模式
- 設計模式---享元模式
- 密碼學奇妙之旅、01 CFB密文反饋模式、AES標準、Golang程式碼
- [ML從入門到入門] 支援向量機:從SVM的推導過程到SMO的收斂性討論
- 從應用訪問Pod元資料-DownwardApi的應用
- Springboot之 Mybatis 多資料來源實現
- Java 泛型程式設計
- CAS核心思想、底層實現