簡體   English   中英

您將如何在多個項目中集中配置?

[英]How would you centralize configuration across multiple projects?

我有一個包含大約 10 個只讀配置項目的解決方案。 它們是 Web 應用程序、Windows 服務、控制台應用程序等。除一個之外的所有項目都在同一台服務器上。 每個項目都有 3 個環境 - 開發、測試和生產。 所以有 30 組不同的配置,每組都有相當數量的設置。 在每個應用程序和環境中保持配置一致是很麻煩的。

我注意到大多數配置在每個項目中都是通用的,所以我認為以某種方式集中配置會很好。 我在某處讀到 WCF 服務可能是一種好方法。 我想也許一個包含硬編碼靜態類的庫實際上可以正常工作 - 盡管必須編譯以更改配置。 理想情況下,配置應該來自實際的 .config 文件。

您將如何為多個項目集中配置?

如果要維護標准配置接口,請查看ProtectedConfigurationProvider 此提供程序允許您將配置數據存儲在標准配置文件之外,根據您的喜好對其進行加密,或以您認為合適的任何方式重定向配置請求:

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

你當然可以設置一個 WCF 服務,它有一個簡單的操作來檢索配置設置,將應用程序和環境作為參數; 然后,您可以讓服務從文件加載正確的配置並將其返回給調用者。 嵌套配置文件可能是一個好主意,這樣公共設置只在最通用的級別定義一次。

如果 WCF 服務在啟動您的一個應用程序時關閉,則可能會出現潛在問題——您需要決定是否存在針對這種情況的先前副本的默認配置/緩存,或者您是否只是不允許應用程序如果無法連接,則啟動。

不過,另一件要考慮的事情是 .NET 中的 .config 文件的好處,因為當它們更改時,應用程序可以響應; 您可能希望有一個回調 WCF 服務,如果客戶端的配置已在中央服務器上更新,則通知客戶端,以便他們可以請求新副本並在必要時自行更新。

由於它們(幾乎)都在同一台服務器上,您可以考慮在machine.config和/或中央web.config文件中提供默認值。 我通常不喜歡使用/更改這些文件,但它們在那里......在\\Windows\\Micsrosoft.NET\\Framework<version>\\Config\\

您可以使用像Lygeum這樣的集中配置服務器,它允許通過 Web 控制台或帶有用戶管理和客戶端管理模塊的命令行界面來管理應用程序和環境,在您的情況下,客戶端可能是 Web 應用程序、控制台服務或其他任何東西。 服務器安裝通過docker很簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM