ServiceThrottlingBehavior gebruiken om de prestaties van WCF-service te beheren
De ServiceThrottlingBehavior klasse bevat eigenschappen die u kunt gebruiken om te beperken hoeveel exemplaren of sessies op toepassingsniveau worden gemaakt. Met dit gedrag kunt u de prestaties van uw WCF-toepassing (Windows Communication Foundation) verfijnen.
Service-exemplaren en gelijktijdige aanroepen beheren
Gebruik de MaxConcurrentCalls eigenschap om het maximum aantal berichten op te geven dat actief wordt verwerkt in een ServiceHost klasse en de MaxConcurrentInstances eigenschap om het maximum aantal InstanceContext objecten in de service op te geven.
Omdat het bepalen van de instellingen voor deze eigenschappen meestal plaatsvindt nadat de praktijk de toepassing tegen belastingen uitvoert, worden de instellingen voor de ServiceThrottlingBehavior eigenschappen meestal opgegeven in een toepassingsconfiguratiebestand met behulp van het <element ServiceThrottling> .
In het volgende codevoorbeeld ziet u het gebruik van de ServiceThrottlingBehavior klasse uit een toepassingsconfiguratiebestand waarmee de MaxConcurrentSessions, MaxConcurrentCallsen MaxConcurrentInstances eigenschappen worden ingesteld op 1 als een triviaal voorbeeld. Ervaring in de praktijk bepaalt de optimale instellingen voor een bepaalde toepassing.
<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>
Het exacte uitvoeringsgedrag is afhankelijk van de waarden van de ConcurrencyMode en InstanceContextMode eigenschappen, die bepalen hoeveel berichten in een bewerking tegelijk kunnen worden uitgevoerd en de levensduur van de service InstanceContext ten opzichte van binnenkomende kanaalsessies.
Zie en MaxConcurrentInstancesvoor meer informatieMaxConcurrentCalls.