Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La ServiceThrottlingBehavior classe expose les propriétés que vous pouvez utiliser pour limiter le nombre d’instances ou de sessions créées au niveau de l’application. À l’aide de ce comportement, vous pouvez affiner les performances de votre application Windows Communication Foundation (WCF).
Contrôle des instances de service et des appels simultanés
Utilisez la MaxConcurrentCalls propriété pour spécifier le nombre maximal de messages en cours de traitement actif sur une ServiceHost classe et la MaxConcurrentInstances propriété pour spécifier le nombre maximal d’objets InstanceContext dans le service.
Étant donné que la détermination des paramètres de ces propriétés a généralement lieu après l’exécution réelle de l’application sur des charges, les paramètres des ServiceThrottlingBehavior propriétés sont généralement spécifiés dans un fichier de configuration d’application à l’aide de l’élément <serviceThrottling> .
L’exemple de code suivant montre l’utilisation de la ServiceThrottlingBehavior classe à partir d’un fichier de configuration d’application qui définit le MaxConcurrentSessions, MaxConcurrentCallset MaxConcurrentInstances les propriétés sur 1 comme exemple trivial. L’expérience réelle détermine les paramètres optimaux pour n’importe quelle application particulière.
<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>
Le comportement exact du runtime dépend des valeurs des propriétés ConcurrencyMode et InstanceContextMode, qui contrôlent le nombre de messages InstanceContextMode pouvant s’exécuter à l’intérieur d’une opération à la fois et les durées de vie du service par rapport aux sessions de canal entrantes, respectivement.
Pour plus d’informations, voir MaxConcurrentCallset MaxConcurrentInstances.