2010-08-31 37 views
10

我有一個帶有隻讀配置的約10個項目的解決方案。他們是Web應用程序,Windows服務,控制檯應用程序等。除了一個之外的所有項目都在同一臺服務器上。每個項目有3個環境 - 開發,測試和生產。所以有30套不同的配置,每套都有相當數量的設置。保持每個應用程序和環境中的配置一致很麻煩。您將如何集中管理多個項目的配置?

我注意到大部分配置的是在每個項目中常見的,所以我想這將是很好的集中在某些方面的配置。我在某處讀到WCF服務可能是一個好方法。我想也許一個包含硬編碼靜態類的庫實際上可以正常工作 - 儘管必須編譯才能更改配置。理想情況下,配置應該來自實際的.config文件。

你將如何去集中配置多個項目?

回答

11

如果要維護標準配置界面,請參閱ProtectedConfigurationProvider。此提供程序,可以存儲配置數據的標準配置文件之外,在您認爲合適的任何方式但是它加密你喜歡的,或者重定向配置請求:

這種方法的美妙之處在於,您的現有應用程序沒有任何變化。他們不需要知道他們的配置存儲在哪裏。配置數據的檢索在提供者中是孤立的。您可以將其存儲在中央文件中,將其存儲在數據庫中,或通過Web服務訪問它。如果你改變了主意,你只需要更新你的提供者。其他一切都保持不變。

+0

我記得這個從某個地方;)很好的答案! – 2010-09-01 20:35:50

2

你當然可以設置有一個簡單的操作來獲取配置設置,同時在應用和環境參數的WCF服務;然後您可以讓該服務從文件加載正確的配置並將其返回給調用者。做嵌套的配置文件可能是一個好主意,所以通用設置只能在最通用的層次上定義一次。

如果WCF服務在啓動其中一個應用程序時發生故障,則可能會出現潛在問題 - 您需要確定是否存在針對此情況的前一個副本的默認配置/緩存,或者如果您只是「如果應用程序無法連接,則允許應用程序啓動。

另一個要考慮的,雖然是在.NET的.config文件時,他們改變了應用程序可以迴應的利益;您可能需要一個回調WCF服務,通知客戶端其配置已在中央服務器上更新,以便他們可以請求新副本並在必要時自行更新。

+0

你提出了一些我沒有通過WCF方法做的事情。我贊成你的答案。 – HAL9000 2010-08-31 20:13:44

1

由於它們(幾乎)都在同一臺服務器上,因此可以考慮在machine.config和/或中央web.config文件中提供默認設置。我通常不是使用/更改這些文件的粉絲,但他們在那裏...在\Windows\Micsrosoft.NET\Framework<version>\Config\

+0

不錯的選擇。如果我擁有使用machine.config的服務器。我在一個很大的組織,我們試圖讓服務器構建非常簡單。 – HAL9000 2010-08-31 19:44:53

相關問題