微软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 ...
随机推荐
- 【Java并发编程】Synchronized关键字实现原理
想必在面试中经常会被问到Synchronized关键字,它有什么特性,原理什么 它的主要特性是同步锁.非公平锁.阻塞锁.可以保证线程安全(可见性.原子性.有序性) JDK1.6之后对Synchroni ...
- 【SpringBoot】快速入门
博客主页:准Java全栈开发工程师 00年出生,即将进入职场闯荡,目标赚钱,可能会有人觉得我格局小.觉得俗,但不得不承认这个世界已经不再是以一条线来分割的平面,而是围绕财富旋转的球面,成为有钱人不是为 ...
- Linux命令格式、终端类型和获取帮助的方法
Linux用户类型 Root用户:超级管理员,权限很大 普通用户:权限有限 终端 terminal 终端类型 物理终端:鼠标.键盘.显示器 虚拟终端:软件模拟出来的终端 控制台终端: /dev/con ...
- Python实现12种概率分布(附代码)
今天给大家带来的这篇文章是关于机器学习的,机器学习有其独特的数学基础,我们用微积分来处理变化无限小的函数,并计算它们的变化:我们使用线性代数来处理计算过程:我们还用概率论与统计学建模不确定性. 在这其 ...
- 聊聊Netty那些事儿之从内核角度看IO模型
从今天开始我们来聊聊Netty的那些事儿,我们都知道Netty是一个高性能异步事件驱动的网络框架. 它的设计异常优雅简洁,扩展性高,稳定性强.拥有非常详细完整的用户文档. 同时内置了很多非常有用的模块 ...
- halcon 基础总结(一)裁切图片并旋转图像
第一步当然是读取图像了:read_image (Image, 'C:/Users/HJ/Desktop/test_image/b.jpg') 第二步:二值化.二值化.因为我这里的物体是黑色的, ...
- [JLOI2015]装备购买 题解 / 实数线性基学习笔记
题目链接 看这道题之前,以为线性基只是支持异或的操作... 那么,我认为这道题体现出了线性基的本质: 就是说如何用最小的一个集合去表示所有出现的装备. 我们假设已经会使用线性基了,那么对于这道题该怎么 ...
- 【ArcGIS教程】专题图制作-人口密度分布图——人口密度分析
本篇以湖北省为例,制作人口密度分布图:这里所使用的为湖北省的省.市.县三个级别的行政区划矢量数据,以及居民点数据,进而进行密度分析. 示例数据来源于地理遥感生态网,网站地址www.gisrs.c ...
- 岭回归和LASSO
0.对于正则罚项的理解 1.岭回归(L2 ridge regression ) 是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信 ...
- SHT11和SHT21传感器
1.传感器概述 SHT11和SHT21为瑞士Sensirion公司生产,精度和测量范围较广,但价格较高.SHT11和SHT21是具有IIC总线接口的单片全校准数字式相对湿度和温度传感器.该传感器采用独 ...