几乎每个应用程序都需要某种格式的配置信息。这些信息可以像数据库连接字符串一样简单,也可以像多部分、分层的用户首选信息一样复杂。作为一名开发人员,如何存储应用程序的配置数据以及将它们存储在何处是您经常面临的问题。典型的解决方案包含以下内容:
其中每个选择都有其各自的优点和缺点;没有一种解决方案可以适合所有情况。 配置应用程序块将读/写配置数据的能力与基础数据存储的细节相分离。通过利用存储提供程序和转换器在应用程序和物理存储之间传输数据,可以实现这一点。存储提供程序是可以读/写特定物理存储(例如 XML 文件或 SQL 数据库)的对象。转换器可以在应用程序的期望格式(例如一组对象)和存储提供程序的要求格式(例如 XML 文档)之间转换配置信息。应用程序块随附有 XML 文件存储提供程序和 XML 序列化程序转换器。 您可以在包含有配置元数据的文件中定义存储提供程序和转换器。通常,该文件是 Machine.config 文件、App.config 文件或 Web.config 文件。元数据包含一些信息,例如,配置节名称、存储位置以及读/写配置设置时所使用的对象的类型名称。这意味着,您可以通过更改文件中的信息将一种存储类型更改为另一种,而无需重新编写应用程序。 同样,您可以通过更改同一个文件来更改存储属性,例如其位置。这也不需要修改应用程序代码。在部署和操作期间可以决定在何处存储配置数据。 常见情况 配置应用程序块提供了一个用于读/写应用程序配置数据的简单接口。检索配置数据只需要一行代码。以下示例可从配置文件中检索一个数据库连接字符串。
[C#]
string conString = (string)ConfigurationManager.GetConfiguration("connectionstring");
[Visual Basic]
Dim conString As String = ConfigurationManager.GetConfiguration("connectionstring")
通过创建允许您使用其他数据存储(例如 Windows 注册表或 SQL 数据库)的自定义存储提供程序,可以扩展配置应用程序块。通过更改配置元数据文件,可以将这些自定义提供程序添加到配置应用程序块中。您无需修改或重新构建配置应用程序块,即可使用不同的存储。您还可以添加自定义转换器来为应用程序和存储转换配置数据。 配置应用程序块的设计配置应用程序块旨在实现以下目标:
设计要点 图 1 展示组成配置应用程序块的类和对象之间的关系。该图假定您使用 XML 文件存储提供程序和转换器,它们包含在应用程序块中。XML 文件存储提供程序以文件的形式存储配置数据。(其他提供程序使用其他形式的存储,例如 Windows 注册表。)XmlFileStorageProvider 对象指向一个包含特定配置节的配置设置的文件。ConfigurationBuilder 对象指向一个包含特定配置节的配置元数据的文件。通常,包含配置元数据的文件名为 App.config(对于基于 Windows 的应用程序)或 Web.config(对于基于 Web 的应用程序)。 ![]() 图 1. 配置应用程序块的设计 实例: 取 C# 2.0 配置文件的方法: | ||||||||||||
