Click here to Skip to main content
15,121,564 members
Please Sign up or sign in to vote.
5.00/5 (1 vote)
See more:
Hi ,
Background of the project:
We have been working on Silverlight application which uses PollingDuplex channel for getting data from the web server(IIS7).
The application gets data for every 500ms and updates onto the UI.  We have 5 clients connected and  at every second we have 20 updates flowing to Silverlight client application from server.

Problem statement:
It works fine for sometime but when the load on IIS increases or when there is a network flip, we see that the polling duplex channel starts buffering data and over period of time not all clients are showing same updates.
When we check further we see that the channel has buffered more than 5 minutes data and it takes time to clear it.

Binding details for the polling duplex channel are as shown below:
<binding name="UpdateServiceBinding" maxBufferSize="300000" maxBufferPoolSize="300000" maxReceivedMessageSize="300000" receiveTimeout="00:05:00" sendTimeout="01:00:00" openTimeout="00:01:00" inactivityTimeout="23:59:00" serverPollTimeout="00:01:00">
                     <readerQuotas maxDepth="64"  maxStringContentLength="300000" maxArrayLength="300000" maxBytesPerRead="100000" maxNameTableCharCount="100000"/>

Throttling settings of service:
<behavior name="RVSServiceBehavior">
                     <serviceMetadata httpGetEnabled="true"/>
                     <serviceDebug includeExceptionDetailInFaults="true"/>
                     <serviceThrottling maxConcurrentCalls="3000" maxConcurrentSessions="3000" maxConcurrentInstances="3000"/>

1.  How can we ensure that the channel does not buffer data and just sends the latest always?
2.  How can we optimize the IIS for increase in load?

Your help would be really appreciated.

1 solution

Using the WCF in this way would definitely cause delays. Why don't you just use

sockets. Since your application requires that you be connected to the server.

You could open a connection between the client and server, and implement a load-balancer

in the server, which will handle the traffic and | or communiation between your application

and the server. The server will be able to service your request with much less delay.
bhavya_bhst 6-Mar-14 7:13am
Do you have any sample on how we can do that?
I am aware of doing that with the latest .net 4.5 but not sure on how can we achieve with this
with our existing architecture


This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900