Mit*_*eat 21
WCF通过ServiceThrottlingBehavior类处理限制.
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比特率节流模块,released.aspx
它实际上是用于媒体文件,但开箱即用,它是由扩展程序触发的.就其本身而言,这可能还不够 - 您从服务中提供文件 - .svc,并且您可能不希望限制所有服务调用.(如果你不介意将它们全部限制,它可能开箱即用 - 只需在.svc上设置一个规则.
更有趣的是,这篇文章:http://learn.iis.net/page.aspx/149/bit-rate-throttling-extensibility-walkthrough/ 这家伙谈论如何定制节流器.
您可以根据响应内容执行此操作(他有读取媒体文件内部比特率的示例).
或者,在文章的大约3/4处,查找此标题:"以编程方式设置服务器变量"
他描述了如何构建一个http模块/处理程序 - 理论上你可以使用它来触发基于URL的IIS限制(比如你的媒体服务器服务的url)
从来没有尝试过 - 在我周末回家之前总WAG.祝好运!