【发布时间】:2010-03-23 14:08:26
【问题描述】:
我在管理要为不同客户端部署的 ASP.Net 应用程序的配置时遇到了困难。大量不同的设置需要摆弄占用大量的时间,而当前的配置方法过于复杂,我们无法将这项责任推给支持合作伙伴。
对于处理此问题的更好方法或研究的良好信息来源有什么建议吗?
我们目前是怎么做的:
- Web.Config 中引用的各种 xml 配置文件,例如 AppSettings.xml。
- 特定站点的配置保存在重复的配置文件中。
- 包含网站特定数据列表的文本文件
- 在某些情况下,手动一次性更改数据库
- Windsor IOC 的 C# 配置。
我们遇到的具体问题:
- 启用了不同功能的不同站点、我们必须与之交谈的不同外部服务以及不同的业务规则。
- 不同的部署类型(实时、测试、培训)
- 配置键随版本变化(添加、删除),这意味着我们必须更新所有重复的文件
- 我们仍然需要能够在应用程序运行时更改密钥
我们目前对如何解决此问题的想法是:
- 将配置移动到动态编译的代码(可能是 Boo、Binsor 或 JavaScript)中
- 具有某种形式的差异/合并配置:将默认配置与实时/测试/培训配置和特定于站点的配置相结合
【问题讨论】:
-
最后我选择了一个合并配置系统。配置文件存储在树中。加载密钥时,它首先查找最具体的版本(站点和部署类型),然后依次查找更通用的文件,直到找到密钥。我从这一切中学到的主要一点是,拥有您必须在源代码管理中管理的所有配置非常有帮助。
标签: c# .net configuration castle-windsor boo