如何在ASP.NET中管理应用程序配置?

Gle*_*nnS 5 .net c# configuration boo castle-windsor

我在管理ASP.Net应用程序的配置时遇到了困难,无法为不同的客户端部署.需要花费大量不同设置需要花费大量时间,而且当前的配置方法过于复杂,无法使我们将此责任推给支持合作伙伴.

有没有更好的方法来处理这个或好的研究信息来源的建议?

我们目前的工作方式:

  • Web.Config中引用的各种xml配置文件,例如AppSettings.xml.
  • 特定站点的配置保存在重复的配置文件中.
  • 包含特定于站点的数据列表的文本文件
  • 在某些情况下,手动一次性更改数据库
  • Windsor IOC的C#配置.

我们遇到的具体问题:

  • 启用了不同功能的不同站点,我们必须与之交谈的不同外部服务以及不同的业务规则.
  • 不同的部署类型(实时,测试,培训)
  • 配置键在不同版本中更改(添加,删除),这意味着我们必须更新所有重复文件
  • 我们仍然需要能够在应用程序运行时更改密钥

我们目前关于如何处理这个问题的想法是:

  • 将配置移动到动态编译的代码(可能是Boo,Binsor或JavaScript)
  • 有某种形式的差异/合并配置:将默认配置与实时/测试/培训配置和特定于站点的配置相结合

Leo*_*edt 2

无论您采取哪种方式,我认为为您的配置提供单一“事实来源”的概念可能很有价值。

如果您需要以某些组件自己的专门形式为它们提供配置,那么重复是可以的。

但为了保持你的理智,我认为你应该尝试并致力于在一个地方设置与你的应用程序相关的所有配置,然后使用一个定义良好的机制将其转换为 Web.config 中的条目,以及你可以使用的任何其他配置机制。必须支持。

根据您的支持合作伙伴的技能水平(无论他们是否会破坏 XML),我想您可能还想提供一个 GUI 实用程序,让他们转动这个“真实来源”配置文件中的所有旋钮,其中“应用”并运行转换/更新代码以对 Web.config 和其他内容进行必要的更改。

然后,为了管理不同站点/客户的配置,理论上您需要管理大约一个配置文件。

注意:在 ASP.NET 4.0 中,将提供构建时配置转换机制(请参阅http://blog.hmobius.com/post/2010/02/17/ASPNET-40-Part-4-Config-Transformation-Files .aspx),这可能会使此任务变得更容易。看来您可以将其与非网络项目的一些技巧一起使用(请参阅http://philbolduc.blogspot.com/2010/03/using-config-transforms-outside-web.html)。

但是,如果您需要在部署时进行这些更改,您可能会不得不编写自定义工具来执行此操作,尽管看起来 XDT 转换可能是您的最佳选择,因为您希望能够添加/更新/删除项目。