写在前面

在日常开发中,我这边比较熟悉的配置中心有,携程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

添加资源分组服务名称

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

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

新增一些测试配置

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的更多相关文章

  1. 微软Azure配置中心 App Configuration (二):Feature Flag 功能开关特性

    写在前面 Web服务开发过程中我们经常有这样的需求: 某些功能我必须我修改了配置才启用,比如新用户注册送券等: 某个功能需到特定的时间才启用,过后就失效,比如春节活动等: 某些功能,我想先对10%的用 ...

  2. 微软Azure配置中心 App Configuration (三):配置的动态更新

    写在前面 我在前文: <微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core>已经介绍了Asp.net Core怎么轻易的接入azure ...

  3. CAP带你轻松玩转Asp.Net Core消息队列

    CAP是什么? CAP是由我们园子里的杨晓东大神开发出来的一套分布式事务的决绝方案,是.Net Core Community中的第一个千星项目(目前已经1656 Star),具有轻量级.易使用.高性能 ...

  4. 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 ...

  5. 微软Azure通知中心 (Azure Notification Hubs)

    Azure Notification Hubs 提供简单的方法从后台(azure或者on-promise)去发送通知在不同的平台上面(iOS, Android, Windows, Kindle, Ba ...

  6. 【Azure App Service For Container】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务

    欢迎使用 Blazor!Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI. 共享使用 .NET 编写的 ...

  7. 3、带你一步一步学习ASP.NET Core中的配置之Configuration

    如果你是刚接触ASP.NET Core的学习的话,你会注意到:在ASP.NET Core项目中,看不到.NET Fraemwork时代中的web.config文件和app.config文件了.那么你肯 ...

  8. 翻译 - ASP.NET Core 基本知识 - 配置(Configuration)

    翻译自 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0 ASP ...

  9. asp.net core 将配置文件配置迁移到数据库(一)

    asp.net core 将配置文件配置迁移到数据库(一) Intro asp.net core 配置默认是项目根目录下的 appsettings.json 文件,还有环境变量以及 command l ...

随机推荐

  1. numpy中shape的部分解释

    转载自:https://blog.csdn.net/qq_28618765/article/details/78081959和https://www.jianshu.com/p/e083512e4f4 ...

  2. C# 将XML转为PDF

    XML,即可扩展标记语言文,件是一种标准的文本文件,它使用特定的标记来描述文档的结构以及其他特性.通过将 XML 文档转换为 PDF格式,能够满足更多程序.设备对文件预览.读取或展示的需要,也更便于文 ...

  3. Vscode标题栏出现【不受支持】提示的完美解决方案

    安装Fix VSCode Checksums code --install-extension lehni.vscode-fix-checksums 打开命令面板,快捷键 Ctrl + Shift + ...

  4. linux系统调优工具

    系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对 OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况: CPU -> MEM -> D ...

  5. sql-删除重复数据-oracle

    删除重复数据 准备重复数据 create table mystudent ( stuno number , stuname varchar2(20), stuage number ); insert ...

  6. bat-命令行安装软件

    批处理 执行的两种方式 1.直接右键以管理员身份运行 2.在管理员身份的cmd窗口中 .\xxx.bat 执行 区别 第一种方式 当前cmd默认路径为 C:\windows\system32 第二种方 ...

  7. C#.NET笔试题-基础

    1.C#中堆和栈的区别? 栈:由编译器自动分配.释放.在函数体中定义的变量通常在栈上. 堆:一般由程序员分配释放.用new.malloc等分配内存函数分配得到的就是在堆上. 存放在栈中时要管存储顺序, ...

  8. 『现学现忘』Git后悔药 — 28、版本回退git reset --soft命令说明

    git reset --soft commit-id命令:回退到指定版本.(soft:柔软的) 该命令仅仅修改分支中的HEAD指针的位置,不会改变工作区与暂存区中的文件的版本. 实现上是只做了一件事情 ...

  9. Oracle创建用户和表空间

    一.概述 1.数据库实际管理中,不同业务系统需要使用'不同的用户'进行管理维护和使用,这样做把业务数据和系统数据独立分开管理,利于数据库系统管理: 2.在数据库中创建业务系统用户时候,建议为用户创建指 ...

  10. 深度学习基础-基于Numpy的多层前馈神经网络(FFN)的构建和反向传播训练

    本文是深度学习入门: 基于Python的实现.神经网络与深度学习(NNDL)以及花书的读书笔记.本文将以多分类任务为例,介绍多层的前馈神经网络(Feed Forward Networks,FFN)加上 ...