2011-04-29 45 views
1

還有一個類似的問題發佈在Application Variable Vs Web.Config Variable,但是我的略有不同,我不相信那裏的答案。ASP.NET應用變量vs從ConfigurationSettings.AppSettings讀取

所以,如果我在Global.asax中定義的應用程序變量是這樣的:

public class Global : System.Web.HttpApplication 
{  
    public static readonly string X = ConfigurationSettings.AppSettings["XsltExternal"]; 
    // rest of the code here 
} 

不應該這樣讀操作

string Y = Global.X; 

快於

string Y = ConfigurationSettings.AppSettings["XsltExternal"]; 

由於避免散列表查找(假定這是ASP.Net如何存儲web.config設置)?我的應用程序使用大量的配置設置並在整個頁面循環中檢查它,所以我希望我能夠利用每一個可以保存的ms。

想到有人嗎?

PS:我最初的簡單測試頁ANTS分析器測試顯示讀取時間從0.017毫秒下降到.002毫秒。

+0

有點不錯,只是想和別人確認一下,在我走之前我還沒有考慮過什麼,並將所有這些無數的代碼行轉換成了..lol :-) – 2011-04-29 21:38:40

+0

它也會容易得多維護一個結構化的配置類來處理e您最常用的設置。你真的只應該從結構化配置類中直接調用AppSettings。 – 2011-04-29 22:05:08

+0

@Frazell,所以你建議的是從Global創建這個新類的靜態對象,而不是像NS.Global.VARNAME那樣分別訪問這些變量。是的,是有道理的。我面臨的唯一問題是,在多項目解決方案中,我無法訪問Global類,並且無法將其他支持項目的主項目添加爲參考,因爲它會創建循環依賴項問題。努力吧! – 2011-04-30 02:31:13

回答

1

我會說是的,這是更快,但我會盡量保持全球班級儘可能乾淨。在我實現我通常把我的所有配置項在一個單獨的類靜態構造函數,例如:

public class Constants 
{ 
    public static string PayPalSeller; 
    public static string PayPalUrl; 
    public static string PayPalPDTKey; 
    public static string RpxTokenUrl; 
    public static string VirtualAppFolder; 
    static Constants() 
    { 
     PayPalSeller = ConfigurationManager.AppSettings["PayPalSeller"]; 
     PayPalUrl = ConfigurationManager.AppSettings["PayPalUrl"]; 
     PayPalPDTKey = ConfigurationManager.AppSettings["PayPalPDTKey"]; 
     RpxTokenUrl = ConfigurationManager.AppSettings["RpxTokenUrl"]; 
    } 
} 

要使用它,你當然會去:

Constants.PayPalSeller 

希望這會有所幫助, -covo

+1

只是爲了澄清,在這種情況下將類本身設爲靜態將是一個好主意。 – Tobberoth 2014-10-02 08:49:42