在WCF中设置最大下载速度

问题描述

| 我正在使用WCF从数据库下载音频数据。我需要设置最大下载速度。 如何在WCF中完成? 谢谢!     

解决方法

WCF通过ServiceThrottlingBehavior类处理限制。 如何限制Wcf服务   WCF提供了一种节流行为   管理服务器负载和资源   消费(以下   属性):         MaxConcurrentCalls。限制可以并发请求的数量   由所有服务实例处理。   预设值为16。   MaxConcurrentInstances。限制可以   在给定的时间分配。对于   PerCall服务,此设置匹配   并发呼叫数。对于   PerSession服务,此设置   与活动会话数匹配   实例。此设置无关紧要   对于单实例化模式,因为   仅创建了一个实例。的   此设置的默认值为   2,147,483,647。   MaxConcurrentSessions。限制允许的活动会话数   服务。这包括申请   会话,传输会话(用于TCP   和命名管道),   可靠的会话,安全   会议。预设值为10。    我认为没有内置的机制可以控制带宽。您将需要实现一个自定义流。您使用线程来写入流。然后,您可以控制每秒写入多少数据。例如,您可以写入250Kb,然后执行线程休眠一秒钟。 另请参阅:WCF服务的并发和限制配置     ,好吧,疯狂的深夜拍摄在黑暗中: Scott Gu在博客上发布了有关IIS 7的新比特率限制模块的信息:http://weblogs.asp.net/scottgu/archive/2008/03/18/iis-7-0-bit-rate-throttling-module-已发布.aspx 它实际上是用于媒体文件的,但是开箱即用,由扩展名触发。仅凭其本身可能还不够-您正在从服务-.svc提供文件,并且您可能不想限制所有服务调用。 (如果您不介意限制所有功能,则可能会立即使用,只需在.svc上设置规则即可。 不过,更有趣的是这篇文章:http://learn.iis.net/page.aspx/149/bit-rate-throttling-extensibility-walkthrough/这个家伙谈论如何自定义节流阀。 您可以根据响应内容进行操作(他有读取媒体文件内部比特率的示例)。 或者,在文章的大约3/4处,查找以下标题:\“以编程方式设置服务器变量\” 他介绍了如何构建http模块/处理程序-从理论上讲,您可以使用该模块来基于URL(例如,媒体服务器服务的url)触发IIS的限制。 从来没有尝试过-在我周末回家之前进行全部WAG。祝好运!     ,我建议您在这里看看这个简单的项目:在WCF中模拟延迟和带宽限制。它引入了能够增加网络延迟的WCF客户端行为。