如何处理大型WCF响应?

时间:2013-03-05 20:29:24

标签: c# .net wcf c#-4.0

我们已经构建了一个WCF服务,设置为SOAP服务。它从数据库中读取数据,汇编响应并将其返回给客户端。因为它从数据库中查询所需的所有数据,所以在内存中组装整个响应并将其返回给客户端,如果数据量很大,则可能存在大量内存需求。

基本上,客户端正在从数据库中请求一个特定的记录,其中包含一个blob,我们无法控制它的大小。我们预计数据的大小可能在10k到3mb左右。有没有我们可以采用的技术,我们可以将数据流出数据库和WCF响应,这样我们就不必一次性加载内存中的全部3mb?

修改
最初,我认为这可能是重复的 How to handle large file uploads via WCF?,但该解决方案需要使用Stream作为OperationContract中的参数。在我的情况下,虽然我需要我的请求的参数是一个复杂的对象,这将反映在服务的结果WSDL中。

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

2 个答案:

答案 0 :(得分:0)

是否必须同步?

如果没有,我认为你还会对这个问题article进行调查吗?

我知道WCF对缓冲区大小很挑剔,所以你必须特别注意那个

答案 1 :(得分:0)

流式传输模式是使用WCF处理更大数据的最佳方式。请参阅msdn中的示例示例以开始使用WCF Stream Transfer mode

希望这有帮助。