Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Klassen ServiceThrottlingBehavior exponerar egenskaper som du kan använda för att begränsa hur många instanser eller sessioner som skapas på programnivå. Med det här beteendet kan du finjustera prestanda för ditt WCF-program (Windows Communication Foundation).
Kontrollera tjänstinstanser och samtidiga anrop
Använd egenskapen MaxConcurrentCalls för att ange det maximala antalet meddelanden som aktivt bearbetas i en ServiceHost klass och MaxConcurrentInstances egenskapen för att ange det maximala antalet InstanceContext objekt i tjänsten.
Eftersom fastställandet av inställningarna för dessa egenskaper vanligtvis sker efter verklig upplevelse av att köra programmet mot belastningar, anges vanligtvis inställningarna för ServiceThrottlingBehavior egenskaperna i en programkonfigurationsfil med hjälp av <serviceThrottling-elementet> .
I följande kodexempel visas användningen av ServiceThrottlingBehavior klassen från en programkonfigurationsfil som anger MaxConcurrentSessionsegenskaperna , MaxConcurrentCallsoch MaxConcurrentInstances till 1 som ett trivialt exempel. Verklig upplevelse avgör de optimala inställningarna för ett visst program.
<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>
Det exakta körningsbeteendet beror på värdena av egenskaperna ConcurrencyMode och InstanceContextMode, vilka styr hur många meddelanden som kan köras i en åtgärd samtidigt och tjänstens InstanceContext livslängd i förhållande till inkommande kanalsessioner.
Mer information finns i MaxConcurrentCalls, och MaxConcurrentInstances.