2011-06-22 88 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更轻量级,而且灵活 - 至少为了您的目的。我看不出有什么理由不配合它。