I saw the light How to increase amount of silverlight duplex clients. - Alexey Zakharov's Blog

How to increase amount of silverlight duplex clients.

Amount of silverlight polling duplex clients is defined by MaxConcurrentSessions throttling property. Default value is 10.

To increase it you should programmatically add ServiceThrottlingBehavior.

Here is some code that shows how it could be done:

   1: public class YourDuplexServiceFactory : ServiceHostFactoryBase
   2: {
   3:     public override ServiceHostBase CreateServiceHost(string constructorString,
   4:                                                       Uri[] baseAddresses)
   5:     {
   6:         return new PollingDuplexSimplexServiceHost(baseAddresses);
   7:     }
   8: }
   9:  
  10: internal class PollingDuplexSimplexServiceHost : ServiceHost
  11: {
  12:     public PollingDuplexSimplexServiceHost(params Uri[] addresses)
  13:     {
  14:         InitializeDescription(typeof(YourDuplexService), new UriSchemeKeyedCollection(addresses));
  15:         Description.Behaviors.Add(new ServiceMetadataBehavior());
  16:  
  17:         var throttle = Description.Behaviors.Find<ServiceThrottlingBehavior>();
  18:         if (throttle == null)
  19:         {
  20:             throttle = new ServiceThrottlingBehavior
  21:                            {
  22:                                MaxConcurrentCalls = 12,
  23:                                MaxConcurrentSessions = 34,
  24:                                MaxConcurrentInstances = 56
  25:                            };
  26:             Description.Behaviors.Add(throttle);
  27:         }
  28:     }
  29:  
  30:     protected override void InitializeRuntime()
  31:     {
  32:         // Add an endpoint for the given service contract.
  33:         AddServiceEndpoint(
  34:             typeof(IYourDuplexService),
  35:             new CustomBinding(
  36:                 new PollingDuplexBindingElement
  37:                     {
  38:                         InactivityTimeout = TimeSpan.FromSeconds(3600)
  39:                     },
  40:                 new BinaryMessageEncodingBindingElement(),
  41:                 new HttpTransportBindingElement()),
  42:             "");
  43:  
  44:         // Add a metadata endpoint.
  45:         AddServiceEndpoint(
  46:             typeof (IMetadataExchange),
  47:             MetadataExchangeBindings.CreateMexHttpBinding(),
  48:             "mex");
  49:  
  50:         base.InitializeRuntime();
  51:     }
  52: }

PS: I don't like how duplex services work. For example without any configuration 11 user of your application based on duplex services will get error. Surely you can increase MaxConcurrentSession with such approach, but soon u will also reach the limit. If you have got same experience please write about it in comments!!!!

Published Friday, April 17, 2009 1:43 AM by brainbox
Filed under: , ,

Comments

# re: How to increase amount of silverlight duplex clients.

Saturday, June 27, 2009 7:18 PM by Jason

Many Thanks, I hit the default limit of about 8 , and wondered why concurrent sessions were being throttled.  This has helped me get around that.

# re: How to increase amount of silverlight duplex clients.

Wednesday, July 08, 2009 8:10 AM by Michiel

Thanks for the example. I posted your URL in the comments on my blog post about a Silverlight 3 WCF Chat application with WCF duplex binding.

www.michielpost.nl/PostDetail_28.aspx

# re: How to increase amount of silverlight duplex clients.

Thursday, July 16, 2009 1:58 PM by ken.smith

Yeah, this was a pretty dumb default on Microsoft's part.  "Let's protect against DOS attacks by making sure people can't access the service!  Yeah, that's the ticket!"

# re: How to increase amount of silverlight duplex clients.

Tuesday, July 21, 2009 8:32 PM by Stefan

I saw a demo by a company called Eikos Partners at an event recently and they were using Kaazing to make there Silverlight trading client scale and deliver real-time updates including chat. I found this post via this <a href="dotnetaddict.dotnetdevelopersjournal.com/sl_polling_duplex.htm">blog post</a> that's why I thought you might want to know.

# re: How to increase amount of silverlight duplex clients.

Tuesday, August 18, 2009 8:59 AM by amritpal

i have set this code in my application.I have develop a silverlight 3.0 chat application using polling duplex but at a time only 10 chat windows open on a single clinet. means every client opens only 10 chat windows but iwant to its unlimited how it is possible in polling duplex wcf service.

# re: How to increase amount of silverlight duplex clients.

Friday, October 09, 2009 11:10 AM by tyhugh2

#amritpal

Yes, I also am interested to know if ulimited polling is possible in a duplex wcf service? And also, if sockets are more of a reliable solution? Are sockets limited to a number of connections?

Leave a Comment

(required) 
(required) 
(optional)
(required)