【问题标题】:Set maximum download speed in WCF在 WCF 中设置最大下载速度
【发布时间】:2011-05-26 05:34:12
【问题描述】:

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

如何在 WCF 中完成?

谢谢!

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    WCF 通过 ServiceThrottlingBehavior 类处理限制。

    How to throttle a Wcf service

    WCF 提供了一种限制行为 管理服务器负载和资源 消费(与以下 属性):

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

    • 最大并发实例数。限制服务实例的数量 在给定的时间分配。为了 PerCall 服务,此设置匹配 并发调用的数量。为了 PerSession 服务,这个设置 匹配活动会话的数量 实例。这个设置无所谓 对于单实例模式,因为 只创建了一个实例。这 此设置的默认值为 2,147,483,647。

    • 最大并发会话数。限制允许的活动会话数 服务。这包括应用程序 会话,传输会话(对于 TCP 和命名管道,例如), 可靠的会话和安全的 会议。默认值为 10。

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

    另见:Concurrency and Throttling Configurations for WCF Services

    【讨论】:

      【解决方案2】:

      好的,周五晚些时候在黑暗中疯狂拍摄: Scott Gu 在博客中介绍了 IIS 7 的新比特率限制模块:http://weblogs.asp.net/scottgu/archive/2008/03/18/iis-7-0-bit-rate-throttling-module-released.aspx

      它实际上是为媒体文件设计的,但开箱即用,它是由扩展程序触发的。就其本身而言,这可能还不够——您正在从服务提供文件——.svc,并且您可能不想限制所有服务调用。 (如果您不介意全部限制它们,它可能开箱即用 - 只需在 .svc 上设置规则。

      更有趣的是,这篇文章是:http://learn.iis.net/page.aspx/149/bit-rate-throttling-extensibility-walkthrough/ 这个人谈论如何自定义节流器。

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

      或者,在文章的大约 3/4 处,查找以下标题:“以编程方式设置服务器变量”

      他描述了如何构建一个 http 模块/处理程序——理论上你可以使用它来触发 IIS 基于 URL 的限制(如媒体服务器服务的 url)

      在我周末回家之前从未尝试过这个 - 总 WAG。祝你好运!

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2012-09-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-16
          • 1970-01-01
          相关资源
          最近更新 更多