Freigeben über


Verwenden von ServiceThrottlingBehavior zur Steuerung der WCF-Dienstleistung.

Die ServiceThrottlingBehavior Klasse macht Eigenschaften verfügbar, mit denen Sie einschränken können, wie viele Instanzen oder Sitzungen auf Anwendungsebene erstellt werden. Mithilfe dieses Verhaltens können Sie die Leistung Ihrer Windows Communication Foundation (WCF)-Anwendung optimieren.

Steuern von Dienstinstanzen und gleichzeitigen Aufrufen

Verwenden Sie die MaxConcurrentCalls Eigenschaft, um die maximale Anzahl von Nachrichten anzugeben, die aktiv in einer ServiceHost Klasse verarbeitet werden, und die MaxConcurrentInstances Eigenschaft, um die maximale Anzahl von InstanceContext Objekten im Dienst anzugeben.

Da die Ermittlung der Einstellungen für diese Eigenschaften normalerweise nach praktischen Erfahrungen beim Ausführen der Anwendung unter Last erfolgt, werden die Einstellungen für die ServiceThrottlingBehavior-Eigenschaften typischerweise in einer Anwendungs-Konfigurationsdatei mithilfe des <ServiceThrottling-Elements> festgelegt.

Das folgende Codebeispiel zeigt die Verwendung der ServiceThrottlingBehavior Klasse aus einer Anwendungskonfigurationsdatei, die die Eigenschaften MaxConcurrentSessions, MaxConcurrentCalls und MaxConcurrentInstances als triviales Beispiel auf 1 festlegt. Die praxisnahe Erfahrung bestimmt die optimalen Einstellungen für jede bestimmte Anwendung.

<configuration>
  <appSettings>
    <!-- use appSetting to configure base address provided by host -->
    <add key="baseAddress" value="http://localhost:8080/ServiceMetadata" />
  </appSettings>
  <system.serviceModel>
    <services>
      <service 
        name="Microsoft.WCF.Documentation.SampleService"
        behaviorConfiguration="Throttled" >
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/SampleService"/>
          </baseAddresses>
        </host>
        <endpoint
          address=""
          binding="wsHttpBinding"
          contract="Microsoft.WCF.Documentation.ISampleService"
         />
        <endpoint
          address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange"
         />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior  name="Throttled">
          <serviceThrottling 
            maxConcurrentCalls="1" 
            maxConcurrentSessions="1" 
            maxConcurrentInstances="1"
          />
          <serviceMetadata 
            httpGetEnabled="true" 
            httpGetUrl=""
          />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Das genaue Laufzeitverhalten hängt von den Werten der ConcurrencyMode und InstanceContextMode Eigenschaften ab, die steuern, wie viele Nachrichten innerhalb eines Vorgangs gleichzeitig bearbeitet werden können, und die Lebensdauer der Funktion InstanceContext relativ zu den eingehenden Kanalsitzungen.

Weitere Informationen finden Sie unter MaxConcurrentCallsund MaxConcurrentInstances.

Siehe auch