繁体   English   中英

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

[英]How would you centralize configuration across multiple projects?

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

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

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

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

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

你当然可以设置一个 WCF 服务,它有一个简单的操作来检索配置设置,将应用程序和环境作为参数; 然后,您可以让服务从文件加载正确的配置并将其返回给调用者。 嵌套配置文件可能是一个好主意,这样公共设置只在最通用的级别定义一次。

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

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

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

您可以使用像Lygeum这样的集中配置服务器,它允许通过 Web 控制台或带有用户管理和客户端管理模块的命令行界面来管理应用程序和环境,在您的情况下,客户端可能是 Web 应用程序、控制台服务或其他任何东西。 服务器安装通过docker很简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM