繁体   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