2011-07-22 42 views
0

我在app.config中有很多東西,當需要更改時,需要重新啓動應用程序。對我的24x7網絡服務器系統不利(它確實是24x7,甚至不是23x7)。我想使用一個好的策略來保存配置信息在數據庫表中並根據需要查詢/使用它。我搜索了一下,現在幹了。在我重新發明輪子之前有沒有人有任何建議?DB中的配置信息?

謝謝。

+0

我從來沒有成功地獲得標準的.NET配置到一個數據庫 - 再次進入.NET得到它'ConfigurationSection'看來幾乎是不可能的,很遺憾。 Tellago工作室已經宣佈[TeleSharp(http://tellagostudios.com/products/telesharp%E2%84%A2)這是應該解決這個問題 - 但它聞起來像一個相當昂貴的企業解決方案..... –

回答

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目錄」的值),並避免了在屬性文件中找到的過於冗長的名稱。

所有值都只是字符串(在數據庫VARCHAR2),所以不應該將布爾值和號碼一些開銷:但它只是配置數據,所以誰在乎呢?

我還創建了一個「settings_changed」值,其中包含一個日期時間字符串:因此任何應用程序都可以快速判斷是否需要刷新其配置(儘管如此,顯然需要記住設置它)。

可能有工具,有已經做這樣的事情:但這只是一個天的編碼和工作的一種享受。我添加了命令行工具來編輯和上傳/下載部分或全部樹,然後在Java Swing中創建了一個快速圖形編輯器。