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

C# 流式下载的WCF最佳实践/配置,c#,wcf,web-services,windows-services,streaming,C#,Wcf,Web Services,Windows Services,Streaming,我正在创建一个服务,将从服务器下载文件,我在这方面的知识有限,并要求提供有关服务设置的建议 我已经排除了完全文件缓冲,因为内存使用会影响服务器 哪种绑定最适合在WCF中安全地进行流式下载? wsHttpBinding、basicHttpBinding、netTcpBinding等 如果不太麻烦的话,你能写几行,说明为什么你的答案适合功能吗?(因此我从答案中学习) 谢谢 ry4n (目前正在Vs2008上工作) 安卓系统最好返回何种格式的信息供其使用? 更新*更多信息: 文件大小:介于1MB和1G

我正在创建一个服务,将从服务器下载文件,我在这方面的知识有限,并要求提供有关服务设置的建议

我已经排除了完全文件缓冲,因为内存使用会影响服务器

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

如果不太麻烦的话,你能写几行,说明为什么你的答案适合功能吗?(因此我从答案中学习)

谢谢

ry4n

(目前正在Vs2008上工作)

安卓系统最好返回何种格式的信息供其使用?

更新*更多信息: 文件大小:介于1MB和1GB之间,可同时进行多次下载


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

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

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

byte[] GetBytes(int chunkNumber);

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

我建议google提供几个好的链接——这是一个候选链接:或者更好:;)我认为这些简单的例子并没有考虑到这样一个事实,即IIS和WCF客户端都喜欢在发送/接收整个文件之前将其缓冲到内存中。多亏了这一点,我们有自己复杂的文件下载/上传基础设施来解决这个问题。下载量会有多大?你也可以使用下载管理器,比如windows BITS,或者像SharpBITS一样使用包装器windows Update也可以使用BITS。它们可能相当大,1GB+,我用更多信息更新了上面的问题