2009-06-12 85 views
0

假設我有一個大的.NET解決方案,它有一些其他項目類型(如控制檯應用程序和Web應用程序)使用的數據訪問項目。我希望他們都能夠使用數據訪問項目,但數據訪問應用程序必須從其配置文件中獲取配置...所以web.config用於Web項目,而app.config用於控制檯/服務應用程序。這使得我必須在兩個或多個單獨的配置文件中維護配置,這是我不喜歡的。 將他們置於中央位置的最佳方式是什麼?.NET:集中分割配置

我希望它仍然是輕量級的,所以配置數據庫可能會矯枉過正。我想可能是一個集中的配置文件,通過構建過程複製到web.config/app.config當各自的項目建成,但我想確保我不會錯過另一個最佳實踐的地方。我也想過machine.config,但我想盡可能地隔離配置,以免潛在地破壞給定機器上的其他應用程序。而且,通過使用machine.config,我不得不找出一種方法讓build腳本自動更新該文件。

回答

1

該模型運行得非常好 - 我們大多數更重要的應用程序都是具有多個Web和命令行應用程序的多頭獸,需要共享一些相同的配置信息。一個很好的訣竅是濫用配置元素的configSource屬性來打破特定應用程序中的「中心」部分。

2

幾個可能的解決方案:

  1. 如果您所有的解決方案都將被部署到同一個地方(如Web服務器/場),你可以使用machine.config文件來存儲通用數據訪問配置如連接字符串。

  2. 將您的通用配置拆分爲單獨的配置文件(例如common.config),並使用主配置文件中的configSource屬性指向常用配置。如果您使用某種源代碼控制,則應該讓您在項目之間共享公共文件,因此所有使用該文件的人都會對其進行更改。

0

如何:

  • 定義數據訪問項目

  • 的配置文件中的「開發/分期/生產的」設置讓客戶端(應用程序)定義什麼他們想要使用的設置類型,例如在數據訪問模塊 -

... = DataAccess.UserGateway.Create(DataAccess.Config.Dev);

和不同的configs的名稱的字符串常量在一個地方只定義。

另一方面,我非常喜歡在構建/部署時複製配置 - 它非常乾淨。