2010-01-02 70 views
2

我有一個ASP.NET應用程序,需要存儲一些設置。ASP.NET和存儲動態數據 - XML或數據庫?

這些設置是我的應用程序中顯示的頁面上的標題。標題是定期(每星期左右)改變了,我不知道如何做到這一點聰明的辦法:

  1. 保存在web.config(設置慢讀取時間,並且應用程序必須重新啓動以檢測更改)。

  2. 將設置保存到數據庫中。

  3. 我自己的XML文件(例如自定義配置節在它自己的XML文件中)。

我正在尋找任何可能指向我的更好方向。

你會做什麼?

+0

是什麼讓你覺得web.config的閱讀時間很慢? – RichardOD 2010-01-02 18:26:06

回答

0

我會使用數據庫。

正如其他人所說,web.config真的意味着只有應用程序級設置。與XML文件

的一個問題是,如果你決定要移動到負載平衡的情況下,那麼你就不用擔心如何從一臺服務器複製該文件到另一個。從可伸縮性和安全性的角度來看,它被認爲是在Web層的文件系統中沒有任何應用程序動態數據的最佳實踐(如果您希望能夠更新文件,這意味着您將不得不允許您的Web應用程序寫入訪問本地文件系統,這是一種安全風險)。

將它放入數據庫允許您在應用第一次啓動時讀取一次。然後,您可以使用SqlDependency或SqlCacheDependency將全部或部分內容緩存到內存中,以便代碼在DB表發生更改時收到通知(如果必須,您可以使用XML文件進行類似操作)。

隨着數據庫的信息,您可以更輕鬆地添加負載平衡服務器後,如果你需要,你的Web應用程序可以保持只讀。

1

這裏有兩個問題:

  1. 保存設置。

  2. 存儲每個頁面上顯示的動態值。

如果您要存儲應用程序設置,那麼我會使用Custom Configuration Section。它允許您爲您的設置創建有意義的名稱,而不是使用web.configkey/value對。您可以將此自定義配置部分粘貼在其自己的XML文件中,並在您的web.config中引用它。

如果你要存儲動態數據(而不是應用程序設置),那麼如果你已經有一個數據庫,我會使用一個數據庫。

原因是web.config是爲了保存設置。您可以使用它來保存鍵/值頁面對,但這很麻煩。真正的動態數據應該與任何其他數據庫數據一起保存在數據庫存儲中。你提到過,如果這是你要存儲的數據類型,那麼使用數據庫是最有意義的。頁面標題不是應用程序設置,它們是動態數據。如果它是本地化的數據,那麼這是一個不同的故事,但你沒有給出任何跡象。

0

爲什麼不使用umbraco作爲所有網站內容/設置的內容管理系統?

在您決定集成特定元素之前,Umbraco位於asp.net網站的背景中。

你甚至可以調整頁面沒有代碼/設置更改的更改,因爲它們聽起來更像內容元素。

+0

爲什麼要將其他CMS添加到組合中?他有一個自定義網站,他有一個數據庫。爲什麼試圖在CMS上插一些簡單的東西? – 2010-01-02 18:21:17

+0

原始海報聲稱他的內容經常變化,他正在尋找新的方法來維護似乎是網站內容的內容。 我提出了一種cms方法,直到你調查了乳清之類的東西,就像如何創建一個簡單的msintainsble網站一樣,umbraco提供了你在黑暗中。 – 2010-01-03 10:18:33

1

web.config是一個地方,您可以存儲與應用程序相關的信息,即應用程序不能沒有的配置。因此,database server name沒問題,但page name of the default.aspx不好。

其他兩個選項在我看來是相等的,只有當標題由管理員修改時,才能更容易地更新記事本中的XML文件,而不是更新SQL服務器中的數據庫表(除非您有更好的GUI更新它)。

編輯:你不應該害怕web.config閱讀時間慢 - 只有當你「觸摸」它時,即文件的「修改」屬性改變時,纔會重新加載文件。

0

的事實是,他們每星期左右改變純粹基於,我想將它們存儲在數據庫中,並創建一個頁面來管理值。

雖然這裏有很多因素。需要考慮的一件事是,更改配置設置確實會導致應用程序重新啓動,因爲ASP.NET只會在啓動時讀取配置設置,然後在整個過程中緩存它們。不斷更改配置文件可能會導致孤立會話和問題。這可能不是,但可能。

使用服務器上的XML文件,這是不是.NET的配置設置的一部分,將解決這個問題,但編輯更容易出錯,並具有讀它爲每個請求的代價。

創建一個頁面來管理值更最初的工作,但我認爲這將在長期內還清。