我需要在会话中保存一些内容。目前,我在开发计算机上使用InProc会话,但我想使用SQL服务器会话和Azure的AppFabric会话进行部署。在会话中存储对象
我创建了一个对象,其中包含几个属性,所有基元类型。我处理会话的读这样的:
SessionObject TheCurrentSession =
HttpContext.Current.Session["UserAppSession"] as SessionObject;
基本上,我包裹会话变量中的对象的序列化和反序列化,每次会话加载和保存。
我想知道是否应该更好地存储每个属性的原生格式,并让包装对象读取/保存会话中的每个属性作为本机类型。
因此,举例来说,我有一个名为RecreateSession这样的方法:
public class SessionObject
{
public void RecreateSession()
{
this.SessionObjectProperty1 =
HttpContext.Current.Session["SessionObjectProperty1"];
this.SessionObjectProperty2 = ...;
this.SessionObjectProperty3 = ...;
}
}
,我认为这样做会避免序列化/反序列化的过程,可以在代码的其他部分直接进行访问的值(即HTTP模块)。
是否值得更改我的会话实现?这有什么最佳做法?
感谢您的建议。
好吧,你认为将序列化/反序列化保存到对象中是存储会话的更好方法,还是你认为我应该直接存储每个属性并通过从asp.net上下文中读取每个属性来创建包装对象会议?我认为无论哪种方式都可以用我的代码。 – frenchie
@frenchie - 没有必要编写自定义的序列化代码。只需分配属性并根据需要进行投射就比较容易。 – Oded
是的,我知道它会自动序列化;但即使框架自动处理它,它仍然必须这样做。在某些时候,这种不断的序列化/反序列化会成为一个性能/缩放问题吗? – frenchie