文章出處
文章列表
艱苦奮斗
昨天晚上搞到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框架,你自己的框架需要自己去定義實體了!
文章列表
全站熱搜