Fojtás

A szabályozási minta bemutatja a szabályozási vezérlők használatát. A szabályozási vezérlők korlátozza az egyidejű hívások, példányok vagy munkamenetek számát az erőforrások túlzott felhasználásának megakadályozása érdekében. A szabályozás viselkedését a szolgáltatás konfigurációs fájljának beállításai határozzák meg. Ez a minta a számológép szolgáltatást megvalósító Első lépések részen alapul.

Ebben a mintában az ügyfél egy konzolalkalmazás (.exe), és a szolgáltatást az Internet Information Services (IIS) üzemelteti.

Megjegyzés:

A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.

A szolgáltatáskonfigurációs fájl a serviceThrottling< szabályozási vezérlőit> határozza meg, ahogyan az a következő mintakonfigurációban is látható.

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

A konfigurált módon a szolgáltatás az egyidejű hívások maximális számát 2-re, az egyidejű példányok maximális számát pedig 10-re korlátozza.

A fojtás szemléltetéséhez az alábbiak szerint határozzuk meg a várakozási időt a szolgáltatási módszereken:

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

A minta futtatásakor a műveleti kérelmek és a válaszok megjelennek az ügyfélkonzol ablakában. Az Add és a Subtract függvények egyidejűleg kerülnek végrehajtásra, akárcsak a Szorzás és Osztás függvények, ezzel bizonyítva, hogy egyszerre legfeljebb két függvény hajtható végre egyidejűleg, ami a terhelés szabályozását szemlélteti.

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

A példa beállítása, elkészítése és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.

  2. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.

  3. Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.