2

我已经实现了一个相当简单的 wcf 服务,它处理从我的客户端到服务器的文件传输问题是当客户端发送文件请求时。所有带宽都分配给该单个客户端,其他客户端必须等到请求的文件传输完成。所以我的问题是如何让服务更高效,让用户共享带宽

[ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode =InstanceContextMode.PerCall,
    ConcurrencyMode=ConcurrencyMode.Multiple)]

我将 InstanceContextMode 属性设置为 PerCall 但这并没有成功

更新:这个项目类似于我的 http://www.codeproject.com/Articles/33825/WCF-TCP-based-File-Server

4

3 回答 3

5

WCF 没有适当的负载平衡,您必须自己开发一个。如果您正在传输文件,假设下载,您应该一次发送数据包而不是整个文件。执行此操作时,向进程添加“延迟/睡眠”以限制服务器在每个时间窗口发送的字节数,这将为其他请求腾出空间。

于 2012-04-15T14:50:51.387 回答
4

是否希望通过 WCF 端点提供文件是值得怀疑的。反对这样做的原因几乎正是您遇到的问题。它一次适用于几个客户端 - 但横向扩展需要在负载均衡器后面托管新的服务实例。

值得考虑使用某种存储服务托管您的文件,并让您的 WCF 服务简单地返回文件的链接或句柄。然后可以离线检索文件。Microsoft 已为此目的创建了Azure Blob 存储。

欣赏这并没有解决您最初的问题,并了解您的要求范围可能无法容纳大量的返工。

于 2012-04-15T18:33:20.877 回答
1

如果要传输大文件,另一种选择是使用分块通道。示例:MSDNcodeplex

虽然我同意@hugh 的立场。

于 2012-04-15T21:01:10.260 回答