2

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

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

编辑:
最初,我认为这可能是 如何通过 WCF 处理大文件上传的副本?,但该解决方案需要使用 Stream 作为 OperationContract 中的参数。在我的情况下,虽然我需要我的请求参数是一个复杂的对象,这将反映在服务的结果 WSDL 中。

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

2 回答 2

0

Streaming Transfer Mode is the best way for Handling bigger Data with WCF. Look at this sample example in msdn to get started WCF Stream Transfer mode

Hope this helps.

于 2013-03-05T20:43:16.537 回答
0

它必须同步吗?

我想你也看过这篇文章,如果没有?

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

于 2013-03-05T20:33:25.140 回答