2011-06-22 106 views
2

我建立了一個看起來像這樣的強類型會話對象:序列化會話對象

class MySession 
{ 
    public string UsedID {get;set;} 
    public List<int> ListOfInt {get;set;} 
    public List<string ListOfString {get;set;} 
    ..... 
} 

我目前使用的是InProc會話,以便在頁面加載時,我寫的:

MySession TheSession = Session["UserSession"] as MySession; 

然後在代碼中,我可以使用TheSession.XYZ語法訪問每個屬性。

這真的很酷,但我認爲將會話存儲在數據庫中可能會更好。

我在考慮序列化JSON字符串中的MySession對象,並將字符串存儲在數據庫中,我可以在頁面加載時檢索和反序列化。

這是一個很好的方法嗎?

感謝您的建議。

回答

0

首先確保您需要Session中的所有數據。我覺得你需要創建數據庫表並將數據存儲在表中。

如果您確定需要Session,那麼使用標準<sessionState mode="SQLServer">會很有意義。你可以閱讀更多關於Session-State Modes here

如果您確定要自定義序列化,那麼使用二進制序列化代替JSON是有意義的。它將需要更少的內存來存儲和更少的資源來序列化/反序列化。

+0

我想,那你應該怎麼做 – DeveloperX

+0

好的。在表中存儲int列表或字符串列表的最佳方式是什麼? – frenchie

+0

@frenchie - 要正確回答這個問題,這將有助於知道這個int列表的商店。在不知道的情況下,答案是:在int類型的表中有一列。 –

0

ASP.NET Session State Server vs. InProc Session涵蓋了使用狀態服務器或進程內會話存儲的優缺點。

至於使用JSON,它肯定比XML更輕量級,而且靈活 - 至少爲了您的目的。我看不出有什麼理由不配合它。