我有WCF服务器和silverlight客户端。客户端调用服务器以获取项目列表。
在某些情况下,商品列表非常大,我希望能够在多个电话中获取商品 -
我该怎么办?
有一些'简单'的模式吗?
感谢。
答案 0 :(得分:2)
如果您的标准页面大小为100,那么让客户端将他们想要的页面传递给服务。或者让客户告诉服务他们的页面有多大以及他们想要哪个页面
您可以在服务器的内存中保留客户端具有的页面,然后说“下一步”,但代表客户端在服务中保持内存状态会降低可伸缩性并增加脆弱性(如果该状态丢失则客户端必须再次开始分页。
让客户明确说出他们想要的是一个更强大和可扩展的解决方案,并通过Skip and Take轻松实现LINQ实现
答案 1 :(得分:1)
正如理查德所提到的,寻呼是一种常见的选择。此外,将结果作为流(而不是缓冲的byte []数组返回,但实际流 - WCF对流的使用有一些警告)通常是最有效的。同样正如marc_s所指出的那样,Silverlight本地存储空间并不大,所以请记住这个障碍。
答案 2 :(得分:0)
用户一次消费超过100件物品的可能性非常小,即使物品的细节很少,也可能会添加导航(类别等)作为数据的过滤器,这样用户只能获得他们实际感兴趣的20个左右的项目。树视图可以非常方便地将列表分成更小的与用户更相关的列表,但有很多方法可以做到这一点......