我在app.config中有很多东西,当需要更改时,需要重新启动应用程序。我的24x7网络服务器系统不好(它真的是24x7,甚至不是23x7)。我想使用一个好的策略将配置信息保存在数据库表中,并根据需要查询/使用它。我用谷歌搜索了一下,然后干涸了。在重新发明轮子之前,有没有人有任何建议?
感谢。
答案 0 :(得分:0)
我最近的应用程序需要这个,并且不能使用任何特定于应用程序服务器的技术,因为我需要在cronjobs上运行一些控制台应用程序来访问它们。
我基本上创建了几个小表来创建一个注册表样式的配置数据库。我有一个键表(它们都有父键,所以它们可以按树结构排列)和一个附加到键的值表。所有键和值都已命名,因此我的访问函数如下所示:
openKey("/my_app");
createKey("basic_settings");
openKey("basic_settings");
createValue("log_directory","c:\logs");
getValue("/my_app/basic_settings","log_directory");
树结构允许您在逻辑上分隔相似的数据(例如,您可以在几个不同的键下具有“log_directory”值),并避免在属性文件中找到过于冗长的名称。
所有值都只是字符串(db中的varchar2),因此在转换布尔值和数字时会有一些开销:但它只是配置数据,所以谁关心?
我还创建了一个“settings_changed”值,其中包含一个日期时间字符串:所以任何应用程序都可以快速判断是否需要刷新它的配置(显然你需要记住在更改任何内容时设置它)。
可能已经有工具来做这种事情了:但这只是一天的编码和工作。我添加了命令行工具来编辑和上传/下载部分或全部树,然后在Java Swing中创建了一个快速的图形编辑器。