2011-08-27 108 views
1

考慮一個ASP.NET MVC應用程序,它依賴於配置數據,這對於存儲在web.config中的存儲來說並不理想。當數據變得太大以至於web.config時該怎麼辦

該數據大部分是自由文本,例如Web應用程序啓動時加載的文檔模板和標記。對於web.config存儲來說這被認爲是不理想的,因爲它非常大。在存儲

思想至今都:

  • 存儲在數據庫中:從HTTP請求理想的可擴展性和保護。但是需要額外的應用程序代碼來管理數據。
  • 存儲在文件系統:適用於可交換文件,但對HTTP請求敏感。

你是怎麼解決這個問題的?

編輯

到目前爲止提供的答案是偉大的,但讓我闡述一下這裏的條件,所以我們可以更接近的解決方案。這是一個Web應用程序,將由感興趣的人下載並安裝在他們自己的Web服務器上。這些人可能希望定製應用程序的某些方面。 web.config文件非常適用於許多事情:SMTP服務器設置,連接字符串和其他名義值。

但是,該應用程序也從較重的配置中拉出來,比如一系列文件模板 - 用HTML編寫,以及簡單的特定於域的標記。其中一些有些大。

存儲在web.config中

存儲在web.config中這個數據將需要一些相當有份量的配置元素。在我的自定義節的元素可能會開始看起來像這樣:

<template key="..."><![CDATA[ 
    (very large text here) 
]]></template> 

我不具備的撬動一個web.config的ConfigurationElement的「的innerText」在這個莊園的方式瞭解。也許是IConfigurationSectionHandler的老。

存儲在數據存儲

SQL Server 2008中正在隨着實體框架4.寫一個單獨的輔助應用程序,或者包括控制器和視圖的數據庫來管理這些配置使用並沒有真正的符合應用程序的設計路徑;這可能是我自己的錯,因爲之前沒有考慮過它。要求用戶在Management Studio中更正這些字段並不是跳過編寫UI的可接受方式。文件系統

將數據放置在一個或多個文件的文件系統上

存儲允許主機計算機上輕鬆訪問和或多或少消除了對用戶界面或Management Studio中的需要。但是,這些文件不能通過HTTP請求訪問。 Web.config受IIS保護,這些文件需要類似的保護。

存儲在資源

我真的不能提供這種方法的任何投訴。我們將不得不重新編譯應用程序以更新配置是否正常。

+0

額外的應用程序代碼來管理數據庫中的配置數據可以很簡單,SSMS可用於大部分是(或你的數據庫服務器的等價物) –

+0

我會出於一個簡單的原因,可維護性,請去數據庫。如果你的應用程序是一個關鍵的業務組件,那麼很可能你需要冗餘,並且最簡單的方法是在網絡端實現這一點,恕我直言,就是使用網絡農場。這意味着您將擁有兩臺或更多臺服務器,並且每次更改模板時都需要確保更新所有服務器。在數據庫中配置這種配置有助於數據庫更新,確保所有Web服務器只需一次更新即可看到新數據,如果操作正確,則無需停機。 –

回答

4

還有另一種選擇 - 資源,這會給你的數據訪問建立的機制,但需要在每一個文字的改變,你的應用程序的重新編譯。

存儲此類數據的最佳方式是數據庫,但是如果您不想將數據庫連接到應用程序 - 使用文件。文件訪問將很容易地在網絡服務器級別進行管理,所以它不應該是一個問題。

2

從目前的狀態看未來前景的問題。

如果它有望擴大需要在內容搜索的最佳選擇是數據庫 - 它是爲它

創建如果它不會和你只需要證明它的內容給用戶那麼文件系統就足夠了。

HTH

伊沃Stoykov

相關問題