如何在WCF服务返回大数据集的情况下使用流媒体?

如何在WCF服务返回大数据集的情况下使用流媒体?,wcf,streaming,large-data,Wcf,Streaming,Large Data,我是WCF的新手,我正在尝试弄清楚流媒体是如何工作的。我基本上有一个web服务,应该从数据库返回一些信息。返回的数据可能非常大。我想知道是否有人能指出一个很好的例子来说明这一点。如果我理解正确,我的web服务方法应该返回一个流对象。但是我实际上如何将数据传递给流呢?这只是序列化每个对象并将其写入流的问题吗?如果是这样的话,具体如何进行序列化?再一次,我们非常感谢一个简单的示例。您只需将绑定的属性设置为流值,并像您所做的那样使用WCF服务。WCF基础设施将自动完成所有工作 以下是一个更有用的链接:

我是WCF的新手,我正在尝试弄清楚流媒体是如何工作的。我基本上有一个web服务,应该从数据库返回一些信息。返回的数据可能非常大。我想知道是否有人能指出一个很好的例子来说明这一点。如果我理解正确,我的web服务方法应该返回一个流对象。但是我实际上如何将数据传递给流呢?这只是序列化每个对象并将其写入流的问题吗?如果是这样的话,具体如何进行序列化?再一次,我们非常感谢一个简单的示例。

您只需将绑定的属性设置为流值,并像您所做的那样使用WCF服务。WCF基础设施将自动完成所有工作

以下是一个更有用的链接:


事实上,我要回顾一下架构,因为从任何服务(WCF、ASMX等)返回大型结果集都是架构的味道


很少有可以接受的理由从服务返回大型结果集。将更多/更好的过滤和实现pagine相结合是解决方案。如果您只是在数据库上贴上一个简单的服务贴面,请查看WCF数据服务,因为过滤和分页都是直接构建在框架中的。否则,请查看WCF数据服务,看看它们在做什么,并在您的服务中进行模拟

所以,我不需要返回流对象???例如,如果我的web服务返回一个大列表,这仍然有效吗?不需要返回流。它也适用于大型列表。我还为我的答案添加了一个新链接。请注意,将绑定的TransferMode更改为streamed会对服务的接口造成限制。将流传输方法放在自己的接口中,并将其余方法保留在保持缓冲的接口中(这是默认设置)可能是一个好主意。是的,使用流传输模式有一些限制。我答案中的最后一个链接列出了它们。谢谢,我想这是我错过的部分。我一直收到一个CommunicationException,表示连接意外关闭。这可能是由于最大邮件大小造成的吗?