技术开发 频道

Enterprise Library Step By Step系列(十五):配置应用程序块——

【IT168技术文档】
概述

配置应用程序块为应用系统提供了一个通用的配置管理解决方案,可以方便的从各种存储中读取配置信息。在设计上旨在提供一个用于读/写配置数据的简单接口,实现配置数据的读写与数据的存储相分离。使用Storage Provider Transformers在应用和物理存储之间传递数据,同时采用抽象AbstractFactory模式生成Provider数据。先解释一下配置应用程序块中用到的两个重要的概念:

Storage Provider是读写某个物理存储的对象,比如XML文件或SQL数据库

Transformers是在存储格式和应用格式之间转换配置数据的对象

结构设计

下图展示了组成配置应用程序块的类和对象之间的关系。该图假定您使用 XML 文件存储提供程序和转换器,它们包含在应用程序块中。XML 文件存储提供程序以文件的形式存储配置数据。(其他提供程序使用其他形式的存储,例如 Windows 注册表。)XmlFileStorageProvider 对象指向一个包含特定配置节的配置设置的文件。ConfigurationBuilder 对象指向一个包含特定配置节的配置元数据的文件。通常,包含配置元数据的文件名为 App.config(对于基于 Windows 的应用程序)或 Web.config(对于基于 Web 的应用程序)。

配置应用程序块将配置元数据和实际的配置设置分隔开来。应用程序块将元数据放在它自己的文件中,而该文件独立于存储配置设置的位置。配置设置经过分组并称为配置节。应用程序使用的每个企业程序库应用程序块都有其自己的配置节,该配置节存储在其自己的文件中。配置应用程序块使用配置元数据来访问配置中的数据。

元数据指向配置存储位置并包含一些信息,例如,配置应用程序块读/写配置数据所需的转换器和存储提供程序的类型。配置元数据文件被分成节。每一节都包含在配置存储位置读/写一组特定的配置设置所需的信息。下图展示了元数据和配置区之间的关系:


ConfigurationManager 类提供一个在所定义的存储位置读/写特定配置节的配置设置的静态外观(个人觉得是在这里运用了门面模式,不知道对不对?)。ConfigurationManager 对象从应用程序域配置文件读取配置元数据,然后使用这些信息来读/写配置节信息。

ConfigurationManager 类的静态方法使用 ConfigurationBuilder 对象的实例。ConfigurationBuilder 可创建文件存储提供程序和转换器对象。这些对象可管理配置数据和元数据。

IStorageProviderReader 接口定义了用于从存储位置读取配置信息的接口。IStorageProviderWriter 接口实现了 IStorageProviderReader 接口,还定义了用于写入配置信息的接口。配置应用程序块包含一个支持该接口的提供程序 XmlFileStorageProvider,它在一个 XML 文件中读/写配置数据。

ITransformer 接口可转换应用程序和存储提供程序之间的配置设置对象。配置应用程序块包含一个实现该接口的提供程序,即 XmlSerializerTransformer 类。XmlSerializerTransformer 类实现了应用程序定义的运行时对象和 XmlNode 对象之间的转换,而无需应用程序来配置转换器。如果没有转换器,配置设置对象就会以存储提供程序提供的相同格式返回到应用程序。

每个配置节的设置都缓存在一个哈希表中。当客户端请求配置数据时,ConfigurationBuilder 对象会在缓存中查找数据。如果在缓存中找到配置数据,ConfigurationBuilder 对象就不必访问存储中的配置数据。如果文件存储提供程序检测到存储中的配置数据已经更改,则 ConfigurationBuilder 对象就会清除缓存。ConfigurationManager 对象允许应用程序清除全部缓存,或者只清除给定节名的缓存。如果清除了缓存,则下一个读取操作就会访问存储位置中的配置设置。

0
相关文章