建设电子书阅读网站,施工企业质量管理,企业网站的设计要点,做留言的网站AgileConfig轻量级配置中心自第一个版本发布不知不觉已经半年了。在并未进行什么推广的情况下收到了250个star#xff0c;对我有很大的鼓舞#xff0c;并且也有不少同学试用#xff0c;并且给出了宝贵的意见#xff0c;非常感谢他们。其中有一些意见非常好#xff0c;但是… AgileConfig轻量级配置中心自第一个版本发布不知不觉已经半年了。在并未进行什么推广的情况下收到了250个star对我有很大的鼓舞并且也有不少同学试用并且给出了宝贵的意见非常感谢他们。其中有一些意见非常好但是一直没有开发。主要是一来下半年比较忙懒二来我不想把AgileConfig搞的过于复杂。但其中有个需求被很多同学提及过就是希望能支持应用间的继承关联类似Apollo的公共namespace的概念。比如微服务应用之间有不少公共配置项可以配置在一个应用内然后其他应用继承它这样每个应用就不用重复的配置公共配置。我思考了一下这个配置确实是个非常有用的功能于是花了点时间实现了它。Github地址https://github.com/kklldog/AgileConfig 求star 。下面的示例简单演示下如何使用AgileConfig读取配置并且使用继承功能使用docker启动一个AgileConfig实例sudo docker run --name agile_config -e adminConsoletrue -e db:providersqlserver -e db:connPersist Security Info False; User ID dev; Password dev123,; Initial Catalog agile_config_test; Server . -p 5000:5000 kklldog/agile_config:latest
使用docker命令运行一个AgileConfig实例这是最简单的方法。当然你也可以拉源码下来编译发布使用IIS来运行它。配置环境变量adminConsoletrue 开启控制台功能db:providersqlserver 数据库为SqlServerdb:connPersist Security Info False; User ID dev; Password dev123,; Initial Catalog agileconfigtest; Server . 配置数据库连接-p 5000:5000 容器的5000口映射本地的5000口配置AgileConfig第一次运行需要配置管理密码密码配置完成后重新登录进系统开始配置节点在设计的时候节点跟控制台是分开的但是为了部署简单最后节点跟控制台被实现在一起了。所以采用单节点部署的时候该实例既是节点又是控制台所以也需要把本节点的地址加入到节点列表里以便控制台能管理到。添加应用AgileConfig的初始化完成了现在我们开始添加应用。添加“公共应用”添加应用名称应用id勾选“可被继承”。点击确定完成公共的创建。系统只支持一层的继承可被继承的应用不能再继承其它应用。创建完成后为公共应用添加配置项为公共应用添加一个配置项键为publickey01 值为0001 。添加“私有应用”添加一个私有应用不要选“可被继承”。点击继承应用栏的加号会弹出可以被的继承应用列表选择“公共应用”。点击“确定”完成创建。为私有应用创建配置项为私有应用添加一个配置项键为privatekey01 值为0002 。注意把所有的配置都上线否则客户端读不到配置。客户端读取配置创建Asp.net Core WebApi项目我们创建一个WebApi项目做为客户端来演示如何读取配置使用nuget引用AgileConfig.ClientInstall-Package AgileConfig.Client -Version 1.1.0
集成AgileConfig.Client使用nuget安装成功后切换到Program.cs开始集成AgileConfigClient。 public static IHostBuilder CreateHostBuilder(string[] args) Host.CreateDefaultBuilder(args).ConfigureAppConfiguration((ctx,cfg) {var appId private_01;var secret 1;var nodes http://localhost:5000;//new一个client实例var configClient new ConfigClient(appId, secret, nodes);//使用AddAgileConfig配置一个新的IConfigurationSourcecfg.AddAgileConfig(configClient);}).ConfigureWebHostDefaults(webBuilder {webBuilder.UseStartupStartup();});
使用IHostBuilder的ConfigureAppConfiguration把我们的ConfigClient注入进去。这里我们的ConfigClient配置的是私有应用的idprivate_01 。读取配置前期工作都完成了现在我们可以开始编写读取配置的代码了。新建一个ReadConfigController [ApiController][Route([controller])]public class ReadConfigController : ControllerBase{private readonly IConfiguration _IConfiguration;public ReadConfigController(IConfiguration configuration){_IConfiguration configuration;}[HttpGet]public String Get(){var publicConfig _IConfiguration[public_key_01];var privateConfig _IConfiguration[private_key_01];return $publicConfig:{publicConfig} , privateConfig:{privateConfig};}}
通过构造函数注入IConfiguration然后通过它直接读取公共配置私有配置并且直接把字符串返回回去。注意修改一下客户端程序的启动端口默认5000跟上面的AgileConfig实例占用的端口冲突。运行一下运行客户端项目然后在浏览器里输入http://localhost:51605/readconfig可以看到我们的公共配置跟私有配置都准确的读取到了。总结通过以上一个简单的示例演示了如何使用AgileConfig读取配置以及如何在应用间继承配置。以上示例并未展示所有内容使用继承的时候需要注意一下几点当私有应用的配置跟被继承应用重复时私有应用的配置会覆盖被继承应用的配置如果一个应用被标记为可被继承后这个应用自己不能继续继承其它应用一个私有应用可以继承多个“可被继承”的应用如果多个继承的应用间出现重复的配置那么将按照继承的顺序后面的应用会覆盖前面的应用。如果喜欢这个项目的请给我star吧。谢谢。Github地址https://github.com/kklldog/AgileConfig