您如何在多个项目中集中配置?

时间:2010-08-31 17:10:20

标签: c# .net wcf configuration config

我有一个包含只读配置的大约10个项目的解决方案。它们是Web应用程序,Windows服务,控制台应用程序等。除了一个项目之外的所有项目都在同一台服务器上。每个项目都有3个环境 - 开发,测试和生产。所以有30种不同的配置,每种配置都有相当多的设置。在每个应用程序和环境中保持配置一致是很麻烦的。

我注意到大多数配置在每个项目中都很常见,所以我认为以某种方式集中配置会很好。我在某处读到WCF服务可能是一个很好的方法。我想也许包含硬编码静态类的库可能实际上工作正常 - 尽管必须编译以更改配置。理想情况下,配置应该来自实际的.config文件。

您如何集中管理多个项目的配置?

4 个答案:

答案 0 :(得分:11)

如果您想维护标准配置界面,请查看ProtectedConfigurationProvider。此提供程序允许您将配置数据存储在标准配置文件之外,根据需要对其进行加密,或以您认为合适的任何方式重定向配置请求:

这种方法的优点在于您现有的应用程序没有任何变化。他们不需要知道他们的配置存储在何处。配置数据的检索在提供程序中被隔离。您可以将其存储在中央文件中,将其存储在数据库中,或通过Web服务访问它。如果您改变主意,则只需更新提供商。其他一切都保持不变。

答案 1 :(得分:2)

您当然可以设置一个WCF服务,该服务具有检索配置设置的简单操作,将应用程序和环境作为参数接收;然后,您可以让服务从文件加载正确的配置并将其返回给调用者。执行嵌套配置文件可能是个好主意,因此常见设置只能在最通用的级别定义一次。

如果在启动您的某个应用程序时WCF服务已关闭,则可能会出现潜在问题 - 您需要确定是否存在针对此情况的上一个副本的默认配置/缓存,或者如果您不这样做允许应用无法连接时启动。

另一件需要考虑的事情是,.NET中的.config文件的好处是,当他们更改应用程序时可以响应;您可能希望有一个回调WCF服务,通知客户端他们的配置是否已在中央服务器上更新,以便他们可以请求新副本并在必要时自行更新。

答案 2 :(得分:1)

由于它们(几乎)都在同一台服务器上,因此您可以考虑在machine.config和/或中央web.config文件中提供默认值。我通常不喜欢使用/更改这些文件,但他们在那里... \Windows\Micsrosoft.NET\Framework<version>\Config\

答案 3 :(得分:0)

您可以使用Lygeum之类的集中式配置服务器,该服务器允许通过带有用户管理和客户端管理模块的Web控制台或命令行界面来管理应用程序和环境,客户端可能是Web应用程序,控制台服务或随你。通过docker安装服务器很简单。

相关问题