.Text与Duwamish配置持久化方法比较
Duwamish的配置持久化实现方法已在《Duwamish配置持久化学习笔记》中介绍过了,这里不再重复。
Duwamish配置持久化方法的优点是web.config的设置方法较简单,只需要创建一个section,然后在section段中加入相应的key,例如:
<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,注意这不是自动的,而是用代码实现的:
{
get
{
return ((BlogConfigurationSettings)ConfigurationSettings.GetConfig("BlogConfigurationSettings"));
}
}
以上代码,把返回的反序列化类转换为BlogConfigurationSetting,BlogConfigurationSetting是一个可序列化的类,我们可以在它的代码中看到[Serializable]标志和一些Xml标志。
这样做将有利于上层代码结构与配置文件结构保持一致,并且如果添加一个设置项,只需要修改相应的Section类就可以了,而不需要像duwamish那样修改两个(section类和用于对配置进行分类的类)。但.Text配置持久化的一个缺点是修改配置文件时要十分注意,要有相当的序列化之时才能成功完成配置。
以上是我对两者的比较,如果有什么错误,还请指出。
版权声明:本文由作者Tony Qu原创, 未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。