我们已经构建了 WCF 服务,设置为 SOAP 服务。它从数据库中读取数据,组装响应并将其返回给客户端。因为它从数据库中查询它需要的所有数据,在内存中组装整个响应并将其返回给客户端,所以如果数据量很大,可能会有很大的内存需求。
基本上,客户端从数据库中请求一条特定的记录,其中包含一个 blob,我们无法控制它的大小。我们预计数据的大小可能在 10k 到 3mb 左右。如果我们可以将数据从数据库中流式传输到 WCF 响应中,我们可以采用哪些技术,这样我们就不必一次将全部 3mb 加载到内存中?
编辑:
最初,我认为这可能是
如何通过 WCF 处理大文件上传的副本?,但该解决方案需要使用 Stream 作为 OperationContract 中的参数。在我的情况下,虽然我需要我的请求参数是一个复杂的对象,这将反映在服务的结果 WSDL 中。
[ServiceContract]
public interface IFileUpload
{
[OperationContract]
bool UploadFile(Stream stream);
}