基于框架的全局配置模型

回到目录

艰苦奋斗

昨天晚上搞到23点多,终于有了比较满意的全局框架配置模块,这个在之前在Lind.DDD.ConfigConstants模块中出现,可以说大叔对之前全局配置的不满,而对原有功能进行的改进,对于生产和获取采用了单例,对于配置项采用了模块的概念,这样在XML表现上更加符合面向对象的原则,并且在可读性上也更加友好!

劳动成果

单例模式获取配置信息

全局的保持不变的信息,没有必要每次都new实例,直接使用单例模块是最好的选择

复制代码
     /// <summary>
        /// 配置字典,单例模式
        /// </summary>
        /// <returns></returns>
        public static ConfigModel Config
        {
            get
            {
                if (_config == null)
                {
                    lock (_lockObj)
                    {
                        var old = Utils.SerializationHelper.DeserializeFromXml<ConfigModel>(_fileName);
                        if (old == null)
                        {
                            _config = _init;
                            Utils.SerializationHelper.SerializeToXml(_fileName, _init);
                        }
                        else
                        {
                            _config = old;
                        }
                    }

                }
                return _config;
            }
        }
复制代码

配置实体

对于配置的实体类,大叔也公开一下,大家可以进行借鉴

复制代码
    public class ConfigModel
    {
        public ConfigModel()
        {
            Caching = new Caching();
            Queue = new Queue();
            Logger = new Logger();
            Pub_Sub = new Pub_Sub();
            MongoDB = new MongoDB();
            Redis = new Redis();
            Messaging = new Messaging();
            DomainEvent = new DomainEvent();
            Socket = new Socket();
            CatServers = new List<CatServer>();
        }

        /// <summary>
        /// 启用属性变化跟踪
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 0)]
        public int PropertyChanged { get; set; }

        /// <summary>
        /// 缓存相关配置
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 1)]
        public Caching Caching { get; set; }

        /// <summary>
        /// 队列相关配置
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 2)]
        public Queue Queue { get; set; }

        /// <summary>
        /// 日志相关
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 3)]
        public Logger Logger { get; set; }

        /// <summary>
        /// Pub_Sub相关
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 4)]
        public Pub_Sub Pub_Sub { get; set; }

        /// <summary>
        /// MongoDB相关
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 5)]
        public MongoDB MongoDB { get; set; }

        /// <summary>
        /// redis相关
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 6)]
        public Redis Redis { get; set; }

        /// <summary>
        /// Messaging消息相关
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 7)]
        public Messaging Messaging { get; set; }

        /// <summary>
        /// 领域事件相关
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 8)]
        public DomainEvent DomainEvent { get; set; }

        /// <summary>
        /// Socket通讯配置 
        /// </summary>
        [System.Xml.Serialization.XmlElementAttribute(Order = 10)]
        public Socket Socket { get; set; }

        /// <summary>
        /// Cat实时监控配置 
        /// XmlArray表示以数组的形式
        /// </summary>
        [XmlArray(Order = 11)]
        public List<CatServer> CatServers { get; set; }
    }
复制代码

对以上的设计完全是出于一种兴趣,感觉把每个模块都单独设置,在部署上不方便,所以把它们统一了,当然只适合于Lind.DDD框架,你自己的框架需要自己去定义实体了!

回到目录

posted @   张占岭  阅读(1112)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2012-05-19 从微软的DBML文件中我们能学到什么(它告诉了我们什么是微软的重中之重)~目录
2011-05-19 通过用户登陆消息类,来学习面向对象的实体统一接口和验证统一接口
2011-05-19 代替数据库的自增主键的解决方案,解决了批量导数据ID出错的问题
2011-05-19 用Jquery自己开发个代阴影的对话框吧!
2011-05-19 从一个很简单的文件上传来品味面向对象的大局观(抽象类和功能类)
2011-05-19 如何更好的理解类和结构
2011-05-19 从一个简单的程序中你能看到什么?(面向对象的真帝)
点击右上角即可分享
微信分享提示