Partilhar via


Limitação

O exemplo de limitação demonstra o uso de controles de limitação. Os controles de limitação impõem limites ao número de chamadas, instâncias ou sessões simultâneas para evitar o consumo excessivo de recursos. O comportamento de limitação é especificado nas definições do arquivo de configuração do serviço. Este exemplo é baseado na Introdução que implementa um serviço de calculadora.

Neste exemplo, o cliente é um aplicativo de console (.exe) e o serviço é hospedado pelo IIS (Serviços de Informações da Internet).

Nota

O procedimento de configuração e as instruções de compilação para este exemplo estão localizados no final deste tópico.

O arquivo de configuração de serviço especifica controles de limitação em um <serviceThrottling>, conforme mostrado na configuração de exemplo a seguir.

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

Conforme configurado, o serviço limita o máximo de chamadas simultâneas a 2 e o número máximo de instâncias simultâneas a 10.

Para demonstrar a limitação, definimos um tempo de suspensão nos métodos de serviço da seguinte forma:

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

Quando você executa o exemplo, as solicitações de operação e as respostas são exibidas na janela do console do cliente. Os métodos Add e Subtract são executados simultaneamente e os métodos Multiply e Divide são executados simultaneamente, provando que não mais de 2 métodos podem ser executados simultaneamente, demonstrando assim a limitação.

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 . . .

Para configurar, compilar e executar o exemplo

  1. Certifique-se de ter executado o procedimento de instalação única para os exemplos do Windows Communication Foundation.

  2. Para criar a edição C# ou Visual Basic .NET da solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

  3. Para executar o exemplo em uma configuração de máquina única ou cruzada, siga as instruções em Executando os exemplos do Windows Communication Foundation.