遏制

遏制示例演示如何使用遏制控制。遏制控件将限制并发调用、实例或会话的数目以防止过度使用资源。您可以在服务配置文件设置中指定遏制行为。此示例基于实现计算器服务的入门示例

在此示例中,客户端是一个控制台应用程序 (.exe),服务是由 Internet 信息服务 (IIS) 承载的。

ms751436.note(zh-cn,VS.100).gif注意:
本主题的末尾介绍了此示例的设置过程和生成说明。

服务配置文件在throttling element中指定遏制控制,如下面的示例配置所示。

    <behaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceDebug includeExceptionDetailInFaults="False" />
          <serviceMetadata httpGetEnabled="True"/>
          <!-- Specify throttling behavior -->
        <serviceThrottling maxConcurrentCalls="2"
                           maxConcurrentInstances="10"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

按照配置要求,服务将最大并发调用数限制为 2,最大并发实例数限制为 10。

为了演示遏制,我们对服务方法定义了休眠时间,如下所示:

public double Add(double n1, double n2)
{
    System.Threading.Thread.Sleep(2000);
    return n1 + n2;
}

运行示例时,操作请求和响应将显示在客户端控制台窗口中。并发执行 Add 和 Subtract 方法以及 Multiply 和 Divide 方法,条件是并发执行的方法不超过 2 个,并由此而表现出遏制。

Press <ENTER> to terminate client.
Add(100,15.99)
Subtract(145,76.54)
Multiply(9,81.25)
Divide(22,7)

Add Result: 115.99
Subtract Result: 68.46
Multiply Result: 731.25
Divide Result: 3.14285714285714

Press any key to continue . . .

设置、生成和运行示例

  1. 请确保已经执行了 Windows Communication Foundation 示例的一次性安装过程

  2. 若要生成 C# 或 Visual Basic .NET 版本的解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。

  3. 若要用单机配置或跨计算机配置来运行示例,请按照Running the Windows Communication Foundation Samples中的说明进行操作。

ms751436.Important(zh-cn,VS.100).gif 注意:
您的计算机上可能已安装这些示例。在继续操作之前,请先检查以下(默认)目录:

<安装驱动器>:\WF_WCF_Samples

如果此目录不存在,请访问针对 .NET Framework 4 的 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 示例(可能为英文网页),下载所有 Windows Communication Foundation (WCF) 和 WF 示例。此示例位于以下目录。

<安装驱动器>:\WF_WCF_Samples\WCF\Basic\Services\Behaviors\Throttling