1. 程式人生 > 程式設計 >.Net Core實現選擇資料熱更新讓服務感知配置的變化

.Net Core實現選擇資料熱更新讓服務感知配置的變化

1、說明

當一些配置需要修改在進行獲取時,通常做法是修改完配置檔案後再重啟web伺服器或者docker進行完成,下面我介紹一種熱更新方法,修改完配置檔案後,不需要重啟伺服器即可獲取最新的配置檔案,讓服務感知配置的變化。

2、實踐

下面我通過二種方式來講解一下.Net Core實現選擇資料熱更新,讓服務感知配置的變化。

2.1 通過AddSingleton單例方式注入,然後使用 IOptionsMonitor實現資料熱更新

2.1.1 首先在Startup.cs檔案中的ConfigureServices方法新增配置

.Net Core實現選擇資料熱更新讓服務感知配置的變化

//通過讀取配置檔案載入到SystemPath類中
services.C程式設計客棧
onfigure<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 GetPat
程式設計
客棧
h() { 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());
    }
  }

執行看一下效果:

.Net Core實現選擇資料熱更新讓服務感知配置的變化

現在讀取到的路徑是D:/File/2.jpg,我們修改一下配置檔案然後重新呼叫介面看一下,這時會更新最新的路徑。

.Net Core實現選擇資料熱更新讓服務感知配置的變化

 .Net Core實現選擇資料熱更新讓服務感知配置的變化

2.2 通過AddScoped 方式注入,然後使用 IOptionsSnapshot 實現資料熱更新

2.2.1 首先在Startup.cs檔案中的ConfigureServices方法新增配置

.Net Core實現選擇資料熱更新讓服務感知配置的變化

//通過讀取配置檔案載入到SystemPath類中
services.Configure<SystemPath>(Configuration.GetSection("SystemPath"));
//新增服務注入
services.AddScoped<IPathService,PathService>();
publhttp://www.cppcns.comic 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()
    {
      retur程式設計客棧n _options.Value.FilePath;
    }
  }

2.2.3 在PathController中通過呼叫介面方式讀取最新配置路徑

/// <summary>
  /// 路徑
  /// </summary>
  [Route("api/[controller]/[action]")]
  [ApiController]
  public http://www.cppcns.comclass 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());
    }
  }

執行看一下效果:

.Net Core實現選擇資料熱更新讓服務感知配置的變化

現在讀取到的路徑是D:/File/2.jpg,我們修改一下配置檔案然後重新呼叫介面看一下,這時會更新最新的路徑。

.Net Core實現選擇資料熱更新讓服務感知配置的變化

 .Net Core實現選擇資料熱更新讓服務感知配置的變化

到此這篇關於.Net Core實現選擇資料熱更新讓服務感知配置的變化的文章就介紹到這了,更多相關.Net Core資料熱更新內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!