在Session中保留大量数据 - 建议/备选方案?

时间:2010-03-23 07:42:51

标签: asp.net session

我正在开发一个网络应用程序,客户希望我们尽可能少地查询他们的数据。数据将来自Microsoft CRM实例。

因此我们同意只在需要时查询数据,因此,如果网络用户想要查看联系人列表(例如),则将列表提取到本地DataTable中。然后,如果在网站上创建了新联系人,则新联系人将被发送到CRM并同时添加到本地DataTable。同样适用于编辑。

如果用户再次查看其联系人,则数据将来自本地DataTable。

目前本地数据保存在Session中,但我担心的是太多内存将开始用完。但是流量预计会非常小,也许不会超过20个并发用户,所以我不担心什么或者有更好的方法可以建议你处理这个问题吗?

2 个答案:

答案 0 :(得分:1)

你什么都不担心。基本上它是一个可扩展性转储 - 愚蠢的设计。但是:如果您可以在问题上丢弃1GB的内存,对于20个用户来说,存储16mb的内存不是问题。

当人数增加并且需要重写应用程序时,主要问题就开始了。

答案 1 :(得分:1)

  • 20个并发用户不是太多。

  • 客户端“查看其联系人”:根据“联系人”表的大小,您是否可以考虑将其存储在内存数据集(所有联系人)中。然后,您可以filter获得主键 会话的替代方案:CacheApplication

使用SqlCacheDependencyCacheItemRemovedCallback进行缓存应该是会话的不错选择。

  • 每个客户联系人的XML文件。