域实体进入(ASP.NET)Session,还是更好的某种DTO?

时间:2010-06-05 10:30:34

标签: asp.net session session-state

目前,我们将域对象/实体放入ASP.NET会话中。

现在我们考虑从InProc会话转移到状态服务器。这要求会话中的所有对象都是可序列化的。而不是使用[Serializable]属性注释所有对象,我们考虑创建自定义会话对象(DTO会话对象?),它只包含我们需要的信息:

缺点:

  • 必须重新加载实体,这需要额外的数据库往返

优点:

  • 会话状态较小
  • 会话信息更具体(可能是CON)
  • 没有不必要的域名实体注释
你怎么看?我们应该使用某种DTO来存储会话,还是应该坚持使用好的旧实体?

1 个答案:

答案 0 :(得分:1)

如果您正在考虑迁移到ASP.NET MVC,这些DTO将成为您的模型ViewData对象,这可以实现方便的迁移。

是的,会话信息将更具体,因为DTO将特定于其使用行为。它应该减少没有未使用信息甚至限制信息的开销。

规格DTO也会帮助其他事情;如果您在表示层中实现其他技术,例如Silverlight,Flash等,并且需要Web服务中的相同对象。