2014-10-10 76 views
0

我們在某些服務器上有一組VB.NET/IIS Web服務,並且它們在網站的根目錄中有web.config文件,它們已經在閱讀配置。有一種新的配置需要被添加,它會立即比其他配置長得多,並且它只會成長。它本質上是一個以逗號分隔的值,我希望將其專門保存在某種配置文件中。web.config與用於存儲逗號分隔值的文本文件

起初我開始用文本文件做這個,但是有一個問題。當Web服務線程和進程正在運行時,文本文件的內容可能會發生變化,因此每次需要訪問其值時都需要重新讀取該文件。我想過使用某種緩存,但除非每次更新文件時都重新啓動Web服務,否則緩存會阻止立即使用文件的更新。但每次從文本文件中讀取都很慢...

然後,將這個值放在web.config中,以及服務已經使用的其他配置。當web.config被改變時,這些改變可以被緩存在代碼中,在立即進入遊戲之前。然而,web.config是web.config,它不是一個完全不重要的文本文件,只是簡單地從代碼中讀出。 IIS以特殊方式處理web.config。

我很想去考慮在web.config中放置一個逗號分隔值的任何負面影響,將它們存儲在文本文件(或數據庫,可能不能用於這反正),但我想我最好問。

在web.config中存儲一個可能很長的逗號分隔值而不是它自己的小文本文件會產生什麼影響?要麼是文件特別好還是壞主意?對我來說,似乎web.config很容易相處,而不必一遍又一遍地重新讀取文件,但肯定比普通用戶意識到的要多。謝謝!

+1

頻繁請問這數據的變化?如果是這樣,web.config將是一個壞主意。每次更改web.config時,應用程序池都會被回收。 – Namrehs 2014-10-10 13:22:27

+0

@Namrehs它的變化頻率可能會有小幅上升,但大多數情況下,它應該相當穩定。 – Panzercrisis 2014-10-10 13:23:34

+1

@Namrehs這很有啓發。你想用它作爲答案嗎? – Panzercrisis 2014-10-10 14:11:17

回答

1
+0

其他人的一點信息:一旦給定的文件被改變,Cache對象中的鍵值對就可以被設置爲無效。將這與將逗號分隔的列表放在文本或csv文件中相結合,您可以非常接近所有世界中最好的。這些值被緩存直到文件再次被更改,然後它們可以被立即重新應用,您不會持續讀取文件,應用程序池不會被回收等等。唯一需要注意的是,您可能擁有以完全限定對Cache對象的引用的名稱... – Panzercrisis 2014-10-10 14:29:56

+0

...不像他們的文檔所暗示的那樣只是說'Cache(「myKey」)',你可能不得不說'System.Web.HttpContext.Current .Cache( 「的myKey」)'。另一個解決方法是存儲對「System.Web.HttpContext.Current.Cache」的引用,以便您不必每次輸入太多內容 - 可選地調用引用本身「Cache」。 – Panzercrisis 2014-10-10 14:33:16