Silverlight / C# - 动态加载WCF数据的最佳方法?

时间:2011-08-09 19:04:47

标签: c# silverlight wcf datagrid

我希望能够在Silverlight中将数据加载到DataGrid中。这是场景:

  1. 我的silverlight客户端向服务器发出WCF调用。
  2. 服务器需要大约1到2秒的时间来响应。
  3. 响应介于1 MB和4 MB之间(非常大)。
  4. 此数据已加载到DataGrid中。
  5. 虽然服务器响应很快,但在下载完所有1 MB到4 MB之前,用户才会看到数据。
  6. 在客户端下载DataGrid时,将此数据加载到DataGrid的最佳(或最有效)方法是什么?而不是等待下载完成?

2 个答案:

答案 0 :(得分:3)

处理此问题的一种方法是实施自定义虚拟化。

  • 添加仅返回ID的web服务方法
  • 添加一个web服务方法,该方法通过id
  • 返回单个对象

检索id并仅加载可见对象(可能还有一些以允许滚动) 在需要滚动时检索更多对象。

答案 1 :(得分:1)

问题是我试图通过我的评论得到的一部分(你仍然没有真正指定返回的数据类型),以及Erno给你一个可行的解决方案。 Web服务序列化您发送的任何返回类型,并且不会给您部分结果。这不是你如何与网格连接的问题,这是一个问题,即客户端上的Web服务调用何时说“我收到你需要的数据,现在继续处理”。例如,如果您在服务器端收集数据表,其中包含4MB的记录,那么在您的服务中执行以下操作:

return MyMassiveDatatable;

然后你将不得不等待整个数据表被序列化并通过电线抽出。

他的解决方案是将转移分解为原子单位。 I.E.首先查询一个Web服务调用中记录的id,然后遍历这些id并一次请求每个id的记录,当您收到一个记录时,将其添加到客户端表中,以便当你得到它时,display会写下每条记录。