【发布时间】:2011-04-12 23:59:16
【问题描述】:
我正在尝试从 WCF 服务获取实体列表,我遇到的问题是我们在网络上有一些糟糕的延迟,因此数据需要相当长的时间才能到达我的客户端。我的想法是找到一种方法来获取前 1000 个,然后在等待下一个到达时将它们推送到 UI。
我想这就像分页,但我只想在 WCF 层中分页,而不是从数据库中一次获取一页
干杯
【问题讨论】:
我正在尝试从 WCF 服务获取实体列表,我遇到的问题是我们在网络上有一些糟糕的延迟,因此数据需要相当长的时间才能到达我的客户端。我的想法是找到一种方法来获取前 1000 个,然后在等待下一个到达时将它们推送到 UI。
我想这就像分页,但我只想在 WCF 层中分页,而不是从数据库中一次获取一页
干杯
【问题讨论】:
WCF 在将消息传递给更高级别之前会查看整个消息。因此,您的数据需要以完整的形式到达,而通常的 WCF 合同将不起作用。
但是,您可以使用streaming with WCF。这允许从流中逐渐读取有效负载并传递到更高级别。为了使其正常工作,您需要:
这将更复杂 WCF 直接开箱即用,但可以满足您的需求。
【讨论】:
您始终可以将服务接口拆分为两种方法。例如,而不是:
List<T> GetItems()
你可以拥有:
int GetItemCount()
List<T> GetItems(int start, int maxSize)
这样你就可以手动实现分页了。
【讨论】:
最后,当我使用 tcpTransport 进行通信时,我结束了使用双工通道来做我需要的事情。
我所做的只是将我当前的 SearchMethod 更改为返回一个大列表无效。在这个方法中,我从数据库中获取数据,将其分块并通过回调操作将其发送到客户端
【讨论】: