在你开始部署.NET应用程序以前,你必须确定自己所在的机构该如何管理公共的应用程序设置。为了提升代码的重用性以及应用程序的互操作性,你所有的应用程序,Web、Windows、Web服务、Windows服务等等都应该采用应用程序配置文件作为集中管理应用程序信息的通用方法。
系统配置和应用程序配置
在.NET的公共语言运行时(CLR)执行你的应用程序时,它会用到一系列的XML配置文件来设置程序执行环境的基本属性。例如,假如你正在执行一个Web应用程序,那么CLR就会查询Web.config文件确定相应的认证模式(表单、Windows或没有)、授权用户、会话状态设置(InProc、StateServer或SQL)以及其他关键设置等。
同样的,Machine.config系统文件为Web服务器整体提供了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 Server上的数据库,你决定在应用程序中直接编写连接信息代码。现在你想把数据库迁移到另一个不同的服务器。因为连接信息在应用程序中是设死的,所以你必须修改、重新编译和重新部署这个应用程序以完成相应的修改。但是,如果你采用了.config文件保存设置的方式,那么应用程序的变化就只是修改 .config文件中的ConnectionString键而已。
统一规则
为了有效地利用.config文件,你应当创建标准的键名和值定义供所有的应用程序开发人员所用。这样就可以让同一项目的开发人员采用公共的项目设置。这些标准在部署应用程序和将其转化为产品的时候非常有用。假如你对.config设置进行了标准化,那么你运做的开发组在需要解决公共应用程序配置设置问题的时候就能知道首先该从哪里获取信息。