【问题标题】:.NET: centralizing split configuration.NET:集中拆分配置
【发布时间】:2010-11-02 11:45:17
【问题描述】:

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

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

【问题讨论】:

    标签: .net configuration


    【解决方案1】:

    该模型运行良好——我们大多数更重要的应用程序都是多头野兽,具有多个需要共享一些相同配置信息的 Web 和命令行应用程序。一个好的技巧是滥用配置元素的configSource 属性,将“中心”部分从应用程序特定部分中分离出来。

    【讨论】:

      【解决方案2】:

      几个可能的解决方案:

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

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

      【讨论】:

        【解决方案3】:

        这个怎么样:

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

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

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

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

        另一方面,我非常喜欢在构建/部署时复制配置 - 它非常干净。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-15
          • 1970-01-01
          • 1970-01-01
          • 2011-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-09
          相关资源
          最近更新 更多