• 7.选项数据的热更新


    一、关键类型

    IOptionsMonitor<out TOptions>     //服务注册services.AddSingleton时使用
    IOptionsSnapshot<out TOptions>  //服务注册services.AddScoped 时使用
     
    二、IOptionsSnapshot 方式
     1.接口定义
        public interface IOrderService
        {
            int ShowMaxOrderCount();
        }

    2.接口实现

        public class OrderService : IOrderService
        {
            IOptionsSnapshot<OrderServiceOptions> _options;
            public OrderService(IOptionsSnapshot<OrderServiceOptions> options)
            {
                _options = options;
            }
            public int ShowMaxOrderCount()
            {
                return _options.Value.MaxOrderCount;
            }
        }
    
        public class OrderServiceOptions
        {
            public int MaxOrderCount { get; set; } = 100;
        }

    3.服务注册

    services.Configure<OrderServiceOptions>(Configuration.GetSection("OrderService")); //从配置文件中获取配置信息,也可以从其它方式获取配置信息
    services.AddScoped<IOrderService, OrderService>();
    三、IOptionsMonitor 方式
     1.接口定义
        public interface IOrderService
        {
            int ShowMaxOrderCount();
        }

    2.接口实现

    public class OrderService : IOrderService
        {
            IOptionsMonitor<OrderServiceOptions> _options;
            public OrderService(IOptionsMonitor<OrderServiceOptions> options)
            {
                _options = options;
    
                //每次配置信息变更的回调
                _options.OnChange(option =>
                {
                    Console.WriteLine($"配置更新了,最新的值是:{_options.CurrentValue.MaxOrderCount}");
                });
            }
    
            public int ShowMaxOrderCount()
            {
                return _options.CurrentValue.MaxOrderCount;
            }
        }
    
        public class OrderServiceOptions
        {
        public int MaxOrderCount { get; set; } = 100; }

    3.服务注册

    services.Configure<OrderServiceOptions>(Configuration.GetSection("OrderService")); //从配置文件中获取配置信息,也可以从其它方式获取配置信息
    services.AddSingleton<IOrderService, OrderService>();

    四、对以加载的配置信息后进行内存修改

    services.PostConfigure<OrderServiceOptions>(options =>
    {
      options.MaxOrderCount += 20;
    });
  • 相关阅读:
    用leangoo看板工具实施多团队大规模敏捷开发
    单团队的Scrum敏捷开发-leangoo
    放弃在每日站会上按成员逐个发言
    Leangoo思维导图做OKR目标管理
    好用的思维导图软件(程序员必备)
    好用免费的思维导图工具,多人协作共同编辑
    什么是Scrum燃尽图?
    Scrum中文网-团队需要Scrum Master做这六件事
    项目管理工具Leangoo自定义字段的应用
    实施敏捷开发中,选择看板管理工具的几个要点
  • 原文地址:https://www.cnblogs.com/Adoni/p/12653057.html
Copyright © 2020-2023  润新知