对于每一个应用程序来说,配置文件是最重要的一块,而在EnterpriseLibrary中队配置文件的写入一块一大部分都有他自带的一个tool来完成,在每个应用程序块中的Design就是来完成这项工作;而在每个项目中我们都会看到有一个Configuration文件夹,这个是用于该应用程序块对配置文件的管理类;还有一个是Instrumentation文件夹,主要包含的是事件以及事件监听类等。这也是EnterpriseLibrary中的总体结构,每个应用程序块都采用这种结构(架构)进行开发,所以只要弄懂了一个应用程序块其他的也就迎刃而解了。
在Microsoft.Practices.EnterpriseLibrary.Common.Configuration项目中我们主要看看他对配置文件的读写的扩展;在配置文件中主要涉及的是一个节点(ConfigurationSection)和元素(ConfigurationElement)企业库都对其进行了扩展。
SerializableConfigurationSection : ConfigurationSection, IXmlSerializable类继承可以看出是对ConfigurationSection的扩展,而每个应用程序块的配置节点都必须继承自此类,此类主要包括了对XML文件节点的操作方法;
ConfigurationSourceSection : SerializableConfigurationSection此类是"配置文件"节点的扩展,也就是说你的项目的配置文件所对应的配置节点,在EL中包含两个配置文件(File和System);
NamedConfigurationElement : ConfigurationElement, IObjectWithName这个类我们可以看出是包含"name"属性的元素的扩展,其中IObjectWithName包含一个属性就是Name,所以这个扩展是元素中包含Name属性的扩展;
NameTypeConfigurationElement : NamedConfigurationElement, IObjectWithNameAndType上面对Name属性元素的扩展,而这个类有对其进行了扩展,包含了Type属性,当然IObjectWithNameAndType也就包含了Type(类型)属性;
ConfigurationSourceElement : NameTypeConfigurationElement对上述的类进行了扩展从而获取了配置源中的元素,这个ConfigurationSourceSection相对应,在EL中包含两个配置源(File和System);
下面来看看配置源接口IConfigurationSource,这个接口包含了很重要的方法,节点的获取以及节电的增删和改变所触发事件的处理等,这个文件中还包含了一个IConfigurationParameter接口,主要用于配置参数;
FileConfigurationSource : IConfigurationSource, IProtectedConfigurationSource是对配置源的一个扩展,由于EL支持加密所以也实现了IProtectedConfigurationSource接口,以实现对加密的操作<可能不是这样的>,这个配置源主要是非Web.config/App.config的自定义配置文件;
SystemConfigurationSource : IConfigurationSource 这个配置源市系统默认的配置文件(Web.config/App.config);
从上面就可以看出El对配置可是下了以点功夫的,对每一个种族的扩展都对应着System和File两种,当然对配置类的扩展当然也要对相应的集合的扩展: NamedElementCollection<T> : ConfigurationElementCollection, IEnumerable<T>为包含Name属性的集合,PolymorphicConfigurationElementCollection<T> : NamedElementCollection<T>对add元素的集合,NameTypeConfigurationElementCollection<T> : PolymorphicConfigurationElementCollection<T>也就是说包含Key/Value对的集合。
有了这些东西我们就可以对操作的方法进一步了解,下一步我们将我做的就是查看一下整个配制文件的执行顺序以及它是怎样贯穿整个企业库的,今天就写到这里了,希望对刚刚步入EL的同志们有所帮助!