项目中配置文件优化方案
2013-03-15 01:08
246 查看
最近在优化项目中的配置文件,苦思冥想了n种解决方案,就连晚上睡觉脑子里也是Config配置节点。好吧,也许有的人会疑问,为什么要优化或者说整合项目中的配置文件呢?说白了,也是项目前期没有对配置文件有个很好的总体考虑,当项目越来越大,与其他系统之间又紧密联系在一起,你会发现项目中无论是自身的配置还是第三方的配置都很多,如果之前没有一个很好的规划,配置节点会放的到处都是,而且是毫无章法,根本区分不出那一个配置节点是哪一个模块的,这样就显得很凌乱。处于这样一个背景下,所以我们要优化配置文件,使其分块放置,看起来一目了然。于是乎我又不知道死了多少脑细胞,好吧,谁让咱年轻呢,有的就是脑细胞,早上两个鸡蛋饼后开始了我迷茫的思考,正想的起劲呢,旁边一破孩问我中午吃什么,我才意识到该午餐了(一到午餐时间大家都在纠结午餐吃什么),算了,不想了,将砂锅进行到底吧,两大荤把脑细胞补回来。饭毕,继续沉浸在一个人的程序世界。如此过了几天,也尝试做了一个优化方案,灵感来源于log4net(一个开源日志框架)对配置的实现方式,其间也研究了一下log4net的开源代码,收获颇多。
废话不多说了,进入正题,前面说过我们是配置的优化,主要实现以下功能:
1.配置节点的整合,使配置项分模块放置,达到清晰明了的目的,例如系统配置、工作流配置、第三方配置等等。
2.使开发人员使用配置项简单易用。
3.在配置文件中的属性值一旦被修改,则不需要重新启动服务去加载配置文件,程序会自动加载配置文件。
我优化后的部分配置项如下,一个配置文件中只有一个<configs></configs>节点,其中可以包括多个<config></config>节点,每一个<config></config>节点会有一个相对应的实体类与之对应,也就是说一个<config></config>节点就表示一个模块的配置,节点中的name命名为类名、type是类的类型。而<config></config>节点下的众多<property />节点则是当前模块的配置项也是实体类的属性。如下所示IsTestMode就是系统配置模块的一个配置项,这样就很清晰的把配置项分模块管理。
View Code
到此,对配置文件的优化就结束了,由于网上对配置文件的管理方案也不多,特写出来与大家分享,如果你有什么好的方案,大家也可以一起交流。欢迎吐槽...
写的太high,快到一点了,赶快整理整理,来一把“找你妹”睡觉了,还好明天是星期五,心情还不错,不对,已经是星期五了,555。
附源码:http://files.cnblogs.com/bhtx/ConfigSolution.rar
废话不多说了,进入正题,前面说过我们是配置的优化,主要实现以下功能:
1.配置节点的整合,使配置项分模块放置,达到清晰明了的目的,例如系统配置、工作流配置、第三方配置等等。
2.使开发人员使用配置项简单易用。
3.在配置文件中的属性值一旦被修改,则不需要重新启动服务去加载配置文件,程序会自动加载配置文件。
我优化后的部分配置项如下,一个配置文件中只有一个<configs></configs>节点,其中可以包括多个<config></config>节点,每一个<config></config>节点会有一个相对应的实体类与之对应,也就是说一个<config></config>节点就表示一个模块的配置,节点中的name命名为类名、type是类的类型。而<config></config>节点下的众多<property />节点则是当前模块的配置项也是实体类的属性。如下所示IsTestMode就是系统配置模块的一个配置项,这样就很清晰的把配置项分模块管理。
View Code
public MainWindow() { InitializeComponent(); // 监听配置文件 ConfigFileWatcher(); // 设置配置文件 SetConfigEnvironment(); } /// <summary> /// 监听配置文件 /// </summary> public void ConfigFileWatcher() { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = AppDomain.CurrentDomain.BaseDirectory + "Configs\\"; watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite; // 只监控.config文件 watcher.Filter = "*.config"; // 添加事件处理器。 watcher.Changed += new FileSystemEventHandler(OnChanged); // 开始监控。 watcher.EnableRaisingEvents = true; } public void OnChanged(object source, FileSystemEventArgs e) { SetConfigEnvironment(); } public void SetConfigEnvironment() { // 初始化配置文件 ConfigurationCollection.Config.XmlConfigurator.Configure(new System.IO.FileInfo(".\\Configs\\ServerConfig.config")); }
到此,对配置文件的优化就结束了,由于网上对配置文件的管理方案也不多,特写出来与大家分享,如果你有什么好的方案,大家也可以一起交流。欢迎吐槽...
写的太high,快到一点了,赶快整理整理,来一把“找你妹”睡觉了,还好明天是星期五,心情还不错,不对,已经是星期五了,555。
附源码:http://files.cnblogs.com/bhtx/ConfigSolution.rar
相关文章推荐
- 项目中配置文件优化方案
- Tomcat优化发布项目流程(项目/配置文件文件分离)
- 使用weblogic连接池来得到数据库连接(通过配置文件进行读取的优化方案)
- 配置文件优化方案(二)
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- 项目优化-不变数据放在配置文件中
- 黄聪:MYSQL5.6缓存性能优化my.ini文件配置方案
- apache配置文件“httpd.conf”优化方案
- [原创]linux c项目配置文件
- 在项目中获取properties等配置文件
- XListView 配置文件 需导入项目 类名:XListViewFooter
- 来吧学学.Net Core之项目文件简介及配置文件与IOC的使用
- Tomcat 配置上传文件到项目外的路径
- JavaWeb项目开发案例精粹-第2章投票系统-002配置文件及公共类
- java Web项目javaEE中web.xml文件中配置 contextConfigLocation 方法
- 告警系统主脚本、告警系统配置文件、告警系统监控项目
- vs项目中头文件(.h)静态库(.lib)和 动态库(.dll )的路径和配置问题
- [记录]NGINX配置HTTPS性能优化方案一则
- Redis高可用方案哨兵机制------ 配置文件sentinel.conf详解
- 解决spring-boot项目中无法读取yml配置文件属性问题