C# 如何在ASP.NET中管理应用程序配置?
我很难管理ASP.Net应用程序的配置,以便为不同的客户端进行部署。需要旋转的各种设置数量庞大,占用了大量时间,而当前的配置方法过于复杂,无法让我们将这一责任推到支持合作伙伴身上 有没有更好的方法来处理这个问题的建议,或者有什么好的信息来源来进行研究 我们目前的做法:C# 如何在ASP.NET中管理应用程序配置?,c#,.net,configuration,castle-windsor,boo,C#,.net,Configuration,Castle Windsor,Boo,我很难管理ASP.Net应用程序的配置,以便为不同的客户端进行部署。需要旋转的各种设置数量庞大,占用了大量时间,而当前的配置方法过于复杂,无法让我们将这一责任推到支持合作伙伴身上 有没有更好的方法来处理这个问题的建议,或者有什么好的信息来源来进行研究 我们目前的做法: Web.Config中引用的各种xml配置文件,例如AppSettings.xml 特定站点的配置保存在重复的配置文件中 包含特定于站点的数据列表的文本文件 在某些情况下,手动一次性更改数据库 温莎国际奥委会的C#配置 我们面
- Web.Config中引用的各种xml配置文件,例如AppSettings.xml
- 特定站点的配置保存在重复的配置文件中
- 包含特定于站点的数据列表的文本文件
- 在某些情况下,手动一次性更改数据库
- 温莎国际奥委会的C#配置
- 启用了不同功能的不同站点、我们必须与之交谈的不同外部服务以及不同的业务规则
- 不同的部署类型(现场、测试、培训)
- 配置键在不同的版本之间变化(添加、删除),这意味着我们必须更新所有重复的文件
- 我们仍然需要能够在应用程序运行时更改密钥
- 将配置移动到动态编译的代码中(可能是Boo、Binsor或JavaScript)
- 具有某种形式的差异/合并配置:将默认配置与实时/测试/培训配置以及特定于站点的配置组合在一起
public class ConfigurationStore
{
private static ConfigurationStore _instance = null;
public static ConfigurationStore Instance {
get {
if(_instance == null)
{
_instance = new ConfigurationStore();
}
return _instance;
}
}
public string GetValue(string key)
{
....
}
public Object GetObject(string key)
{
...
}
}
您可以考虑查看自动化脚本,结合一些自定义.NET实用工具来操作配置密钥。
无论您走哪条路,我认为对于您的配置都有一个单一的“真实来源”的概念是有价值的。 如果您需要以特定的形式为某些组件提供配置,则可以进行复制 但为了保持理智,我认为您应该尝试在一个地方设置与应用程序相关的所有配置,然后在Web.config中设置一个定义良好的机制将其转换为条目,以及您必须支持的任何其他配置机制 根据您的支持合作伙伴的技能水平(无论他们是否会破坏XML),我想您可能还希望提供一个GUI实用程序,让他们旋转此“真理之源”配置文件中的所有旋钮,“应用”并运行转换/更新代码,以对Web.config和friends进行必要的更改 然后,为了管理不同站点/客户的配置,理论上您需要管理大约一个配置文件 注意:在ASP.NET 4.0中,将提供构建时配置转换机制(请参阅),这可能会使此任务更容易。似乎您可以将其与一些非web项目的黑客一起使用(请参阅)但是,如果您需要在部署时进行这些更改,那么您可能需要编写自定义工具来完成此操作,尽管XDT转换似乎是您的最佳选择,因为您希望能够添加/更新/删除项。最后,我使用了一个合并配置系统。配置文件存储在树中。加载密钥时,它首先查找最特定的版本(站点和部署类型),然后依次查找更多常规文件,直到找到密钥。我从这一切中学到的主要一点是,在源代码管理中管理所有的配置是非常有帮助的。8年后回顾我以前的StackOverflow问题,我发现这个建议是多么明智。