在json字符串中序列化会话对象

时间:2011-06-22 03:58:06

标签: c# asp.net

我构建了一个强类型会话对象,如下所示:

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对象,并将字符串存储在我可以在页面加载时检索和反序列化的数据库中。

这是一个很好的方法吗?

感谢您的建议。

2 个答案:

答案 0 :(得分:0)

ASP.NET Session State Server vs. InProc Session涵盖了使用状态服务器或进程内会话存储的优缺点。

至于使用JSON,它肯定比XML更轻量级,而且非常灵活 - 至少对于你的目的而言。我认为没有理由不参与其中。

答案 1 :(得分:0)

首先确保您需要Session中的所有数据。我觉得您需要创建数据库表并在表中存储数据。

如果您确定需要Session,那么使用标准<sessionState mode="SQLServer">是有意义的。您可以阅读有关Session-State Modes here的更多信息。

如果您确定要自定义序列化,那么使用二进制序列化而不是JSON是有意义的。它需要更少的内存来存储,并且需要更少的资源来序列化/反序列化。