【问题标题】:Configuration Information in DB?数据库中的配置信息?
【发布时间】:2011-10-11 08:51:20
【问题描述】:
我在 app.config 中有很多东西,当需要更改时,需要重新启动应用程序。对我的 24x7 Web 服务器系统不利(实际上是 24x7,甚至不是 23x7)。我想使用一个好的策略将配置信息保存在数据库表中并根据需要查询/使用它。我用谷歌搜索了一下,然后就干了。在我重新发明轮子之前,有人有什么建议吗?
谢谢。
【问题讨论】:
-
我从未设法将标准的 .NET 配置导入数据库 - 不幸的是,再次将其导出并导入 .NET ConfigurationSection 似乎几乎是不可能的。 Tellago Studios 宣布了TeleSharp,它应该可以解决这个问题 - 但它闻起来像是一个相当昂贵的企业解决方案......
标签:
configuration
app-config
configuration-management
【解决方案1】:
我最近的应用程序正是需要这个,并且不能使用任何特定于应用程序服务器的技术,因为我还需要在 cronjobs 上运行一些控制台应用程序来访问它们。
我基本上制作了几个小表来创建注册表样式的配置数据库。我有一个键表(它们都有父键,因此它们可以排列在树结构中)和一个附加到键的值表。所有键和值都被命名,所以我的访问函数如下所示:
openKey("/my_app");
createKey("basic_settings");
openKey("basic_settings");
createValue("log_directory","c:\logs");
getValue("/my_app/basic_settings","log_directory");
树结构允许您在逻辑上分离相似的数据(例如,您可以在多个不同的键下拥有一个“log_directory”值)并避免在属性文件中找到过于冗长的名称。
所有值都只是字符串(数据库中的 varchar2),因此在转换布尔值和数字时会有一些开销:但它只是配置数据,所以谁在乎呢?
我还创建了一个“settings_changed”值,其中包含一个日期时间字符串:因此任何应用程序都可以快速判断它是否需要刷新它的配置(但你显然需要记住在更改任何内容时进行设置)。
可能已经有工具可以做这种事情:但这只是一天的编码时间,而且很享受。我添加了命令行工具来编辑和上传/下载部分或全部树,然后在 Java Swing 中制作了一个快速的图形编辑器。