zoukankan      html  css  js  c++  java
  • 如何让你的系统配置文件更合理

    将系统中全局的,容易发生变化的数据,但调用频繁的常量信息存储在文件中是个不错的选择,原因有以下几点:

    1 由于操作频繁,放在文件里可以减低数据库的负载

    2 由于信息是全局的,所以放在文件中,对于所有层都可以开放

    3 由于它容易发生变化 ,所以写死在代码中,不是一个聪明的作法,放在文件中可以不用编译,就可以使信息同步到程序上

    4 操作频繁,放在文件中,这事实上对于服务器的CPU来说不是一件好事,所以,在这里将会对它进行缓存,本例没有使用cache

    实现:一个VConfig层,进行公用配置信息管理和配置功能代码管理

    image

    Entity目录下是所有公用信息的实体,webconst.cs文件表示系统公用信息实体

    ConfigFilesManager类型,是对配置文件进行读写操作的类

    ConfigSerialize类型,提供了对文件序列化和反序列化操作的类

    IConfiger接口,它是所有配置实体的基接口

    WebConstConfig类型,对webconst实体进行了读写操作的类,这本类中,提供了从文件中使用了Elapsed事件,来实现每隔一段时间去文件中读取最新数据

    这是它的核心代码:

     /// <summary>
        /// 静态构造函数初始化
     /// </summary>
           static WebConstConfig()
           {
               cfm = new ConfigFilesManager(ConfigFilePath, typeof(WebConst));
               baseConfig = (WebConst)cfm.LoadConfig();
               baseConfigTimer.AutoReset = true;
               baseConfigTimer.Enabled = true;
               baseConfigTimer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
               baseConfigTimer.Start();
           }
    
           #endregion
    
           #region 重设配置类实例
         /// <summary>
           /// 重设配置类实例
        /// </summary>
           public static void ResetConfig()
           {
    
               baseConfig = (WebConst)cfm.LoadRealConfig();
           }
    
           private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
           {
               ResetConfig();
           }
    对于 VConfig这个项目,我会在以后的开发中进一步的完善,因为,在开发一个新项目时,我不希望去修改我的vconfig项目,只从vconfig项目中去派生就可以了,在自己的新项目中去重写和扩展自己的业务逻辑。
     
    感谢大家!
  • 相关阅读:
    poj 3041 Asteroids (最大匹配最小顶点覆盖——匈牙利模板题)
    poj 2060 Taxi Cab Scheme (最小路径覆盖)
    poj 2728 Desert King (最小比例生成树)
    poj 2449 Remmarguts' Date(第K短路问题 Dijkstra+A*)
    poj 3463 Sightseeing( 最短路与次短路)
    研究生flag
    插入排序和堆排序
    根据二叉树的中序遍历和层次遍历还原二叉树
    关于AVL实现的代码记录
    回文数猜想(与6174问题很像)
  • 原文地址:https://www.cnblogs.com/lori/p/2457484.html
Copyright © 2011-2022 走看看