【发布时间】:2013-09-23 14:12:16
【问题描述】:
我有一个需要返回文件的 WCF Web 服务(可以由字节数组或流式返回)。我首先在界面中返回一个 byte[],这导致客户端对于 100MB 文件的内存使用量(峰值)上升到 400MB。 由于我需要减少客户端内存使用量,我添加了另一个接口,将文件流式传输回客户端。这一次,我看到客户端增加了 600MB(再次达到峰值)。如何减少客户端内存使用量?
我目前的服务器实现如下(流式传输):
[ServiceContract]
public interface IOmriService
{
[OperationContract]
Stream GetAudio(string input);
}
App.config:
<bindings>
<basicHttpBinding>
<binding name="HttpStreaming" maxReceivedMessageSize="67108864" transferMode="Streamed"/>
</basicHttpBinding>
</bindings>
【问题讨论】:
-
我已经阅读了这些帖子,它们没有什么不同。我唯一的问题是客户端的 RAM 使用率
-
您的客户正在接收一个大文件?在数据传输过程中,客户端将数据存储在哪里?如果它接收到 600MB 的文件,并且没有按块保存到磁盘中,它将保留在进程内存中吗?
-
客户端获取一个 100MB 的文件并保留它的内存。问题是客户端内存使用量在峰值达到 400MB,然后减少到 100MB 左右。
标签: c# wcf streaming large-data