• 微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core


    What is Azure App Configuration? - DevOpsSchool.com

    写在前面#

    在日常开发中,我这边比较熟悉的配置中心有,携程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(我这里是世纪互联的)

    https://portal.azure.cn/#home)

    1658678405153

    点这个create

    1658678449949

    添加资源分组服务名称

    1658678571794

    1. 资源分组就是当前创建这个服务的所在的分组(没有点击Create new)
    2. 服务名称就是当前创建服务名称

    创建后稍等一会就可以用了;

    新增一些测试配置

    1658678882520

    OK,目前服务创建成功,且写入了一些测试配置,后面看看怎么在Asp.net Core里面用了;

    在Asp.Net Core中集成#

    基本使用#

    1、先随便创建一个WebApi服务(我这里用net6)

    勾选启用swagger

    2、安装nuget

    install-package Microsoft.Azure.AppConfiguration.AspNetCore
    

    3、appsetting.json加入连接字符串

      "ConnectionStrings": {
        "AppConfig": ""
      },
    

    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)
            {
                _configuration = configuration;
                _settings = settings.Value;
            }
    
            /// 
            /// 读取配置string
            /// 
            /// The key.
            /// 
            [HttpGet]
            public IActionResult Get(string key)
            {
                var result = _configuration[key];
    
                return Success("get config success", result);
            }
    
            /// 
            /// 读取配置对象
            /// 
            /// The key.
            /// 
            [HttpGet]
            public async Task GetObject(string key)
            {
                var result = _configuration.GetSection(key).Get();
    
                return Success("get config success", result);
            }
        }
    

    读取string配置

    1658682672067

    读取配置的整个对象

    对象key这样配置:

    AzureStorageConfig1:ConnectionString

    AzureStorageConfig1:ContainerName

    ...

    1658682780333

    ok,就这么简单~

    根据环境变量读取配置#

    我们一般Asp.Net Core Web应用程序是用环境变量去加载不同配置的,一般我们的配置这样:

    appsettings.json
    appsettings..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设置环境变量:

    1658765273187

    这样TestKey1只有在对应环境变量才有值,TestKey2在所有环境变量都有值(空Label);

    测试

    这里简单测下Development环境的

    1658765390285

    总结#

    目前只是一个非常简单的集成,可以看到集成是非常简单的。后面我们再讲下怎么主动更新配置,怎样启用功能开关等其他高级特性;

    另外,我们这里测试都是手填配置到Azure管理后台,其实它也是支持配置的导入导出的,无需担心;

    源码#

    https://github.com/gebiWangshushu/Hei.Azure.Test

    [参考]#

    https://docs.microsoft.com/en-us/azure/azure-app-configuration/overview

    👇专注于后端和架构,欢迎扫码关注我的公众号👇
  • 相关阅读:
    阿里内部强推的SpringScurity实战笔记,与君共分享
    Java开发学习(十八)----AOP通知获取数据(参数、返回值、异常)
    使用pdfplumber提取pdf中的文字
    candence画环形贴片焊盘
    开启Clash和系统代理后Chrome无法打开网页但Edge正常
    Minecraft 1.20.x Forge模组开发 06.建筑生成
    【shell】linux通过complete命令完成使用tab键自动补全
    Makefile 学习二:命令和变量
    RKMPP库快速上手--(二)MPP关键配置
    类基本用法
  • 原文地址:https://www.cnblogs.com/xiaxiaolu/p/16611541.html