基于框架的全局配置模型
艰苦奋斗
昨天晚上搞到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框架,你自己的框架需要自己去定义实体了!
本文转自博客园张占岭(仓储大叔)的博客,原文链接:基于框架的全局配置模型,如需转载请自行联系原博主。
基于框架的全局配置模型相关推荐
- 基于参与意愿的物流联盟资源优化配置模型
摘要: 企业通过组建物流联盟的方式协同完成大型物流任务从而降低物流成本.提高物流效率,物流联盟协同运作的稳定程度主要与企业参与联盟合作的积极性相关.因此,考虑物流联盟成员的参与意愿对物流联盟资源配置的 ...
- 基于网格化的主干光缆纤芯配置模型
[摘 要]目前国内各大通信运营商均以网格为基础推进光缆资源的建设.管理.使用,以实现资源配置具有相对的独立性网格化管理模式,但现有主干光缆纤芯配置模型存在跨区.跨机房纤芯配置问题,难以达到网格建设目 ...
- 【转】异步编程:.NET 4.5 基于任务的异步编程模型(TAP)
最近我为大家陆续介绍了"IAsyncResult异步编程模型 (APM)"和"基于事件的异步编程模式(EAP)"两种异步编程模型.在.NET4.0 中Micro ...
- 【转】1.8异步编程:.NET 4.5 基于任务的异步编程模型(TAP)
传送门:异步编程系列目录-- 最近我为大家陆续介绍了"IAsyncResult异步编程模型 (APM)"和"基于事件的异步编程模式(EAP)"两种异步编程模型. ...
- SAP UI5 应用的全局配置(Global Configuration) 的设计和使用试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...
- NeuIPS | 蛋白设计新方法?基于图的蛋白生成模型
今天给大家介绍的是麻省理工大学计算机科学和人工智能实验室在NeuIPS 2019会议上发表的一篇文章.在文中,作者提出了一种基于图结构的蛋白质序列生成模型,通过聚焦三维空间上相邻的蛋白质区域,在基于神 ...
- 卡内基梅隆大学提出基于学习的动作捕捉模型,用自监督学习实现人类3D动作追踪
原文来源:Cornell University Library 作者:Hsiao-Yu Fish Tung.Hsiao-Wei Tung.Ersin Yumer. Katerina Fragkiada ...
- spring 基于注解的控制器配置
http://ttaale.iteye.com/blog/787586 spring 基于注解的控制器配置 博客分类: spring SpringBeanServletMVCWeb 13.12. 基于 ...
- 寺冈labelnet使用说明_基于imagenet数据集的ResNet50模型训练示例
基于imagenet数据集的ResNet50模型训练示例 训练前准备 数据集获取 本训练示例以imagenet数据集为例,从imagenet官方网站http://www.image-net.org/获 ...
最新文章
- 粗糙集(Rough sets)、模糊逻辑(Fuzzy Logic)
- 【MIT港科大】最新《贝叶斯深度学习》2020综述论文,35页pdf全面阐述最新进展...
- Winform开发框架之系统重新登录、自动登录实现
- 测试逐飞的MM32F3277 MicroPython开发板的基本功能
- 【 FPGA 】按键消抖与LED灯流动小实验
- python中格式符的应用%s,%d,%f以及format()的实例以及输出格式
- 多DHCP服务器的作用域 及备用DHCP服务器(一)
- 计算机中丢失qt5svg,无法找到“Qt5Svg”提供了一个程序包配置文件
- 飘逸的python - 鲜为人知的参数
- 云原生中间件与开源自建TCO对比
- Oracle 性能调优 概述
- Mac idea 打不开
- Python Demo 03 星期输出
- CSS鼠标滑过改变样式颜色
- 2005.2.21 至 2005.8.8
- Android外存的读写
- 一个老鸟眼中“IT民工”的发展方向
- 虚拟机中部署ISA Server 2006 防火墙 网络设置(上)
- sysdig_Linux 监控和调试利器 Sysdig 入门教程
- Visio 2003 精简版(简体中文,免激活)百度云链接