现在的位置: 首页 > 综合 > 正文

.Text与Duwamish配置持久化方法比较

2013年04月18日 ⁄ 综合 ⁄ 共 1333字 ⁄ 字号 评论关闭

 

Duwamish的配置持久化实现方法已在《Duwamish配置持久化学习笔记》中介绍过了,这里不再重复。

Duwamish配置持久化方法的优点是web.config的设置方法较简单,只需要创建一个section,然后在section段中加入相应的key,例如:

<testSection>
   
<add key="testApp.Config.a" value="2">
   
<add key="testApp.Config.b" value="str">
</testSection>

但是这种方法会加大上层的维护量,因为要为每一个section配一个IConfigurationSectionHandler接口的实现类,每一段代码中都要重写create()方法,增加了冗余代码。另外,如果要对这些配置进行管理,就必须写一些用于将配置分类的类,如testApp.Config,一旦需要加入一个参数,就必须更新section类和配置分类的类。

.Text的配置持久化方法与Duwamish有类似之处,.Text同样利用System.Configuration.ConfigurationSettings来读取设置,但不同的是,Duwamish在Application_Start事件中调用GetConfig,而.Text是在每一次需要读取设置时调用GetConfig,因此相对来说.Text的配置读取效率较低。

.Text也使用了IConfigurationSectionHandler接口,但该接口不是在section类中实现的,而是单独实现的,这个接口的实现在Dottext.Framework.Util.XmlSerializerSectionHandler中,它的create()方法与duwamish不同,其返回的是一个反序列化类,这个类会在调用GetConfig()时,转换为特定的section,注意这不是自动的,而是用代码实现的:

        public static BlogConfigurationSettings Settings
        
{
            
get
            
{
                
return ((BlogConfigurationSettings)ConfigurationSettings.GetConfig("BlogConfigurationSettings"));
            }

        }

以上代码,把返回的反序列化类转换为BlogConfigurationSetting,BlogConfigurationSetting是一个可序列化的类,我们可以在它的代码中看到[Serializable]标志和一些Xml标志。

这样做将有利于上层代码结构与配置文件结构保持一致,并且如果添加一个设置项,只需要修改相应的Section类就可以了,而不需要像duwamish那样修改两个(section类和用于对配置进行分类的类)。但.Text配置持久化的一个缺点是修改配置文件时要十分注意,要有相当的序列化之时才能成功完成配置。

以上是我对两者的比较,如果有什么错误,还请指出。

 

抱歉!评论已关闭.