.NET:集中拆分配置

时间:2009-06-12 14:47:51

标签: .net configuration

假设我有一个大型.NET解决方案,其中包含一些其他项目类型使用的数据访问项目,例如控制台应用程序和Web应用程序。我希望他们都能够使用数据访问项目,但数据访问应用程序必须从其配置文件中获取配置...所以web.config用于web项目,app.config用于控制台/服务应用程序。这使得我必须在两个或多个单独的配置文件中维护配置,这是我不喜欢的。 将他们带入集中位置的最佳方式是什么?

我希望它仍然是轻量级的,因此配置数据库可能过度。我想也许是一个集中的配置文件,当构建相应的项目时,它会被构建过程复制到web.config / app.config,但我想确保我不会错过某个地方的另一个最佳实践。我也考虑过machine.config,但是我想尽可能地隔离配置,以免潜在地破坏给定机器上的其他应用程序。而且,通过使用machine.config,我必须想办法让构建脚本自动远程更新该文件。

3 个答案:

答案 0 :(得分:2)

一些可能的解决方案:

  1. 如果要将所有解决方案部署到同一个地方(例如Web服务器/服务器场),您可以使用machine.config文件存储公共数据访问配置,例如连接字符串。< / p>

  2. 将您的常用配置拆分为单独的配置文件(例如common.config),并使用主配置文件中的configSource属性指向常用配置文件。如果您使用某种源代码控制,这应该允许您在项目之间共享公共文件,因此所有使用它的人都会选择对其进行一次更改。

答案 1 :(得分:1)

该模型运行良好 - 我们大多数更重要的应用程序都是具有多个Web和命令行应用程序需要共享一些相同配置信息的多头应用程序。一个好方法是滥用配置元素的configSource属性来打破特定应用程序部分的“中心”部分。

答案 2 :(得分:0)

这个怎么样:

  • 在数据访问项目的配置文件中定义“dev / staging / production”设置

  • 让客户(应用)定义他们想要使用的设置类型,例如

... = DataAccess.UserGateway.Create(DataAccess.Config.Dev);

和不同配置名称的字符串常量只在一个地方定义 - DataAccess模块​​。

另一方面,我在构建/部署时复制配置很多 - 它太干净了。