如何,在Asp.net 2.0中存储不同范围内的对象的位置

时间:2008-11-20 21:42:40

标签: asp.net-2.0 persistence scope

需要问你一些帮助。

我在Net 2.0中运行了web应用程序 我想问一下我应该为我的对象使用什么存储(缓存,会话,文件),因为它们具有不同的使用范围。可分为几组:
1)与访问者直接相关的对象(例如,在认证后收到的访问者的详细信息)
2)用于每个访问者的对象,因此其应用范围(一些初始数据,公共数据)

这些对象中的大多数都从Web服务获取数据,这很昂贵。

那么考虑速度,记忆力,可访问性以及我应该注意的其他内容,我最好的选择是什么。

欢迎任何帮助。谢谢,X。

3 个答案:

答案 0 :(得分:2)

  1. 直接与访问者相关的对象应存储在Session中,但过度使用Session和许多用户可能会导致可伸缩性问题。

  2. 每个访问共享的对象应该存储在Cache中,因此如果不经常访问它们,它们将超出范围,以便可以回收内存(更不用说增加的激励了)依赖)。在您知道对象必须可以立即访问的情况下,无论在上次访问它之间经过了多长时间,您应该将该对象存储在Application中。

答案 1 :(得分:1)

第1项 - 会话很可能是最好的,因为它是每个用户,但是,请务必限制那里的项目数量,因为存在扩展问题,以及在Web场中的注意事项。

第2项 - 根据您的需要,这将是您要添加的缓存或应用程序级别项目,具体取决于到期时间等。关键区别在于缓存已过期以及可以删除它的使用项目,应用程序适用于始终存在的事物。

总的来说,在Web应用程序中,我强烈推荐AGAINST文件,因为你必须担心线程安全。

答案 2 :(得分:0)

每个访问者的相对对象应存储在Session中。这对于每个访问者来说都是唯一的,但往往会被刷新,当您迁移到多服务器环境时,这也会很难扩展。

与整个应用程序相关的对象应存储在ASP.NET缓存中。