ASP.NET中存储List数据至Session的最优方式探讨
哪种方式是存储列表到Session的最佳实践?
先看基础代码:
List<MyClass> myList = new List<MyClass>();
下面两种存储到Session的方式,哪种更优?
方式1
Session["SerializedList"] = myList;
方式2
string serializedList = new JavaScriptSerializer().Serialize(myList); Session["SerializedList"] = serializedList; Session["SerializedList"] = myList;
结论:选方式1
原因如下:
- 方式2完全是冗余操作——先把列表序列化为JSON字符串存入Session,紧接着又用原
myList对象覆盖同一个Session键,前面的序列化步骤纯属鸡肋,白白消耗性能。 - 从Session存储的逻辑来看:
- 如果用进程内Session(InProc):直接存储对象实例是最高效的,对象直接保存在服务器内存中,无需额外转换,存取速度最快。
- 如果用StateServer或SQL Server模式的分布式Session:只需给
MyClass标记[Serializable]特性,.NET会自动完成二进制序列化处理,比手动JSON序列化更可靠——JSON可能丢失.NET特有的类型信息,额外的序列化/反序列化步骤还会降低性能。
所以无论哪种场景,方式1都是更合理的选择。
内容的提问来源于stack exchange,提问作者refael myshiakov
相关产品推荐
相关产品推荐

