title: Should all my actions using IO be async?
body: <p>As I read the MSDN article <em><a href="http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4#HowRequestsProcessedByTP" rel="noreferrer">Using Asynchronous Methods in ASP.NET MVC 4</a></em>, I draw the conclusion that I should always use async await for I/O-bound operations.</p>
  
  <p>Consider the following code, where movieManager exposes the async methods of an ORM like Entity Framework.</p>
  
  <pre><code>public class MovieController : Controller
  {
      // fields and constructors
  
      public async Task&lt;ActionResult&gt; Index()
      {
          var movies = await movieManager.listAsync();
  
          return View(movies);
      }
  
      public async Task&lt;ActionResult&gt; Details(int id)
      {
          var movie = await movieManager.FindAsync(id);
  
          return View(movie);
      }
  }
  </code></pre>
  
  <ol>
  <li>Will this always give me better scalability and/or performance?
  <ul>
  <li>How can I measure this?  </li>
  </ul></li>
  <li>Why isn't this used in the "real world"?</li>
  <li>How about context synchronization?
  <ul>
  <li>Is it that bad, that I shouldn't use async I/O in ASP.NET MVC?</li>
  </ul></li>
  </ol>
  
  <p>I know these are a lot of questions, but literature on this topic has conflicting conclusions. Some say you should always use async for I/O dependent Tasks, others say you shouldn't use async in ASP.NET applications at all.</p>