微软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(我这里是世纪互联的)
https://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管理后台,其实它也是支持配置的导入导出的,无需担心;
源码
https://github.com/gebiWangshushu/Hei.Azure.Test
[参考]
https://docs.microsoft.com/en-us/azure/azure-app-configuration/overview
微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core的更多相关文章
- 微软Azure配置中心 App Configuration (二):Feature Flag 功能开关特性
写在前面 Web服务开发过程中我们经常有这样的需求: 某些功能我必须我修改了配置才启用,比如新用户注册送券等: 某个功能需到特定的时间才启用,过后就失效,比如春节活动等: 某些功能,我想先对10%的用 ...
- 微软Azure配置中心 App Configuration (三):配置的动态更新
写在前面 我在前文: <微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core>已经介绍了Asp.net Core怎么轻易的接入azure ...
- CAP带你轻松玩转Asp.Net Core消息队列
CAP是什么? CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案,是.Net Core Community中的第一个千星项目(目前已经1656 Star),具有轻量级.易使用.高性能 ...
- 006.Adding a controller to a ASP.NET Core MVC app with Visual Studio -- 【在asp.net core mvc 中添加一个控制器】
Adding a controller to a ASP.NET Core MVC app with Visual Studio 在asp.net core mvc 中添加一个控制器 2017-2-2 ...
- 微软Azure通知中心 (Azure Notification Hubs)
Azure Notification Hubs 提供简单的方法从后台(azure或者on-promise)去发送通知在不同的平台上面(iOS, Android, Windows, Kindle, Ba ...
- 【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
欢迎使用 Blazor!Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI. 共享使用 .NET 编写的 ...
- 3、带你一步一步学习ASP.NET Core中的配置之Configuration
如果你是刚接触ASP.NET Core的学习的话,你会注意到:在ASP.NET Core项目中,看不到.NET Fraemwork时代中的web.config文件和app.config文件了.那么你肯 ...
- 翻译 - ASP.NET Core 基本知识 - 配置(Configuration)
翻译自 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0 ASP ...
- asp.net core 将配置文件配置迁移到数据库(一)
asp.net core 将配置文件配置迁移到数据库(一) Intro asp.net core 配置默认是项目根目录下的 appsettings.json 文件,还有环境变量以及 command l ...
随机推荐
- 如何把你的 Android 使用得像 Linux
前言 最近在学校里上课,老师讲的东西又听不进去,手里只有一个手机和一个平板,之前还可以用 ssh 连接云服务器玩点东西,但是我是用的软件 Juice ssh 并不是很友好,退出到后台一段时间后竟然会自 ...
- unittest自动化测试框架核心要素以及应用
1. unittest核心要素 unittest介绍 测试框架,不仅仅用于单元测试 python自动的测试包 用法和django.test.TestCase类似 1.1.unitest介绍和核心要素 ...
- 基于SqlSugar的开发框架循序渐进介绍(7)-- 在文件上传模块中采用选项模式【Options】处理常规上传和FTP文件上传
在基于SqlSugar的开发框架的服务层中处理文件上传的时候,我们一般有两种处理方式,一种是常规的把文件存储在本地文件系统中,一种是通过FTP方式存储到指定的FTP服务器上.这种处理应该由程序进行配置 ...
- 入坑KeePass(三)安全设置完后后留存
1.文件> 数据库设置 > 安全 迭代次数改成500000 2.工具 > 选项 2.1.安全 2.2.策略 2.3.集成 2.4高级
- C语言学习之我见-strlen()字符串长度函数
strlen()函数,负责给出字符串的长度.注意是字符串的长度,不是字符数组的长度. (1)函数原型: size_t __cdecl strlen(const char *_Str); (2)头文件` ...
- CAP:多重注意力机制,有趣的细粒度分类方案 | AAAI 2021
论文提出细粒度分类解决方案CAP,通过上下文感知的注意力机制来帮助模型发现细微的特征变化.除了像素级别的注意力机制,还有区域级别的注意力机制以及局部特征编码方法,与以往的视觉方案很不同,值得一看 来源 ...
- java+mybatis实现一个简单的银行系统,实现存取款与账户查询
先创建数据库和表,使用的是MySQL数据库. create database mybatis; use mybatis; CREATE TABLE `accountdo` ( `id` varchar ...
- Git下载(快速快速快速下载!!)
在安装Git环境的时候,需要下载Git的安装包,但是官网的下载网速实在是太慢的(几十M的安装包,下载速度只有几十K) (所以可以在镜像中下载,速度超快) Git镜像下载链接-------------- ...
- Java 常用Set集合和常用Map集合
目录 常用Set集合 Set集合的特点 HashSet 创建对象 常用方法 遍历 常用Map集合 Map集合的概述 HashMap 创建对象 常用方法 遍历 HashMap的key去重原理 常用Set ...
- Mybatis SqlNode源码解析
1.ForEachSqlNode mybatis的foreach标签可以将列表.数组中的元素拼接起来,中间可以指定分隔符separator <select id="getByUserI ...