引言
现代软件开发中,各种技术、技巧越来越依赖配置,譬如客户端对用户体验的个性化设置、系统的各种运行时参数设置、可插拔的插件机制、基于配置的IoC架构模式等。配置方式也从最初的二进制存储格式逐步过度到INI文本格式直至今时所广泛使用的Xml格式。使用Xml格式进行配置,大大提高了对设置数据的表现能力,但是在 .NET 1.x 中对Xml配置的操控还有诸多不便,尤其是对Xml配置的存储同步机制很不完善,而从 .NET 2.0 开始,框架提供了更丰富和易于操控使用的机制。
.NET 中的配置文件(Xml)必须以“<configuration>”为根节点,配置文件分为两大部分:配置声明区和数据设置区。
配置声明区:位于<configuration><configSections>内,通过<section>节点进行声明定义。
数据设置区:位于<configuration>根节点内除<configSections>以外的任意节点。
数据设置区可以是用户定义的任意结构层次,但是其“根节点”必须预先在设置声明区定义,运行时会进行有效性检测,一旦发现没有声明的配置节点则会产生一个运行时配置异常。
范例配置文件
\n
<configuration>
<configSections>
<section name=”dataSystems” type=”SWSystem.Data.Configuration.DataSystemsSection, SWSystem.Data” />
</configSections>
<dataSystems>
<dataSystem name=”iMRP” currentProvider=”SQLProvider”>
<dataProvider name=”MSSqlProvider” type=”SWSystem.Data.Providers.SQLDataProvider” dataFile=”D:\\Zongsoft\\Develop 2005\\SWSystem.Data\\Services\\SWDataEngine.xml” connectionString=”UID=sa;PWD=;Initial Catalog=iMRP;Data Source=127.0.0.1″ />
<dataProvider name=”PostgreSqlProvider” type=”SWSystem.Data.Providers.PostgreDataProvider” dataFile=”D:\\Zongsoft\\Develop 2005\\SWSystem.Data\\Services\\SWDataEngine.xml” connectionString=”Server=127.0.0.1;Port=5432;User Id=postgres;Password=postgres;Database=iMRP;Encoding=UNICODE;” />
<dataModules>
<add name=”StockModule” type=”Zongsoft.Applications.iMRP.Business.StockModule, Zongsoft.Applications.iMRP.Business” />
</dataModules>
</dataSystem>
</dataSystems>
</configuration> \n
<configSections>
<section name=”dataSystems” type=”SWSystem.Data.Configuration.DataSystemsSection, SWSystem.Data” />
</configSections>
<dataSystems>
<dataSystem name=”iMRP” currentProvider=”SQLProvider”>
<dataProvider name=”MSSqlProvider” type=”SWSystem.Data.Providers.SQLDataProvider” dataFile=”D:\\Zongsoft\\Develop 2005\\SWSystem.Data\\Services\\SWDataEngine.xml” connectionString=”UID=sa;PWD=;Initial Catalog=iMRP;Data Source=127.0.0.1″ />
<dataProvider name=”PostgreSqlProvider” type=”SWSystem.Data.Providers.PostgreDataProvider” dataFile=”D:\\Zongsoft\\Develop 2005\\SWSystem.Data\\Services\\SWDataEngine.xml” connectionString=”Server=127.0.0.1;Port=5432;User Id=postgres;Password=postgres;Database=iMRP;Encoding=UNICODE;” />
<dataModules>
<add name=”StockModule” type=”Zongsoft.Applications.iMRP.Business.StockModule, Zongsoft.Applications.iMRP.Business” />
</dataModules>
</dataSystem>
</dataSystems>
</configuration> \n