代码之家  ›  专栏  ›  技术社区  ›  realworldcoder

处理多个配置文件实例的最佳方式?

  •  9
  • realworldcoder  · 技术社区  · 15 年前

    我们运行的是一个用C#.NET3.5编写的复杂系统,包括20多个网站、10多个windows服务以及各种计划任务和帮助应用程序。

    每一个都与我们的一个或多个框架和业务逻辑DLL捆绑在一起。 这些DLL有大量的配置设置,这已经变成了一场噩梦,我们要为同一类库的多个实例维护超过40个配置文件。

    由于各种原因,我们不在GAC中注册DLL: 1) 我们喜欢在不重建整个系统或造成不必要的停机时间的情况下,快速地将更改部署到选定项目中的灵活性。

    我们考虑将默认值保存在计算机配置但这是一个任务,太杂乱,充满了与我们的项目无关的重要东西。

    我们当前的“解决方案”是使用我们自己的配置文件格式,首先检查当前项目的“bin”文件夹中的配置,如果不存在,则从硬编码的中心位置加载。这允许我们在必要时覆盖设置,但在其余时间使用默认设置。

    最终我们想要的是将每个类库的默认设置放在一个中心位置,然后每个实例都可以有一个可选的配置文件,该文件只覆盖那些与默认设置不同的设置。

    在.NET中有没有一种建议的、行业标准的方法来解决这个问题?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Joshua Cauble    15 年前

    为什么不在同一个数据库里配置?我相信企业框架甚至有适配器,您可以插入适配器来实现这一点。

    我知道在我们公司,因为我们的网站运行在webfarms中,所以我们会将配置存储在数据库中,如果我们需要更改某些内容,我们将使用数据库脚本更新配置。不需要推到网站,只需重新启动网站或触摸web.config文件强制重新装载。

    所以我想我要说的是,如果他们都在同一个公司/势力范围内,那么你可以使用一个对他们都很重要的数据库,只要使用数据库。

        2
  •  0
  •   Gyuri    15 年前

    我会使用OpenExeConfiguration( http://msdn.microsoft.com/en-us/library/ms224437.aspx

    您可以将默认值保留在“中心”位置,授予对它的所有应用程序的读访问权限,并让本地配置驻留在您的应用程序附近。

        3
  •  0
  •   Pag Sun    15 年前

    您是如何部署这些网站和应用程序的?系统中的这些模块是否在同一台计算机上运行?这些模块是否从特定目录调用DLL?

    如果在同一台机器中可以使用配置文件,如果在服务器场中,则可能需要Joshua之前所说的数据库。

    如果您只需要将某个配置节重写为通用配置文件,可以先从中心位置加载默认值,然后在每个项目中加载特定配置,然后在运行时修改配置对象。