Wednesday 25 May 2016

What is Throttling in WCF?



WCF throttling provides properties that you can use to limit how many instances or sessions are created at the application level.

Throttling is a behavior which has three attributes:-
1. maxConcurrentCalls :- limits total no of calls that currently be in progress across  all   service instance.Default value of maxConcurrentCalls is 16.
2. maxConcurrentInstances :-  limits the number of instanceContext objects that execute at one time across a serviceHost. Default value is Int32.Max i.e. 2147483647.
3. maxConcurrentSessions :- limits the no of sessions a serviceHost Object can accept. Default value is 10.

Throttling properties can be configured either in config file or programmatically.

Configuration File:-
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceThrottling
maxConcurrentCalls="10"
maxConcurrentInstances="100"
maxConcurrentSessions="10"/>
        
</behavior>
</serviceBehaviors>
</behaviors>

Programmatically:-

ServiceHost host = new ServiceHost(typeof(MyService));
           ServiceThrottlingBehavior throttle
 = host.Description.Behaviors.Find();
            if (throttle == null)
            {
                throttle = new ServiceThrottlingBehavior();
                throttle.MaxConcurrentCalls = 100;
                throttle.MaxConcurrentSessions = 20;
                throttle.MaxConcurrentInstances = 100;
                host.Description.Behaviors.Add(throttle);
            }

            host.Open();

No comments:

Post a Comment

Note: only a member of this blog may post a comment.