Performance WCF与大数据流

Performance WCF与大数据流,performance,wcf,streaming,Performance,Wcf,Streaming,我在wcf gigs中处理大数据。我需要将其返回给客户端,前面的代码编写了一个内存流,然后将其作为流数据协定的属性返回给客户端 问题是数据已经增长,内存流现在使用所有可用内存,最终在所有数据写入流之前失败 是否可以按需将数据写入流,这样服务器就可以在客户端请求时写入数据?下面是我们的代码 internal StreamedFileResponse CreateStream() { var stream = new MemoryStream(); using (var writ

我在wcf gigs中处理大数据。我需要将其返回给客户端,前面的代码编写了一个内存流,然后将其作为流数据协定的属性返回给客户端

问题是数据已经增长,内存流现在使用所有可用内存,最终在所有数据写入流之前失败

是否可以按需将数据写入流,这样服务器就可以在客户端请求时写入数据?

下面是我们的代码

internal  StreamedFileResponse CreateStream()
{
    var stream = new MemoryStream();

    using (var writer = new CsvWriter(stream, Encoding.UTF8))
    {
        writer.Write(rowFactory.CreateHeader());

        foreach (var source in sources)
        {
            var row = rowFactory.Create(source);
            if (row != null)
            {
                writer.Write(row);
            }
        }
    }

    stream.Seek(0, SeekOrigin.Begin);

    return new StreamedFileResponse { Data = stream, Length = stream.Length };
}

[MessageContract(WrapperNamespace = "http://www.contoso.com/services/contract/reports/streamed")]
public class StreamedFileResponse : IDisposable
{
    [MessageBodyMember]
    public Stream Data { get; set; }

    [MessageHeader(MustUnderstand = true)]
    public long Length { get; set; }

    public void Dispose()
    {
        Data.Dispose();
    }       
}

让我们看看你已经尝试了什么