Concurrent DataPortal Calls from Single Client

Concurrent DataPortal Calls from Single Client

Old forum URL: forums.lhotka.net/forums/t/12249.aspx


bwebber posted on Wednesday, December 04, 2013

In my CSLA Silverlight application my DataPortal will not receive any additional requests from the same client if it is currently processing a request.

I.e. if I start a DataPortal_Fetch which runs a slow database procedure, no other requests are honored until the fetch completes.

From what I have read here this should not be the case and the WcfPortal should allow concurrent requests from the same user.  I am definitely not using the SynchronizedWcfProxy (I am using a CompressedProxy which inherits from WcfProxy).

We have tested and concurrent requests from separate client instances are processed asynchronously, its just the requests from the same client.

I have not set up any serviceThrottling settings on the Wcf service.

Any idea what may be preventing these concurrent calls?

JonnyBee replied on Wednesday, December 04, 2013

If you run in browser this may be restricted by the web browser or it is restricted by the maxconnections setting for Silverlight.

The maxconnection parameter determines how many connections can be made to a specific IP address. The parameter appears as follows:

<connectionManagement>
    <add address="*" maxconnection="2">
</connectionManagement>

According to RFC 2068:

"Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD maintain AT MOST 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion of the Internet or other networks."

 

bwebber replied on Thursday, December 05, 2013

Hi JonnyBee

Thanks for posting.  I have tried adding

  <system.Net>

    <connectionManagement>

      <add address="*" maxconnection="2" />

    </connectionManagement>

  </system.Net>

into the ClientConfig file, but it is still blocking.  I also tried the app running OOB but still blocking.  I tried upping the maxconnection to 4 ans specifying the exact address but still no luck.

I am testing by doing the following in the app:  Initiating a fetch (which I have intentionally delayed for 15 seconds by adding a WAITFOR DELAY '00:00:15' into the stored proc), then initiating another fetch which normally takes about 0.5 seconds.  The 2nd fetch only starts once the 1st fetch has completed and therefore takes over 15 seconds.

Anything else I can check to try enable multiple connections.  I would be happy with 2, but at the moment it seems to only allow 1 :(

 

 

Copyright (c) Marimer LLC