C# 在WCF中设置最大下载速度

C# 在WCF中设置最大下载速度,c#,wcf,C#,Wcf,我正在使用WCF从数据库下载音频数据。我需要设置最大下载速度 如何在WCF中完成 谢谢 WCF处理通过类的节流 WCF提供了一个节流行为来 管理服务器负载和资源 消耗量(包括以下各项) 属性): MaxConcurrentCalls。限制可以执行的并发请求数 将由所有服务实例处理。 默认值为16 MaxConcurrentInstances。限制可以访问的服务实例的数量 在给定的时间分配。对于 PerCall服务,此设置匹配 并发调用的数量。对于 PerSession服务,此设置 匹配活动会

我正在使用WCF从数据库下载音频数据。我需要设置最大下载速度

如何在WCF中完成


谢谢

WCF处理通过类的节流

WCF提供了一个节流行为来 管理服务器负载和资源 消耗量(包括以下各项) 属性):

  • MaxConcurrentCalls。限制可以执行的并发请求数 将由所有服务实例处理。 默认值为16

  • MaxConcurrentInstances。限制可以访问的服务实例的数量 在给定的时间分配。对于 PerCall服务,此设置匹配 并发调用的数量。对于 PerSession服务,此设置 匹配活动会话的数目 实例。这个设置并不重要 对于单实例模式,因为 只创建了一个实例。这个 此设置的默认值为 2147483647

  • MaxConcurrentSessions。限制允许的活动会话数 服务。这包括申请 会话、传输会话(用于TCP) 例如,命名管道), 可靠的会话,安全的 会议。默认值为10

我不认为有一个内置的机制来控制带宽。您需要实现一个自定义流。您使用线程来写入流。然后可以控制每秒写入的数据量。例如,您可以写入250Kb,然后执行一秒钟的线程睡眠


另请参见:

好的,疯狂的周五晚间黑暗拍摄: Scott Gu在博客中介绍了IIS 7的新比特率调节模块:

它实际上用于媒体文件,但开箱即用,由扩展名触发。仅凭这一点可能还不够--您正在从服务--.svc提供文件,并且您可能不想限制所有的服务调用。(如果您不介意全部限制它们,那么它可能会开箱即用——只需在.svc上设置一个规则即可

更有趣的是,这篇帖子:这家伙谈论如何定制节流器

您可以根据响应内容执行此操作(他提供了读取媒体文件内部比特率的示例)

或者,在这篇文章的三分之四处,查找以下标题:“以编程方式设置服务器变量”

他描述了如何构建http模块/处理程序——理论上,您可以使用该模块/处理程序根据URL(如媒体服务器服务的URL)触发IIS的限制


在我周末回家之前从未尝试过这一方法。祝你好运!

我建议你在这里看看这个简单的项目:。它引入了一种能够增加网络延迟的WCF客户端行为