title: Responsive desktop application using Asynchronous I/O vs Multi-threading
body: <p>I have .Net desktop application written in c# &amp; WPF.  There is no direct back end database used to load the data. Data for the views are consumed through different types of web services hosted on multiple Web Server.</p>
  
  <p>Below are the different types of web services consumed in the application</p>
  
  <ol>
  <li>Java SOAP web service</li>
  <li>Java RESTful service</li>
  <li>.Net Service Stack Service</li>
  <li>WCF Service</li>
  </ol>
  
  <p>So to show the data in the particular view of the application I consume around 100+ different services synchronously. Off course application will not be response if all the services are consumed synchronously.  To make the application responsive, I have used the multi-threading. That is, I invoked all the web services in non-UI thread.  All these web services are invoked synchronously using different .net libraries. On an average approximately it takes around 60 to 90 seconds to get all the data using web services and render it in UI.</p>
  
  <p>Currently I am working on the application performance optimization.  My thought was that, using multiple threads is one of the problems for application slowness.  Not really done any bench marking. It is just my thought.<br>
  When we look at operation of making calls to multiple web services belong to the I/O bound operation and not a CPU bound operation. Since I invoked all the web services synchronously on the thread, it became a CPU bound operation. </p>
  
  <p>So to improve the application performance I am thinking of converting all the synchronous calls to Asynchronous I/O call without using explicit thread.  All the Dot Net libraries which I used for invoking the web services are having the support for the Asynchronous I/O call. </p>
  
  <p>Will I get considerable amount of improvement on performance by moving from synchronous call made using multi-threading to Asynchronous I/O call? Is anybody did some bench marking?</p>