C# 如何处理大型WCF响应?
我们构建了一个WCF服务,作为SOAP服务进行设置。它从数据库读取数据,组装响应并将其返回给客户机。由于它从数据库中查询所需的所有数据,将整个响应组装在内存中并返回给客户机,因此如果数据量很大,可能需要大量内存 基本上,客户机是从数据库请求一个特定的记录,其中包含一个blob,我们无法控制它的大小。我们预计数据的大小可能在10k到3mb左右。如果我们可以将数据从数据库中流出来并发送到WCF响应,这样我们就不必一次加载全部3mb内存,那么我们可以采用哪些技术呢 编辑:C# 如何处理大型WCF响应?,c#,.net,wcf,c#-4.0,C#,.net,Wcf,C# 4.0,我们构建了一个WCF服务,作为SOAP服务进行设置。它从数据库读取数据,组装响应并将其返回给客户机。由于它从数据库中查询所需的所有数据,将整个响应组装在内存中并返回给客户机,因此如果数据量很大,可能需要大量内存 基本上,客户机是从数据库请求一个特定的记录,其中包含一个blob,我们无法控制它的大小。我们预计数据的大小可能在10k到3mb左右。如果我们可以将数据从数据库中流出来并发送到WCF响应,这样我们就不必一次加载全部3mb内存,那么我们可以采用哪些技术呢 编辑: 起初,我认为这可能是一个复制
起初,我认为这可能是一个复制品 ,但该解决方案要求在OperationContract中使用Stream作为参数。但在我的例子中,我需要请求的参数是一个复杂的对象,这将反映在服务的结果WSDL中
[ServiceContract]
public interface IFileUpload
{
[OperationContract]
bool UploadFile(Stream stream);
}
它必须同步吗 如果不是的话,我想你也把这件事搞砸了吧
我知道WCF对缓冲区大小很挑剔,因此您必须特别注意,流式传输模式是使用WCF处理较大数据的最佳方式。在msdn中查看此示例以开始 希望这对您有所帮助。可能的副本