我正在开发一个网络应用程序,客户希望我们尽可能少地查询他们的数据。数据将来自Microsoft CRM实例。
因此我们同意只在需要时查询数据,因此,如果网络用户想要查看联系人列表(例如),则将列表提取到本地DataTable中。然后,如果在网站上创建了新联系人,则新联系人将被发送到CRM并同时添加到本地DataTable。同样适用于编辑。
如果用户再次查看其联系人,则数据将来自本地DataTable。
目前本地数据保存在Session中,但我担心的是太多内存将开始用完。但是流量预计会非常小,也许不会超过20个并发用户,所以我不担心什么或者有更好的方法可以建议你处理这个问题吗?
答案 0 :(得分:1)
你什么都不担心。基本上它是一个可扩展性转储 - 愚蠢的设计。但是:如果您可以在问题上丢弃1GB的内存,对于20个用户来说,存储16mb的内存不是问题。
当人数增加并且需要重写应用程序时,主要问题就开始了。
答案 1 :(得分:1)
20个并发用户不是太多。
客户端“查看其联系人”:根据“联系人”表的大小,您是否可以考虑将其存储在内存数据集(所有联系人)中。然后,您可以filter获得主键 会话的替代方案:Cache,Application
使用SqlCacheDependency和CacheItemRemovedCallback进行缓存应该是会话的不错选择。