• 6.使用选项框架解耦服务与配置


    一、特性

    支持单例模式读取配置
    支持快照
    支持配置变更通知
    支持运行时动态修改选项值
     
    二、设计原则
    接口分离原则 (ISP) ,我们的类不应该依赖它不使用的配置
    关注点分离 (SoC),不同组件、服务、类之间的配置不应相互依赖或耦合
     
    三、建议
    为我们的服务设计 XXXOptions
    使用 IOptions<XXXOptions> 、 IOptionsSnapshot <XXXOptions> 、
    IOptionsMonitor <XXXOptions> 作为服务构造函数的参数
     
    四、代码
    1.定义接口
        public interface IOrderService
        {
            int ShowMaxOrderCount();
        }

    2.实现接口

        public class OrderServiceOptions
        {
        public int MaxOrderCount { get; set; } = 100;
        }
        public class OrderService : IOrderService
        {
            IOptions<OrderServiceOptions> _options;  //以Options的方式传入配置
            public OrderService(IOptions<OrderServiceOptions> options)
            {
                _options = options;
            }
    
            public int ShowMaxOrderCount()
            {
                return _options.Value.MaxOrderCount;
            }
        }

    3.服务注册

    services.Configure<OrderServiceOptions>(Configuration.GetSection("OrderService")); //从配置文件中获取配置信息,也可以从其它方式获取配置信息
    services.AddSingleton<IOrderService, OrderService>();
     
  • 相关阅读:
    linux socat创建简单的tun隧道
    【k8s】sc-nfs-pod
    c#中equals和==
    数据结构之哈希表
    数据结构之红黑树
    数据结构之2-3查找树
    数据结构之二叉查找树
    数据结构之递归与栈
    数据结构之二分查找法(折半查找)
    数据结构之基于无序链表的集合和映射
  • 原文地址:https://www.cnblogs.com/Adoni/p/12652941.html
Copyright © 2020-2023  润新知