2011-03-07 99 views
2

我們有一個動態組合的應用程序,用戶可以在其中添加服務和操作。此應用程序安裝在服務器羣集上。從數據庫中讀取system.servicemodel部分

由於嚮應用程序添加服務涉及太多的寫入web.config,我想知道是否有可能從數據庫中讀取system.servicemodel部分而不是web.config

似乎微軟的配置實施與其存儲的位置非常緊密。

+2

不是我所知道的 - 我已經嘗試了幾件事,對它進行了相當多的研究 - 沒有取得太大的成功。你當然可以一起構建你自己的WCF配置系統,並在代碼中構建你的綁定等 - 但是我沒有找到任何將標準.NET配置部分放入數據庫的方法,並且.NET從這裏解釋了它: - (沒有提供者模型或任何似乎支持:-( – 2011-03-07 15:30:16

+0

@marc_s:你有沒有試過類似於以下提供的內容?請分享您在研究中發現的事實? – 2011-03-07 21:34:17

+0

@rest wing:確定 - 發送給我一個e - 郵件 - 這是在我的個人資料.... – 2011-03-10 21:39:39

回答

0

沒有「開箱即用」的方式來做到這一點。但是,這是可能的。

幾英尺以下,Configuration類使用FileStream實例,它實際上可以使用任何Stream。這個特定的步驟可以用接口的自定義實現(許多在那裏實現的屬性和方法)來代替。

特別有趣的是OpenStreamForReadOpenStreamForWrite,兩者都返回Stream實例。在那裏,您可以將邏輯從數據庫中將配置節的XML抽取到ConfigurationSection實例中,並將ConfigurationSection實例作爲XML抽取到數據庫中。

下一步是創建一個Configuration類的實例。然而,在這裏我們必須變髒,因爲它的構造函數永遠不會離開System.Configuration王國。需要使用反射來達到和使用它。我建議實施IInternalConfigConfigurationFactory來包裝反射魔法。

Configuration Create(Type typeConfigHost, 
    params object[] hostInitConfigurationParams); 

作爲第一個參數傳遞實現的配置主機的類型。

當我們有Configuration實例後,我們可以使用它自定義的ServiceHost,ChannelFactory<T>DuplexChannelFactory<T>