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

时间:2010-08-29 12:16:13

标签: c# wcf streaming

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

提到HttpHandler是唯一的出路。

答案 2 :(得分:0)

您可能需要查看PollingDuplexHttpBinding(通知ID可能可能: - )。

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

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

HTH。