tnblog
首页
视频
资源
登录

.Net AgileConfig轻量配置中心

746人阅读 2025/2/17 11:58 总访问:3667504 评论:0 收藏:0 手机
分类: .net后台框架

.Net AgileConfig轻量配置中心


在现代的软件开发中,配置管理是分布式系统和微服务架构中不可或缺的一部分。一个好的配置中心不仅可以集中管理应用配置,还能动态更新配置而无需重启服务。今天,我将向大家介绍一个专为.NET开发者设计的轻量级配置中心——AgileConfig。

为什么我选择 AgileConfig 而不是 Apollo 和 Nacos

数据库支持


Nacos 虽然支持 MySQL,但其数据库版本要求较高,对于一些遗留系统来说,这可能是一个痛点。相比之下,AgileConfig 提供了更广泛的数据库支持,包括 MySQL、SQLite、SQL Server 等,这意味着它能够更好地兼容不同环境,无需对数据库进行大规模升级。

轻量级与易用性


Apollo 和 Nacos 都是功能强大的配置中心,但它们的复杂性也带来了更高的学习和运维成本。对于.NET开发者来说,AgileConfig 更轻量、更易于上手。它专为.NET生态设计,提供了友好的管理界面和简洁的API几乎,无需改造现有代码即可集成。

AgileConfig 是什么?


AgileConfig 是一个基于.NET Core开发的轻量级配置中心,旨在为分布式系统和微服务提供高效的配置管理解决方案。它简单易用,功能强大,同时与.NET生态无缝集成。无论是小型项目还是中型分布式系统,AgileConfig都能满足你的需求。

简单一个Demo示例

安装AgileConfig


AgileConfig 提供了多种部署方式,包括直接部署到服务器或通过 Docker 部署。
国内容器镜像:docker.1ms.run/kklldog/agile_config:latest
以下是通过 Docker 部署的简单步骤:

  1. sudo docker run --name agile_config -e TZ=Asia/Shanghai -e adminConsole=true -e db__provider=sqlite -e db__conn="Data Source=agile_config.db" -p 5000:5000 -v /etc/localtime:/etc/localtime -d kklldog/agile_config:latest
  1. sudo docker run \
  2. --name agile_config \ # 指定容器的名称为 "agile_config"
  3. -e TZ=Asia/Shanghai \ # 设置容器的时区为亚洲/上海
  4. -e adminConsole=true \ # 启用管理控制台功能
  5. -e db__provider=sqlite \ # 指定数据库提供者为 SQLite
  6. -e db__conn="Data Source=agile_config.db" \ # 配置 SQLite 数据库连接字符串,指定数据库文件名为 "agile_config.db"
  7. -p 5000:5000 \ # 将容器的 5000 端口映射到宿主机的 5000 端口
  8. -v /etc/localtime:/etc/localtime \ # 将宿主机的 /etc/localtime 文件挂载到容器的 /etc/localtime,确保容器使用宿主机的时区设置
  9. -d \ # 后台运行容器
  10. kklldog/agile_config:latest # 使用 kklldog/agile_config 镜像的最新版本(latest tag)


然后我们打开5000端口,设置密码后登录用户名是admin登录后我们来到主界面。

简单配置


在页面点击App然后创建一个测试应用。


然后我们点击Configurations进行创建配置,这里我创建了一个Test键,然后值为TestAAA,在创建后需要点击发布按钮。


如果我们想进行Json的编辑,可以点击编辑JSON按钮。

创建测试API项目


创建一个AgileConfigConfigurationCenterExample项目用于测试AgileConfig配置中心,这里我使用的框架版本是.net8
安装相关依赖包。

  1. <PackageReference Include="AgileConfig.Client" Version="1.7.6" />


然后,在 Program.cs 中配置 AgileConfig:

  1. var builder = WebApplication.CreateBuilder(args);
  2. // Add services to the container.
  3. builder.Services.AddControllers();
  4. // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
  5. builder.Services.AddEndpointsApiExplorer();
  6. builder.Services.AddSwaggerGen();
  7. // 在这里添加一下
  8. builder.Host.UseAgileConfig();
  9. var app = builder.Build();
  10. // Configure the HTTP request pipeline.
  11. if (app.Environment.IsDevelopment())
  12. {
  13. app.UseSwagger();
  14. app.UseSwaggerUI();
  15. }
  16. app.UseHttpsRedirection();
  17. app.UseAuthorization();
  18. app.MapControllers();
  19. app.Run();


