您的位置:首页 > 其它

项目中配置文件优化方案

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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