通过WCF流​​式传输未确定数量的对象

我有一个WCF服务,需要从数据库中读取大量(1000万到2000万)个对象。

我想做的是让客户端打开一个流,并让服务器在数据库中读取数据。

因此,客户端可以只是循环反序列化消息,直到它从服务器获取EOF消息,采用Twitter Streaming API的风格,但具有有限的集合。 我遇到的问题是如何返回流然后继续写入。 这可能与WCF有关吗?

如何使用像WS Dual Http这样的设置流媒体/阻止服务。 有了它,您就拥有了一个异步双向回调通道,允许您在服务器和客户端之间来回请求/回复信息。 如果要流式传输整个集合,可能会看到的问题通常是某些资源可能阻止其他请求(或超时),而其他用户尝试访问该服务。

问题是WCF不向操作提供响应流。 从操作返回的流只是某个消息的“内容”。 我尝试用一​​些线程场景欺骗WCF,我返回MemoryStream并尝试从其他线程填充它,但正如预期的那样它不起作用。

提到HttpHandler是唯一的出路。

你可能想看一下PollingDuplexHttpBinding (注意id可能 :-))。

有些人不太喜欢这种绑定,但是在获得配置的初始障碍后我没有遇到太多麻烦。

它当然可以完成我认为的工作,因为它只不过是我所理解的在网络套接字中使用的“长轮询技巧”。

HTH。