如何让你的系统配置文件更合理
将系统中全局的,容易发生变化的数据,但调用频繁的常量信息存储在文件中是个不错的选择,原因有以下几点:
1 由于操作频繁,放在文件里可以减低数据库的负载
2 由于信息是全局的,所以放在文件中,对于所有层都可以开放
3 由于它容易发生变化 ,所以写死在代码中,不是一个聪明的作法,放在文件中可以不用编译,就可以使信息同步到程序上
4 操作频繁,放在文件中,这事实上对于服务器的CPU来说不是一件好事,所以,在这里将会对它进行缓存,本例没有使用cache
实现:一个VConfig层,进行公用配置信息管理和配置功能代码管理
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项目中去派生就可以了,在自己的新项目中去重写和扩展自己的业务逻辑。
感谢大家!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言