.Net Core实现选择数据热更新让服务感知配置的变化
1、说明
当一些配置需要修改在进行获取时,通常做法是修改完配置文件后再重启web服务器或者docker进行完成,下面我介绍一种热更新方法,修改完配置文件后,不需要重启服务器即可获取最新的配置文件,让服务感知配置的变化。
2、实践
下面我通过二种方式来讲解一下.NetCore实现选择数据热更新,让服务感知配置的变化。
2.1通过AddSingleton单例方式注入,然后使用IOptionsMonitor实现数据热更新
2.1.1首先在Startup.cs文件中的ConfigureServices方法添加配置
//通过读取配置文件加载到SystemPath类中 services.Configure(Configuration.GetSection("SystemPath")); //添加服务注入 services.AddSingleton ();
publicclassSystemPath { publicstringFilePath{get;set;} }
2.1.2在PathService构造器中注入IOptionsMonitor
publicclassPathService:IPathService { IOptionsMonitor_options; /// ///构造函数 /// ///publicPathService(IOptionsMonitor options) { _options=options; } publicstringGetPath() { return_options.CurrentValue.FilePath; } }
2.1.3在PathController中通过调用接口方式读取最新配置路径
//////路径 /// [Route("api/[controller]/[action]")] [ApiController] publicclassPathController:ControllerBase { privatereadonlyIPathService_pathService; //////构造函数 /// ///publicPathController(IPathServicepathService) { _pathService=pathService; } /// ///获取系统路径 /// ///[HttpGet] publicMethodResultGetSystemPath() { returnnewMethodResult(_pathService.GetPath()); } }
运行看一下效果:
现在读取到的路径是D:/File/2.jpg,我们修改一下配置文件然后重新调用接口看一下,这时会更新最新的路径。
2.2通过AddScoped方式注入,然后使用IOptionsSnapshot实现数据热更新
2.2.1首先在Startup.cs文件中的ConfigureServices方法添加配置
//通过读取配置文件加载到SystemPath类中 services.Configure(Configuration.GetSection("SystemPath")); //添加服务注入 services.AddScoped ();
publicclassSystemPath { publicstringFilePath{get;set;} }
2.2.2在PathService构造器中注入IOptionsMonitor
publicclassPathService:IPathService { IOptionsSnapshot_options; /// ///构造函数 /// ///publicPathService(IOptionsSnapshot options) { _options=options; } publicstringGetPath() { return_options.Value.FilePath; } }
2.2.3在PathController中通过调用接口方式读取最新配置路径
//////路径 /// [Route("api/[controller]/[action]")] [ApiController] publicclassPathController:ControllerBase { privatereadonlyIPathService_pathService; //////构造函数 /// ///publicPathController(IPathServicepathService) { _pathService=pathService; } /// ///获取系统路径 /// ///[HttpGet] publicMethodResultGetSystemPath() { returnnewMethodResult(_pathService.GetPath()); } }
运行看一下效果:
现在读取到的路径是D:/File/2.jpg,我们修改一下配置文件然后重新调用接口看一下,这时会更新最新的路径。
到此这篇关于.NetCore实现选择数据热更新让服务感知配置的变化的文章就介绍到这了,更多相关.NetCore数据热更新内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。