Aracılığıyla paylaş


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.

Ayrıca bkz.