• 菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计


     

    配置的热更新

    什么是热更新:这个词听着有点熟悉,但到底是什么呢?
    一般来说:创建的项目都无法做到热更新:即项目无需重启,修改配置文件后读取到的信息就是修改配置之后的
    我们只需要吧项目中用到的IOptions改成IOptionsSnapshot即可
     
    看好了,接下来是步骤:
    在添加json配置文件的时候往往没有添加后面两个参数。
    这两参数用来干嘛的呢?
    第一个参数(optional):(Whether the file is optional)是否可选,意思是如果配置文件不存在的时候是否要抛异常。
    第二个参数(reloadOnChange):(Whether the configuration should be reloaded if the file changes.)是否改变的时候重新加载。
    asp.net core项目中即使不加这两个参数,只要将IOptions改成IOptionsSnapshot就会进行热更新,CreateDefaultBuilder已经替我们进行了热更新。
    走起: 瞧瞧CreateDefaultBuilder的源代码
    CreateDefaultBuilder已经默认加载appsetting.json文件,并启用了热更新
     
    因为如果一直要保持文件变更读取的话,就要有一个线程一直对文件进行读取和变更操作。如果我们不想启用默认热更新的话,我们可以将热更新覆盖掉。
     

    配置的框架设计

    以下代码部分为伪代码
    初始化Builder
    var builder = new ConfigurationBuilder(
    将source添加到builder
    aps.net core为我们提供了很多source和添加source的方式
    builder.Add(source)
     
     
    Build
    var configurationRoot = builder.Build()
     
    Build实际上是对builder的每一个source进行Build,然后创建一个provider,添加到providers列表中,最后初始化了一个包含了所有的provider的配置
     
    Use
    使用的时候实际上是 遍历所有的provider,找到可以使用的provider然后返回value
     
    可以看出来最重要的是source和provider
     

    IConfigurationSource与IConfigurationProvider

     
    可以看出Json、Memory、Inl、Command、Xml都实现IConfigurationSource接口
     
    抽象类ConfigurationProvider实现IConfigurationProvider接口,其他的FileIConfigurationProvider(基类,文件的读取)、
    CommandIConfigurationProvider继承ConfigurationProvider,JsonConfigurationProvider、
    XmlConfigurationProvider继承FileIConfigurationProvider
  • 相关阅读:
    ELF文件&ELFminer初识
    模型融合——stacking原理与实现
    机器学习&恶意代码静态检测
    机器学习模型部署摘要
    Linux统计文件夹、文件数量的命令
    机器学习&恶意代码检测简介
    基于FastAPI的机器学习模型部署快速上手
    机器学习&恶意代码动态检测
    python 正则表达式
    给 zsh 自定义命令添加参数自动补全
  • 原文地址:https://www.cnblogs.com/Agui520/p/8342292.html
Copyright © 2020-2023  润新知