在两个请求之间存储数据的最佳方式

时间:2012-10-08 11:31:54

标签: wcf

我需要一点理论建议。这是我的情况:我有一个搜索系统,它返回找到的项目列表。但是允许用户在一个页面上仅显示特定数量的项目,因此当他的第一个请求被发送到我的WCF服务时,它会获得整个列表,然后测试列表是否不再存在然后我的用户可以获得的项目数量大,如果列表不长,则没有问题,我的服务返回整个列表,但是当它出现时,则存在问题。我需要让用户选择他想要显示的页面,所以我让javascript知道用户应该选择页面并显示“页码对话框”,然后用户发送第二个请求页码。根据此请求,Web服务选择相关项目并将其发送回用户。所以我需要做的是将整个列表存储在第一个第二个请求之间的服务器上,我很感激任何存储它的idehow。我正在考虑会话,但我不知道是否可以将超时设置为特定的sesion(例如Session["list"]),因为该列表只使用一次并且可以有数千个项目,所以我不知道我想把它长在服务器上。

PS。我不能使用标准分页,方案必须完全如上所述。

由于

1 个答案:

答案 0 :(得分:0)

这听起来像是memcached的经典用例。它是一个基于网络的键值存储,用于存储临时值。与内存状态不同,它可以用于在服务器之间共享临时缓存值(比如你有多个节点),这是一种跨请求保存状态的好方法(避免使用cookie导致的延迟,这是在每个http请求上传输到/从服务器传输)。

基本方法是为每个请求创建一个唯一的ID,并将其与该用户请求的特定(一组)memcached密钥相关联。然后,您将此唯一ID保存在cookie(或类似机制)中。

但是,一个警告,内存是不稳定的,所以在任何时候都可能丢失。实际上,这并不常见,memcached算法使用LRU队列。更多详情http://code.google.com/p/memcached/wiki/NewOverview

http://memcached.org/

  

Memcached是一个内存中的键值存储,用于存储来自数据库调用,API调用或页面呈现结果的小块任意数据(字符串,对象)。

我不是.net程序员,但似乎有实现:

http://code.google.com/p/memcached/wiki/Clients

  

.Net memcached客户端

     

https://sourceforge.net/projects/memcacheddotnet .Net 2.0 memcached   客户端

     

http://www.codeplex.com/EnyimMemcached客户端在.NET 2.0中开发   记住性能和可扩展性。 (支持一致   哈希。)http://www.codeplex.com/memcachedproviders BeIT Memcached   客户端(优化的C#2.0)

     

http://code.google.com/p/beitmemcached jehiah

     

http://jehiah.cz/projects/memcached-win32