2011-01-21 54 views
1

我正在尋找有關我應該在哪裏存儲應用程序配置數據和默認文本值的反饋,這些數據將具有最佳性能。例如,我一直堅持像默認URL值和web.config中的錯誤消息或應用程序指令的默認文本,但現在我想知道這是否會擴展....如果它甚至是正確的事情首先要做的事情。哪些性能更​​好 - 在AppSettings或數據庫中配置?

回答

0

如果數據庫是在同一臺機器的性能差異可能會忽視,能。如果您需要通過電線連接到某個數據庫,那麼它很可能會比較慢,那麼可以直接訪問而不是太大的web.config。

我真的希望在這裏保持簡單,只需使用web.config即可。它可能已經被一些系統組件緩存在內存中。如果你覺得它太慢測量它,然後可能會去一個更復雜的解決方案。

話雖如此,你可以簡單地讀取應用程序啓動時的所有配置並將其保存在內存中。這樣,任何性能差異都會緩解到應用程序的啓動時間。您還可以在啓動時驗證配置文件。

不確定您的默認設置,只是問問自己他們是否特定於環境,是否真的想要更改而不需要重新編譯。作爲配置文件,用例是什麼?一些操作人員或開發人員是否會設置這些默認設置?你打算記錄它們嗎?你打算讓你的應用程序對任何配置都健壯嗎? 這些默認設置將用於多個環境/安裝(例如用於本地化)嗎?那麼也許最好使用不同的獨立文件,在需要時可以單獨重新部署。

0

設置多久會發生變化?

如果他們永遠不會改變,你可以將它們放在web.config中,並配置IIS,以便它不監視文件的變化。這將會導致一個小的啓動罰款,但在此之後,不應該有性能損失。

但說實話,大概有幾十個其他地方,以提高你開始擔心在此之前 - 還記得,「Premature Optimization is the root of all evil」 :)

+0

大多數設置可能不會更改太頻繁,但多久未知。正如我下面所說的,我不是「擔心」這個......我只是在尋找關於這個問題的反饋。 – Cognitronic 2011-01-21 16:15:35

3

正如前面提到的,這實在不應該事 - 設置,無論是在web.config或數據庫中,應該是「只讀」,然後緩存,所以這真的不重要。

我幾乎可以保證你的代碼的其他部分會比這慢得多。


作爲一個側面說明,而不是性能相關的,但是如果你需要擔心的網站的正常運行時間,你可以在飛行數據庫編輯配置,但改變的web.config將導致AppDomain重新啓動和隨後會議的損失。

+0

好吧,只是要清楚...我並不擔心這一點,因爲我只是在尋找有關其他人如何存儲其配置數據的反饋。在初始載荷和後續載荷過程中,性能的差異會對我有什麼影響。這個問題不關心我的代碼的其他部分,因爲它最後加起來......對吧? – Cognitronic 2011-01-21 16:13:03