流式下载的WCF最佳实践/配置

时间:2012-03-08 11:48:07

标签: c# wcf web-services windows-services streaming

我正在创建一个从服务器下载文件的服务,我对这个领域的知识有限,并且正在询问有关服务设置的建议。

由于会影响服务器的内存使用情况,我已经排除了完整的文件缓冲。

哪种绑定最适合在WCF中安全地进行流式下载? wsHttpBinding,basicHttpBinding,netTcpBinding等

如果它不是太麻烦你能写几行说出为什么你的答案正确适合这个功能吗?(所以我从答案中学到了)

谢谢

ry4n

(目前正在研究Vs2008)

另外,什么格式的信息最好被Android返回?

  

更新*更多信息:   文件大小:1MB到1GB之间,同时多次下载。

我应该使用哪种WCF配置来实现此功能?

1 个答案:

答案 0 :(得分:1)

非流模式:对于大多数熟悉WCF的人来说,NetTcp会使用TransferMode.Streamed,但是存在严重的性能问题。 Streaming将允许您容纳更多的并发下载,因为它不会占用服务器的内存,但WCF具有不可覆盖的流块大小,它减慢了下载速度,超过100MB的文件将明显慢于任何其他方法。

我建议实现分块方法方法,如

byte[] GetBytes(int chunkNumber);

在客户端,您可以在下载时缝合块。使用HttpBinding实现互操作性,因为您传输的所有内容都是字节,因此不会因NetTcp绑定而产生过多的开销。