如何获得'来自服务器的大项目列表?

时间:2011-06-19 13:22:34

标签: silverlight wcf

我有WCF服务器和silverlight客户端。客户端调用服务器以获取项目列表。

在某些情况下,商品列表非常大,我希望能够在多个电话中获取商品 -

  • Call1 =>得到项目0-100
  • Call2(如果用户点击“更多”按钮)=>得到项目101-200
  • 致电N =>获得100 * n - 100 *(n + 1)项。

我该怎么办?

有一些'简单'的模式吗?

感谢。

3 个答案:

答案 0 :(得分:2)

如果您的标准页面大小为100,那么让客户端将他们想要的页面传递给服务。或者让客户告诉服务他们的页面有多大以及他们想要哪个页面

您可以在服务器的内存中保留客户端具有的页面,然后说“下一步”,但代表客户端在服务中保持内存状态会降低可伸缩性并增加脆弱性(如果该状态丢失则客户端必须再次开始分页。

让客户明确说出他们想要的是一个更强大和可扩展的解决方案,并通过Skip and Take轻松实现LINQ实现

答案 1 :(得分:1)

正如理查德所提到的,寻呼是一种常见的选择。此外,将结果作为流(而不是缓冲的byte []数组返回,但实际流 - WCF对流的使用有一些警告)通常是最有效的。同样正如marc_s所指出的那样,Silverlight本地存储空间并不大,所以请记住这个障碍。

答案 2 :(得分:0)

用户一次消费超过100件物品的可能性非常小,即使物品的细节很少,也可能会添加导航(类别等)作为数据的过滤器,这样用户只能获得他们实际感兴趣的20个左右的项目。树视图可以非常方便地将列表分成更小的与用户更相关的列表,但有很多方法可以做到这一点......