如果这个例子过于简单揭示直接使用配置设置的意义,那么想象一个更复杂的场景,一个配置值在一个缓存变量。变量是顺序通过一个链来调用,然后循环使用。如果想要的结果对任何配置的过期及时发现并回答,那么缓存将不起作用。你必须直接访问配置属性(property),不用把它缓存到变量中。配置设置是全局访问的,可以在应用程序的任何地方。这意味着在你的代码中的任何地方都可以访问配置属性(property),而不用缓存变量的值和传递一个变量参数。将使得代码更干净,因为你要求更少的的参数。如果高性能是绝对必要的,是有可能写一个有事件的配置节,当配置数据在磁盘上已经改变能通知使用者。然而,这是一个更高级的主题,将在以后讨论。
11、高级配置主题
本文中概述的信息提供了一个全面地介绍.NET 2.0框架的配置功能特性。然而,这决不是一个全面的文件,并且还有一些更复杂的使用配置节。其他信息将在后面的文章:
解码.NET 2.0配置之谜
破解.NET 2.0配置之谜
12、附录
12.1、附录A: 配置结构的级联
在ASP.NET应用程序中,web.config文件可能针对任何IIS“应用程序”。倘若应用程序的虚拟文件夹是另一个应用程序的孩子,来自父应用程序的web.config文件将和子应用程序的web.config合并。因为IIS中的应用程序可以嵌套任何级别的深度,当子应用应程序的web.config加载时,配置级联将产生。
假设我们有一个站点安装在IIS里,以下面的层次结构且每个web.config文件包含一个共同的集合:
\wwwroot
web.config
\firstapp
web.config
\anotherapp
web.config
\childapp
web.config
\finalapp
web.config
<!-- \wwwroot\web.config -->
<configuration>
<commonCollection>
<add key="first" value="C98E4F32123A" />
<add key="second" value="DD0275C8EA1B" />
<add key="third" value="629B59A001FC" />
</commonCollection>
</configuration>
<!-- \wwroot\firstapp\web.config -->
<configuration>
<commonCollection>
<remove key="first" />
<add key="first" value="FB54CD34AA92" />
<add key="fourth" value="DE67F90ACC3C" />
</commonCollection>
</configuration>
<!-- \wwroot\anotherapp\web.config -->
<configuration>
<commonCollection>
<add key="fourth" value="123ABC456DEF" />
<add key="fifth" value="ABC123DEF456" />
<add key="sixth" value="0F9E8D7C6B5A" />
</commonCollection>
</configuration>
<!-- \wwroot\anotherapp\childapp\web.config -->
<configuration>
<commonCollection>
<remove key="second" />
<remove key="fourth" />
<remove key="sixth" />
<add key="seventh" value="ABC123DEF456" />
<add key="ninth" value="0F9E8D7C6B5A" />
</commonCollection>
</configuration>
<!-- \wwroot\lastapp\web.config -->
<configuration>
<commonCollection>
<clear />
<add key="first" value="AABBCCDDEEFF" />
<add key="second" value="112233445566" />
<add key="third" value="778899000000" />
<add key="fourth" value="0A0B0C0D0E0F" />
</commonCollection>
</configuration>
web.config
\firstapp
web.config
\anotherapp
web.config
\childapp
web.config
\finalapp
web.config
<!-- \wwwroot\web.config -->
<configuration>
<commonCollection>
<add key="first" value="C98E4F32123A" />
<add key="second" value="DD0275C8EA1B" />
<add key="third" value="629B59A001FC" />
</commonCollection>
</configuration>
<!-- \wwroot\firstapp\web.config -->
<configuration>
<commonCollection>
<remove key="first" />
<add key="first" value="FB54CD34AA92" />
<add key="fourth" value="DE67F90ACC3C" />
</commonCollection>
</configuration>
<!-- \wwroot\anotherapp\web.config -->
<configuration>
<commonCollection>
<add key="fourth" value="123ABC456DEF" />
<add key="fifth" value="ABC123DEF456" />
<add key="sixth" value="0F9E8D7C6B5A" />
</commonCollection>
</configuration>
<!-- \wwroot\anotherapp\childapp\web.config -->
<configuration>
<commonCollection>
<remove key="second" />
<remove key="fourth" />
<remove key="sixth" />
<add key="seventh" value="ABC123DEF456" />
<add key="ninth" value="0F9E8D7C6B5A" />
</commonCollection>
</configuration>
<!-- \wwroot\lastapp\web.config -->
<configuration>
<commonCollection>
<clear />
<add key="first" value="AABBCCDDEEFF" />
<add key="second" value="112233445566" />
<add key="third" value="778899000000" />
<add key="fourth" value="0A0B0C0D0E0F" />
</commonCollection>
</configuration>