C# 如何处理大型WCF响应?

C# 如何处理大型WCF响应?,c#,.net,wcf,c#-4.0,C#,.net,Wcf,C# 4.0,我们构建了一个WCF服务,作为SOAP服务进行设置。它从数据库读取数据,组装响应并将其返回给客户机。由于它从数据库中查询所需的所有数据,将整个响应组装在内存中并返回给客户机,因此如果数据量很大,可能需要大量内存 基本上,客户机是从数据库请求一个特定的记录,其中包含一个blob,我们无法控制它的大小。我们预计数据的大小可能在10k到3mb左右。如果我们可以将数据从数据库中流出来并发送到WCF响应,这样我们就不必一次加载全部3mb内存,那么我们可以采用哪些技术呢 编辑: 起初,我认为这可能是一个复制

我们构建了一个WCF服务,作为SOAP服务进行设置。它从数据库读取数据,组装响应并将其返回给客户机。由于它从数据库中查询所需的所有数据,将整个响应组装在内存中并返回给客户机,因此如果数据量很大,可能需要大量内存

基本上,客户机是从数据库请求一个特定的记录,其中包含一个blob,我们无法控制它的大小。我们预计数据的大小可能在10k到3mb左右。如果我们可以将数据从数据库中流出来并发送到WCF响应,这样我们就不必一次加载全部3mb内存,那么我们可以采用哪些技术呢

编辑:
起初,我认为这可能是一个复制品 ,但该解决方案要求在OperationContract中使用Stream作为参数。但在我的例子中,我需要请求的参数是一个复杂的对象,这将反映在服务的结果WSDL中

[ServiceContract]
public interface IFileUpload
{
    [OperationContract]
    bool UploadFile(Stream stream);
}

它必须同步吗

如果不是的话,我想你也把这件事搞砸了吧


我知道WCF对缓冲区大小很挑剔,因此您必须特别注意,流式传输模式是使用WCF处理较大数据的最佳方式。在msdn中查看此示例以开始

希望这对您有所帮助。

可能的副本