【问题标题】:WCF Streaming Big fileWCF 流式处理大文件
【发布时间】:2012-05-01 12:10:55
【问题描述】:

如何通过流对象向服务发送客户端计算机上大文件的引用,然后从客户端计算机开始逐个下载(我决定每秒传输多少 MB)?使用时有什么限制吗?

【问题讨论】:

  • 您是否在 IIS 中托管 WCF 服务?
  • 是的。您需要更多详细信息吗?

标签: c# wcf stream


【解决方案1】:

IIS 不支持流式传输 - 它缓冲整个请求。

CodeProject article: WCF 4.5 fixes this

在此之前,如果您使用 IIS,整个文件将在传递给您的服务之前存储在服务器内存中。

目前的解决方案是分块发送文件 - 每个块在单独的服务调用中发送。

这也有助于您限制带宽。这不是 WCF 内置的——你必须自己做。您可以在客户端或服务器上限制每个块。

【讨论】:

  • 我如何加入他们?我的意思是,2号包可以在1号包之前来,那我怎么加入他们呢?
  • 我会实现一个简单的协议:添加一个int index 并将其与每个块一起发送。无论如何,客户端都应该序列化服务调用,因此一次只有一个调用在进行中。
  • 您的意思是发送一条插入流的消息,这样我就可以将索引添加到我的转帐中,或者在 for/while 中发送它?
  • 是的,发送正常消息,因为流在​​ IIS 中不起作用。该消息可以包含一个索引整数以及作为字节[]的块。
猜你喜欢
  • 2012-11-09
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 2014-06-01
  • 1970-01-01
  • 2011-03-13
相关资源
最近更新 更多