2012-02-23 81 views
4

我有一些全局設置 例如下面的一些是存儲應用程序全局設置的位置?

ShortLeaveAllowedInOneDay = 2 
LeaveAllowedInMonth = 3 

我有以下選項,這些全局設置

1店內存放在數據庫中的表
2存放在Webconfig文件
3-Store in class filed
4-In XML文件

請您建議我哪一個更好的辦法,爲什麼

我使用Asp.net MVC3 與SQLSERVER 2005

回答

9

它取決於您的要求,這些選項中的每一個都有它自己的優點和缺點。它試圖列出幾個:

1。在數據庫表中存儲
優點:

  • 相對容易讀取設置。
  • 可以寫入/更新設置。
  • 訪問數據庫速度很快。
  • 數據庫值的更新立即可用。
  • DB可以在集羣環境中的多個實例之間共享。

缺點:

  • 比的選項的其餘部分所需的多個基礎設施(即表,DB訪問等)。
  • 如果做得不正確,DB IO可能會成爲問題。 (可以使用緩存策略來解決)



2.存儲在web.config文件
優點:

  • 簡單的添加和訪問設置。

缺點:

  • 更改到web.config可能會導致應用程序池重新啓動。
  • 設置通常不加密。
  • 在集羣環境中,文件必須與其他實例保持同步。
  • 設置設置時,通常必須處理字符串數據類型和可能的無效用戶輸入。



3類商店爲const場
優點:

  • 很簡單的工作。
  • 可以使用靜態類型。
  • 好的第一步是將設置重構爲其他選項之一。

缺點:

  • 需要重建的設置進行更改。


4.在XML文件
優點:

  • 便於存儲複雜的設置這樣的層次結構。
  • 自定義XML配置設置可以嵌入到web.config中。 (熱門選項見log4net就是這樣一個例子)
  • 可以在不重新啓動應用程序池的情況下更新配置文件。
  • 的XSD可以強制執行的設置的有效性在文件中(包括結構和數據類型)

缺點:

  • 它是XML。不是確實人類可讀,像YAML格式改善。
  • 解析XML以進行讀取和寫入設置所需的實現。
+0

偉大的完整答案! – jorgebg 2012-09-27 10:12:35

0

在web.config文件中存儲的全局變量是一種很常見的任務。 當您的web.config文件存儲值非常有用時,數據庫可能會過度殺傷,當您不需要單獨的外部文件。

爲每個頁面生命週期多次讀取.xml文件對於性能而言將會非常糟糕。

我肯定會去web.config。

1

如果你需要他們通過你的軟件的使用者,我不會做選項3.如果他們是你定義爲一個程序員,不要指望他們改變當應用程序投入生產你可以設置進行配置去做。

我要說的是選擇4和2基本上是相同的,在概念上,這是個人喜好從中選擇。我個人喜歡定義一個custom configuration section,然後在它自己的.config文件中定義該部分(this顯示瞭如何執行此操作),以便您沒有用戶必須導航的真正龐大的web.config。

我會選擇選項1,如果我有這樣一個場景,我有多個組件,所有需要訪問相同的配置。如果您構建的所有應用程序都是單個Web應用程序,那麼我不需要這樣做,但是,例如,如果您有一個Web應用程序和一些其他客戶端應用程序,並且都需要訪問數據庫,那麼在那裏存儲配置一個不錯的選擇。

1

添加在網絡配置文件的AppSettings的會話,可以從代碼直接訪問,如:

System.Configuration.ConfigurationManager.AppSettings["ShortLeaveAllowedInOneDay "]; 

編輯: 和Confir文件看起來像:

<appSettings> 

<add key="ShortLeaveAllowedInOneDay " value="2" /> 

</appSettings> 
0

無方法本質上比其他方法更好。

最好的辦法完全取決於你的需求是什麼的東西,如安全性,可擴展性,靈活性,只讀與可寫的,配置的複雜性,等等。

0

您可以將變量存儲在Web.config文件中。

0

我會更實際。兩個基本案例。

  1. 值/改變者和有至關重要的開始/運行參數/初始化程序
  2. 值是變化冒犯,或他們是爲每個用戶不同。

您將初始變量存儲在web.config中,並將所有其他數據存儲在數據庫中。如果你沒有數據庫,那麼可用的就是XML文件。

相關問題