簡體   English   中英

存儲應用程序全局設置的位置?

[英]Where to store application global settings?

我有一些全局設置例如以下是一些

ShortLeaveAllowedInOneDay = 2
LeaveAllowedInMonth = 3

我有以下選項來存儲這些全局設置

1-Store in Database表
2存儲在Webconfig文件中
3-store作為const存檔
4-In XML文件

能否請您建議哪一個更好的方法和原因

我正在使用Asp.net MVC3和sqlserver 2005

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

1.存儲在數據庫表中
好處:

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

缺點:

  • 需要比其他選項更多的基礎架構(即表,數據庫訪問等)。
  • 如果操作不正確,DB IO可能會成為問題。 (可以通過緩存策略解決)



2.存儲在web.config文件中
好處:

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

缺點:

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



3.作為const字段存儲在類中
好處:

  • 使用起來非常簡單。
  • 可以使用靜態類型。
  • 將設置重構為其他選項之一的良好第一步。

缺點:

  • 需要重建才能更改設置。


4.在XML文件中
好處:

  • 方便存儲復雜的設置,如層次結構。
  • 自定義XML配置設置可以嵌入web.config中。 (熱門選項見log4net就是這樣一個例子)
  • 無需重新啟動應用程序池即可對配置文件進行更新。
  • XSD可以強制執行文件中設置的有效性(結構和數據類型)

缺點:

  • 它是XML。 不是真的人類可讀的,格式如YAML提高上。
  • 解析XML以進行讀寫設置所需的實現。

如果您需要由軟件用戶配置它們,我不會選擇3.如果它們是您定義為程序員的設置,並且在您的應用程序投入生產時不希望它們被更改,那么您可以這樣做。

我會說選項4和2在概念上基本相同,並且個人喜好可供選擇。 我個人喜歡定義一個自定義配置部分 ,然后在它自己的.config文件中定義該部分( 顯示了如何做到這一點),這樣你就沒有用戶必須導航的非常龐大的web.config。

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

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

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

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

<appSettings>

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

</appSettings>

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

對於每個頁面生命周期,多次讀取.xml文件對於性能來說非常糟糕。

我肯定會去web.config。

沒有一種方法本質上比其他方法更好。

最好的方法完全取決於您對安全性,可伸縮性,靈活性,只讀與可寫,配置復雜性等內容的要求。

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

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

  1. 值/參數改變了一些,對於啟動/運行/初始化程序至關重要
  2. 值是更改冒犯,或者它們對於每個用戶是不同的。

您將初始變量存儲在web.config上,而所有其他變量都存儲在數據庫中。 如果您沒有數據庫,那么可用的內容就像XML文件一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM