Verwenden von ServiceThrottlingBehavior zur Steuerung der Leistung des WCF-DienstsUsing ServiceThrottlingBehavior to Control WCF Service Performance

Mit der ServiceThrottlingBehavior-Klasse werden Eigenschaften verfügbar gemacht, mit denen die Anzahl der Instanzen oder Sitzungen begrenzt wird, die auf Anwendungsebene erstellt werden dürfen.The ServiceThrottlingBehavior class exposes properties that you can use to limit how many instances or sessions are created at the application level. Mit diesem Verhalten können Sie Optimieren der Leistung der Windows Communication Foundation (WCF)-Anwendung.Using this behavior, you can fine-tune the performance of your Windows Communication Foundation (WCF) application.

Steuern von Dienstinstanzen und gleichzeitigen AufrufenControlling Service Instances and Concurrent Calls

Verwenden Sie die MaxConcurrentCalls-Eigenschaft, um die maximale Anzahl der Nachrichten anzugeben, die aktiv in einer ServiceHost-Klasse verarbeitet werden und die MaxConcurrentInstances-Eigenschaft, um die maximale Anzahl der InstanceContext-Objekte im Dienst anzugeben.Use the MaxConcurrentCalls property to specify the maximum number of messages actively processing across a ServiceHost class, and the MaxConcurrentInstances property to specify the maximum number of InstanceContext objects in the service.

Da bestimmen die Einstellungen für diese Eigenschaften in der Regel nach praktische Erfahrung Ausführen der Anwendung für stattfindet geladen wird, die Einstellungen für die ServiceThrottlingBehavior Eigenschaften ist in der Regel angegeben, in einer Anwendungskonfigurationsdatei mithilfe der <ServiceThrottling > Element.Because determining the settings for these properties usually takes place after real-world experience running the application against loads, the settings for the ServiceThrottlingBehavior properties is typically specified in an application configuration file using the <serviceThrottling> element.

Im folgenden Codebeispiel wird die Verwendung der ServiceThrottlingBehavior-Klasse von einer Anwendungskonfigurationsdatei gezeigt, die die MaxConcurrentSessions, MaxConcurrentCalls-Eigenschaft und die MaxConcurrentInstances-Eigenschaft in einem einfachen Beispiel auf 1 festlegt.The following code example shows the use of the ServiceThrottlingBehavior class from an application configuration file that sets the MaxConcurrentSessions, MaxConcurrentCalls, and MaxConcurrentInstances properties to 1 as a trivial example. Die optimalen Einstellungen für eine bestimmte Anwendung finden Sie durch praktische Erfahrung heraus.Real-world experience determines the optimal settings for any particular application.

<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-Eigenschaft und der InstanceContextMode-Eigenschaft ab, mit denen die Anzahl der gleichzeitig in einem Vorgang ausführbaren Nachrichten und die Lebensdauer des Dienst-InstanceContext relativ zu den eingehenden Kanalsitzungen bestimmt wird.The exact run-time behavior depends upon the values of the ConcurrencyMode and InstanceContextMode properties, which control how many messages can execute inside an operation at once and the lifetimes of the service InstanceContext relative to incoming channel sessions, respectively.

Ausführliche Informationen finden Sie unter MaxConcurrentCalls und MaxConcurrentInstances.For details, see MaxConcurrentCalls, and MaxConcurrentInstances.

Siehe auchSee Also

ServiceThrottlingBehavior
MaxConnections