c# - 如何处理大型 WCF 响应?

标签 c# .net wcf c#-4.0

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

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

编辑:
最初,我认为这可能是 How to handle large file uploads via WCF? ,但该解决方案需要使用 Stream 作为 OperationContract 中的参数。在我的例子中,虽然我需要请求的参数是一个复杂的对象,这将反射(reflect)在服务的结果 WSDL 中。

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

最佳答案

一定要同步吗?

我想您也注意到了这个 article , 如果不是呢?

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

关于c# - 如何处理大型 WCF 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15233453/

相关文章:

c# - .NET:如何判断编码是否支持我的字符串中的所有字符?

.net - 如何在 .NET 中为两个不同的语言环境使用相同的数据库和相同的程序

c# - Azure函数 "Unable to find assembly"

.net - 如何访问 C# 项目中的嵌入式资源?

c# - Visual Studio 应用程序,XP 在某些标签的开头添加了一个额外的方 block 字符

asp.net - 如何使用多个绑定(bind)将 WCF json 绑定(bind)到 https?

c# - 动态执行基于 SOAP 的 Web 服务而不生成代理

c# - WCF net.tcp SSL : none of the cipher suites supported by the client application are supported by the server

c# - 结合多种方法

c# - 在 Azure 应用服务器中使用 Hangfire 进行计算成本高昂的操作的替代方案