2014-03-04 64 views
0

可以將會話變量全部存儲在單個對象中嗎?有什麼缺點?會話架構:單個站點對象

XSessionData SessionData 
{ 
    get 
    { 
     string key = "XSessionData"; 
     if (HttpContext.Current == null) 
      return null; 
     if (HttpContext.Current.Session == null) 
      return null; 
     object data = HttpContext.Current.Session[key]; 
     if (data == null) 
      HttpContext.Current.Session[key] = data = new XSessionData(); 
     return (XSessionData)data; 
    } 
} 
+0

我會重新短語的問題,所以它不是基於意見的。 –

回答

2

沒有技術上的原因,爲什麼你不能這樣做。如果會話中的項目彼此相關,這可能是一種很好的做法。我可以看到,如果您使用依賴於Session的單元測試代碼,上述模式可能會有用。

但是,您應儘可能少地使用Session。而且你應該指定操縱Session的類,以便它不會變成遍佈整個地方的全局狀態。

但是,請記住,會話存儲可能會更改。例如,某些對象在內存中可以正常工作,但不適用於數據庫會話存儲。

對於數據庫會話存儲,保存在會話中的任何對象都必須是Serializable