2011-06-19 107 views
0

我有WCF服務器和silverlight客戶端。客戶端調用服務器來獲取項目列表。如何從服務器'獲取'物品的大列表?

有一些情況下,該項目列表是非常大的,我想必須讓更多還有一個調用的項目的能力 -

  • CALL1 =>拿到物品0-100
  • Call2(如果用戶點擊「更多」按鈕)=>獲得項目101-200
  • 調用N =>獲得100 * n - 100 *(n + 1)個項目。

我該怎麼辦?

有沒有一些'簡單'的模式來做到這一點?

謝謝。

+0

Silverlight強制使用WCF特別是**停止**加載過大的數據集 - 你需要重新考慮你的應用程序 - 找不到解決方法... –

回答

2

如果您的標準頁面大小爲100,則讓客戶端將他們想要的頁面傳遞給該服務。或者讓客戶告訴服務他們的頁面有多大以及他們想要哪個頁面

您可以在內存中保存客戶端所在的服務頁面,然後再說「Next」,但將內存狀態保存在代表客戶端的服務降低了可擴展性並增加了易碎性(如果該狀態丟失,那麼客戶端必須再次開始分頁)

使客戶端明確地說出他們想要的是一個更強大和可擴展的解決方案, LINQ實現Skip and Take

1

正如Richard提到的,分頁是一個常用選項,並且將結果作爲流返回(而不是緩存的byte []數組,而是實際的流 - WCF有一些使用流的注意事項)通常是最有效的。另外marc_s指出,Silverlight本地存儲並不是很大,所以請記住這一點。

0

用戶「一次消費」超過100件商品的機會非常小,即使商品的細節非常少,也許會添加導航(類別等)作爲數據過濾器,因此用戶只會獲得他們實際上感興趣的20個左右的項目。樹視圖可以很方便地將列表分成與用戶更相關的小列表,但有很多方法可以做到這一點......

相關問題