文章出處

回到目錄

艱苦奮斗

昨天晚上搞到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框架,你自己的框架需要自己去定義實體了!

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()