0

I have an iPad client application that are installed in around- 3000 - 4000 iPads. They are available in remote areas and are talking to a web service for submitting the data they collect. The data submission call from the iPads may happen together. I have one single server where all the data is stored in SQL server. The web services are written in .NET and are hosted in IIS 7.

Currently the iPad application does not work as expected as the web services are not able to handle that many requests simultaneously.

What is the best possible way to handle this scenario? Is the delay/scalability issue caused by DB access? Can an in-memory caching at web-service side solve the issue?

I am not in a position to invest in a separate server. So would like to know the best solution for handling as many requests together. The DB insertion can be done asynchronously. Most important task is to bring the data collected on iPads to server.

attuser
  • 111
  • 8
  • 1
    At a glance I'd say the problem is the number of concurrent calls your service receives. What binding are you using? Some of them have settings to allow a given number of concurrent connections. – Tim May 29 '13 at 08:37
  • 1
    Take a look at the [ServiceThrottlingBehavior](http://msdn.microsoft.com/en-us/library/vstudio/ms522191.aspx) class - there is a `MaxConcurrentCalls` property that has a default value of 16 (16 * number of processors in .NET 4.5) and a maximum value equal to `Int32.Max`. – Tim May 29 '13 at 08:43
  • wsHttpBinding. But do you have any suggestions on the best binding to use? – attuser May 29 '13 at 09:05
  • 1
    wsHttpBinding should be fine, since you're dealing with non-.NET clients. I don't think it's a binding issue as much as it's a load issue, hence the reason I suggested the `ServiceThrottlingBehavior` class. – Tim May 29 '13 at 09:13

0 Answers0