.Net Core实现选择数据热更新让服务感知配置的变化
更新时间:2021年03月04日 10:34:03 作者:吴政恒
这篇文章主要介绍了.Net Core实现选择数据热更新让服务感知配置的变化,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
1、说明
当一些配置需要修改在进行获取时,通常做法是修改完配置文件后再重启web服务器或者docker进行完成,下面我介绍一种热更新方法,修改完配置文件后,不需要重启服务器即可获取最新的配置文件,让服务感知配置的变化。
2、实践
下面我通过二种方式来讲解一下.Net Core实现选择数据热更新,让服务感知配置的变化。
2.1 通过AddSingleton单例方式注入,然后使用 IOptionsMonitor实现数据热更新
2.1.1 首先在Startup.cs文件中的ConfigureServices方法添加配置
//通过读取配置文件加载到SystemPath类中
services.Configure<SystemPath>(Configuration.GetSection(“SystemPath”));
//添加服务注入
services.AddSingleton<IPathService, PathService>();
public class SystemPath
{
public string FilePath { get; set; }
}
2.1.2 在PathService构造器中注入IOptionsMonitor<SystemPath>实现数据热更新
public class PathService : IPathService
{
IOptionsMonitor<SystemPath> _options;
/// <summary>
/// 构造函数
/// </summary>
/// <param name=”blogData”></param>
public PathService(IOptionsMonitor<SystemPath> options)
{
_options = options;
}
public string GetPath()
{
return _options.CurrentValue.FilePath;
}
}
2.1.3 在PathController中通过调用接口方式读取最新配置路径
/// <summary>
/// 路径
/// </summary>
[Route(“api/[controller]/[action]”)]
[ApiController]
public class PathController : ControllerBase
{
private readonly IPathService _pathService;
/// <summary>
/// 构造函数
/// </summary>
/// <param name=”pathService”></param>
public PathController(IPathService pathService)
{
_pathService = pathService;
}
/// <summary>
/// 获取系统路径
/// </summary>
/// <returns></returns>
[HttpGet]
public MethodResult GetSystemPath()
{
return new MethodResult(_pathService.GetPath());
}
}
运行看一下效果:
现在读取到的路径是D:/File/2.jpg,我们修改一下配置文件然后重新调用接口看一下,这时会更新最新的路径。
2.2 通过AddScoped 方式注入,然后使用 IOptionsSnapshot 实现数据热更新
2.2.1 首先在Startup.cs文件中的ConfigureServices方法添加配置
//通过读取配置文件加载到SystemPath类中
services.Configure<SystemPath>(Configuration.GetSection(“SystemPath”));
//添加服务注入
services.AddScoped<IPathService, PathService>();
public class SystemPath
{
public string FilePath { get; set; }
}
2.2.2 在PathService构造器中注入IOptionsMonitor<SystemPath>实现数据热更新
public class PathService : IPathService
{
IOptionsSnapshot<SystemPath> _options;
/// <summary>
/// 构造函数
/// </summary>
/// <param name=”blogData”></param>
public PathService(IOptionsSnapshot<SystemPath> options)
{
_options = options;
}
public string GetPath()
{
return _options.Value.FilePath;
}
}
2.2.3 在PathController中通过调用接口方式读取最新配置路径
/// <summary>
/// 路径
/// </summary>
[Route(“api/[controller]/[action]”)]
[ApiController]
public class PathController : ControllerBase
{
private readonly IPathService _pathService;
/// <summary>
/// 构造函数
/// </summary>
/// <param name=”pathService”></param>
public PathController(IPathService pathService)
{
_pathService = pathService;
}
/// <summary>
/// 获取系统路径
/// </summary>
/// <returns></returns>
[HttpGet]
public MethodResult GetSystemPath()
{
return new MethodResult(_pathService.GetPath());
}
}
运行看一下效果:
现在读取到的路径是D:/File/2.jpg,我们修改一下配置文件然后重新调用接口看一下,这时会更新最新的路径。
到此这篇关于.Net Core实现选择数据热更新让服务感知配置的变化的文章就介绍到这了,更多相关.Net Core数据热更新内容请搜索华域联盟以前的文章或继续浏览下面的相关文章希望大家以后多多支持华域联盟!
您可能感兴趣的文章:浅析.Net Core中Json配置的自动更新Asp.net core中实现自动更新的Option的方法示例.Net Core配置与自动更新的实现方法
.Net
Core
数据
热更新
相关文章
Asp.net控制Tomcat启动关闭的实现方法近日有个项目客户要求能自己配置相关权限。由于历史原因这个项目采用的是公司以前的权限系统 2012-01-01
asp.net实现微信公众账号接口开发教程这篇文章主要是一篇关于asp.net实现微信公众账号接口开发教程,感兴趣的小伙伴们可以参考一下 2015-12-12
asp.net无法加载oci.dll等错误的解决方法.net在windows2003下访问oracle9i提示“无法加载oci.dll”或"无法在dll oci.dll中找到名为ocienvcreate的入口点 "的修复方法 2013-10-10
.NET C#使用微信公众号登录网站这篇文章主要介绍了.NET C#使用微信公众号登录网站,教大家利用微信公众号进行网站登录,感兴趣的小伙伴们可以参考一下 2016-08-08
aspnet_isapi.dll设置图文方法.net程序实现伪静态aspnet_isapi.dll设置图文介绍.net的程序实现伪静态,需要的朋友可以参考下。 2009-11-11
ASP.NET 水晶报表打印功能实现代码ASP.NET下的水晶报表打印,据我所知有以下几种办法可以打印 2008-11-11
.NET/C#如何判断某个类是否是泛型类型或泛型接口的子类型详解这篇文章主要给大家介绍了关于.NET/C#如何判断某个类是否是泛型类型或泛型接口的子类型的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧 2018-09-09
Visual Studio 2017正式版离线安装教程这篇文章主要为大家详细介绍了Visual Studio 2017正式版离线安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2017-03-03
.Net页面局部更新引发的思考这篇文章主要是由.Net页面局部更新引发的一系列思考,整理了实现局部更新的解决方案及改进方案,感兴趣的小伙伴们可以参考一下 2016-06-06
JS实现完美include加载功能代码在写这个之前在网上搜索了些资料,发现以前写的include都存在2个问题,这也是include需要解决的比较重要的2个问题。 2010-10-10
最新评论

评论(0)