簡體   English   中英

Silverlight/C# - 動態加載 WCF 數據的最佳方式?

[英]Silverlight/C# - Best way to dynamically load WCF data?

我希望能夠將數據加載到 Silverlight 中的 DataGrid 中,因為它可用。 這是場景:

  1. 我的 silverlight 客戶端向服務器發出 WCF 調用。
  2. 服務器大約需要 1 到 2 秒來響應。
  3. 響應在 1 MB 和 4 MB 之間(相當大)。
  4. 此數據被加載到 DataGrid 中。
  5. 盡管服務器響應速度很快,但用戶在下載完所有 1 MB 到 4 MB 后才能看到數據。

在客戶端下載數據時,將這些數據加載到 DataGrid 中的最佳(或最有效)方法是什么? 而不是等待下載完成?

解決這個問題的一種方法是實現自定義虛擬化。

  • 添加一個只返回 id 的 webservice 方法
  • 添加通過 id 返回單個 object 的 webservice 方法

檢索 id 並僅加載可見對象(可能還有更多以允許滾動) 在需要滾動時檢索更多對象。

問題是我試圖用我的評論來解決的問題(你仍然沒有真正指定返回的數據類型),以及 Erno 為你提供了一個可行的解決方案。 web 服務序列化您發送的任何返回類型,並且不會給您部分結果。 這不是您如何與網格交互的問題,而是客戶端上的 web 服務調用何時說“好的,我收到了您需要的數據,現在繼續處理”的問題。 例如,如果您在服務器端收集一個包含 4MB 記錄的數據表,那么在您的服務中執行以下操作:

return MyMassiveDatatable;

然后,您將不得不等待整個數據表被序列化並通過網絡傳輸。

他的解決方案是將轉移分解為原子單位。 IE 首先查詢一個 web 服務調用中記錄的 id,然后遍歷這些 id 並一次請求每個 id 的記錄,當您收到一條記錄時,將其添加到客戶端表中,以便您的顯示器會在您獲得每條記錄時寫入它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM