我们已经构建了一个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);
}
答案 0 :(得分:0)
答案 1 :(得分:0)
流式传输模式是使用WCF处理更大数据的最佳方式。请参阅msdn中的示例示例以开始使用WCF Stream Transfer mode
希望这有帮助。