在决定分布基于.Net框架的应用程序之前,要决定怎样管理公共程序的设置。要提高代码的重用率和应用程序的互用性,所有的应用程序 – WEB, Windows, Web服务,Windows 服务都要使用应用配置文件作为公共的方法来管理以应用为中心的信息。
当.NET的公共语言运行库(CLR)执行应用程序的时候,它会使用一系列的XML配置文件来设置运行环境的基本属性。举例说,如果执行WEB应用程序,那么CLR就会询问WEB.config文件来确定以下的设置,包括认证模式(Forms, Windows,或者没有),认证的用户,会话状态设置(InProc, StateServer, or SQL),以及其他关键设置。
和上面一样,Machine.config系统文件提供整个网站的ASP.NET配置设定,并设置用于ASP.NET应用的Web.config中的基础设定。Security.config 和 EnterpriseSec.config定义系统范围内的安全和代码权限设置,它应用于Windows应用程序。
如果应用程序需要运行在相同的运行环境中,默认的设置就可以满足需求并运行良好。但是,如果需要特定配置提供给基于应用的应用程序,可以将这些信息存储到特定的由CLR认可的文件,并由应用程序来调用。
.NET应用的信息存储在应用执行的目录下,以.config作为文件扩展名。应用程序的全文件名可以作为配置文件的前缀名:
applicationname.exe.config
<也可以通过使用SYSTEM.CONFIGURATION命名空间程序化的从XML.config文件取得应用程序设定。下面的应用程序配置文件样例显示了应用程序中存储的连接字符串。
<configuration>
<appSettings>
<add key="ConnectionString" value="Provider=SQLOLEDB.1;..."/>
</appSettings>
</configuration>
将应用程序配置信息存储到外部文件更新应用程序的属性而不用重新编译整个程序。比如,假设正在开发基于SQL数据库的应用程序,如果将连接信息写入程序内部。当数据库转移到另外的服务器上,就需要重新编译并且重新分发程序来适应这个改变。如果使用.config文件,要做的事情仅仅是在.config文件中改动ConnectionString键。
要更有效的使用.config文件,需要为该应用程序创建键名和值的标准定义,该定义将作为整个开发团队的标准,这就允许在同一项目工作的开发者使用同一个项目设定。这个标准在分发应用程序并交付生产时也非常有用。一旦标准化.config设置,运作组就会知道当公共应用程序配置相关问题发生时哪里是首先应该进行检查和排错的。