appsettings.json中设置一下AgileConfig的配置。

  1. "AgileConfig": {
  2. "appId": "Test", // 应用ID,用于在AgileConfig服务器中标识当前应用
  3. "secret": "123456", // 应用的密钥,用于身份验证和安全连接
  4. "nodes": "https://97a3fd9a-c4f5-4a1e-bef8-871d48382dec-10-244-3-247-5000.papa.r.killercoda.com/", // AgileConfig服务器的地址,客户端将连接到此地址获取配置信息
  5. "name": "client_name", // 客户端名称,用于在AgileConfig服务器中标识当前客户端
  6. "tag": "tag1", // 客户端的标签,用于分组或分类管理
  7. "env": "dev" // 当前环境,例如开发环境(dev)、测试环境(test)或生产环境(prod
  8. },


设置WeatherForecastController控制器代码,将直接获取我们刚刚在服务器上的配置"Test:Test"

  1. public class WeatherForecastController : ControllerBase
  2. {
  3. private static readonly string[] Summaries = new[]
  4. {
  5. "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
  6. };
  7. private readonly ILogger<WeatherForecastController> _logger;
  8. private readonly IConfiguration _config;
  9. public WeatherForecastController(ILogger<WeatherForecastController> logger, IConfiguration config)
  10. {
  11. _logger = logger;
  12. _config = config;
  13. }
  14. [HttpGet(Name = "config")]
  15. public string Get()
  16. {
  17. return _config["Test:Test"];
  18. }
  19. }


接着我们调用试试看,发现没什么问题。

SqlServer 配置

  1. newitemfeature.agile:
  2. image: docker.1ms.run/kklldog/agile_config:latest
  3. container_name: newitemfeature-agile
  4. ports:
  5. - "5000:5000"
  6. security_opt:
  7. - seccomp=unconfined
  8. environment:
  9. - TZ=Asia/Shanghai
  10. - adminConsole=true
  11. - db:provider=sqlserver
  12. - db:conn= database=xxx;data source=xxx;User Id=xxx;password=UIO8$$54!!a$$;


请注意这里的$必须要写成$$


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

cAPS.net 保存base64位格式的图片

publicvoidUpload() { //取出图片对应的base64位字符 stringimgBase=Request[&quot;imgBase&quot;]; //c#里边的base6...

Quartz.net实例动态改变周期调度。misfire、Cron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.net Windows服务发布、安装、卸载、监听脚本。服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

c、VB.net中全角半角转换方法

///&lt;summary&gt; ///转全角的函数(SBCcase) ///&lt;/summary&gt; ///&lt;paramname=&quot;input&quot;&gt;任意字符串...

.net mvc分部页,.net core分部页

.net分部页的三种方式第一种:@Html.Partial(&quot;_分部页&quot;)第二种:@{ Html.RenderPartial(&quot;分部页&quot;);}...

.net实现QQ邮箱发送邮件功能

1、微软已经帮我们封装好了发送邮件的类MailMessage,MailMessage类构造一些邮件信息,然后通过SmtpClient进行邮件发送。Mai...

StackExchange.Redis操作redis(net core支持)

官方git开源地址https://github.com/StackExchange/StackExchange.Redis官方文档在docs里边都是官方的文档通过nuget命令下...

windows 自带的netsh进行端口映射

使用netsh 把本地任意ip的25566端口 映射到192.168.81.234的25565端口netshinterfaceportproxyaddv4tov4listenaddress=0.0....

确保.net程序始终以管理员身份运行

usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; ...

ASP.net Timer细节处理

Timer的用法:1:本人称之为计时器,是asp.net官方的一种。用法即是计时所用 2:关于计时有很多中方式,本人学识有限,暂...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

通俗易懂,什么是.net?什么是.net Framework?什么是.net core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

asp.net core2.0 依赖注入 AddTransient与AddScoped的区别

asp.net core主要提供了三种依赖注入的方式其中AddTransient与AddSingleton比较好区别AddTransient瞬时模式:每次都获取一...

asp.net主动推送百度seo

虽然可以使用百度提供的js自动推送,但是估计度娘还是希望主动推送一点。哈哈^_^,女孩子嘛大多都喜欢被动一点。publicclass...
这一世以无限游戏为使命!
排名
2
文章
657
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术