【问题标题】:Client memory usage on WCF web service with large data具有大数据的 WCF Web 服务上的客户端内存使用情况
【发布时间】: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


【解决方案1】:

据我所知,在 WCF 中没有办法做到这一点。 我所做的是使用“简单”的 http 文件下载。这几乎不消耗客户端的内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    相关资源
    最近更新 更多