2008-12-11 144 views
2

我只查看BlogEngine.Net源代碼,並對它如何存儲應用程序設置很感興趣。(web.config | app.config)中的配置設置與靜態類對象

代替使用我習以爲常的web.config或app.config,源代碼使用一個使用單例模式實現的靜態類對象來實現應用程序設置。信息仍然存儲在設置文件中,但任何調用信息都是通過將所有信息預載入屬性值的類對象完成的。

不同方法的優點?

回答

5

如果您有一個可以更改配置設置的管理區域,寫入web.config將導致應用程序重新啓動並且所有用戶都丟失會話數據。使用單獨的配置文件可以防止這種情況發生。

+3

如果使用持久性會話管理系統(即SQLServer或ASP.Net狀態服務器),根據我的測試,這不會導致會話丟失。 – JamesEggers 2009-01-07 15:17:22

1

該模型的一個嚴重缺陷是無法提取在應用程序之外進行的更改。由於配置設置在啓動時加載並保存在內存中,所有更改都必須通過管理頁面或應用程序脫機進行。

+0

更新web.config時,Web應用程序會自動循環。 – Kon 2009-01-07 15:08:50

0

有優點和缺點有屬性作爲配置設置訪問器。

一方面,擁有這樣一個有屬性的類爲開發團隊提供了更好的組織和更可重用的代碼。

另一方面,每當你添加一個新的配置設置,你將不得不更新類和重建應用程序?

0

根據我的理解,web.config文件在應用程序啓動時加載到緩存中。我很長時間沒有看這個,所以我可能會誤解。如果這是真的,那麼我真的不明白爲什麼單身,靜態類模式會有好處。如果使用ASP.Net狀態服務或SQL狀態服務器代替默認的進程內會話管理,則重新啓動Web應用程序(通過IIS或通過修改配置)不會影響會話。總而言之,我不完全確定爲什麼blogengine.net會走這條路。