WCF Hizmet Performansını Denetlemek için ServiceThrottlingBehavior Kullanma
sınıfı, ServiceThrottlingBehavior uygulama düzeyinde kaç örnek veya oturum oluşturulduğunu sınırlamak için kullanabileceğiniz özellikleri kullanıma sunar. Bu davranışı kullanarak, Windows Communication Foundation (WCF) uygulamanızın performansında ince ayarlamalar yapabilirsiniz.
Hizmet Örneklerini ve Eşzamanlı Çağrıları Denetleme
MaxConcurrentCalls bir sınıf genelinde ServiceHost etkin olarak işlen en fazla ileti sayısını belirtmek için özelliğini ve MaxConcurrentInstances hizmetteki en fazla nesne sayısını InstanceContext belirtmek için özelliğini kullanın.
Bu özelliklerin ayarlarının belirlenmesi genellikle uygulamayı yüklere karşı çalıştırılan gerçek dünya deneyiminden sonra gerçekleştiğinden, özelliklerin ServiceThrottlingBehavior ayarları genellikle serviceThrottling> öğesi kullanılarak <bir uygulama yapılandırma dosyasında belirtilir.
Aşağıdaki kod örneği, , MaxConcurrentCallsve MaxConcurrentInstances özelliklerini 1 olarak ayarlayan bir uygulama yapılandırma dosyasından MaxConcurrentSessionssınıfının kullanımını ServiceThrottlingBehavior basit bir örnek olarak gösterir. Gerçek dünya deneyimi, belirli bir uygulama için en uygun ayarları belirler.
<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>
Tam çalışma zamanı davranışı, bir işlem içinde aynı anda kaç iletinin yürütülebileceğini denetleyen ve InstanceContextMode özelliklerinin değerlerine ConcurrencyMode ve hizmetin gelen kanal oturumlarına InstanceContext göre yaşam sürelerine bağlıdır.
Ayrıntılar için, bkz. MaxConcurrentCallsve MaxConcurrentInstances.