Méthodes asynchrones de ApiController — quel est le bénéfice? Quand les utiliser?

(Ce qui a probablement des doublons la question ASP.NET MVC4 contrôleur Async - Pourquoi l'utiliser?, mais sur webapi, et je ne suis pas d'accord avec les réponses là)

Supposons que j'ai un long exécution de requête SQL. Ses données doivent être sérialisé en JSON et envoyée au navigateur (comme une réponse pour la demande xhr). Exemple de code:

public class DataController : ApiController
{
    public Task<Data> Get()
    {
        return LoadDataAsync(); //Load data asynchronously?
    }
}

Ce qui se passe réellement quand je fais $.getJson ("api/data', ...) (voir cette affiche http://www.asp.net/posters/web-api/ASP.NET-Web-API-Poster.pdf):

  1. [IIS] la Demande est acceptée par IIS.
  2. [IIS] IIS attend pour un thread [THREAD] de la gestion de la piscine (http://msdn.microsoft.com/en-us/library/0ka9477y(v=vs. 110).aspx) et commence à travailler en elle.
  3. [THREAD] Webapi Crée de nouvelles DataController objet dans ce thread, et d'autres classes.
  4. [THREAD] Utilise des tâches parallèles lib pour démarrer sql-query dans [THREAD2]
  5. [THREAD] remonte pour la gestion de la piscine, prêt pour un autre traitement
  6. [THREAD2] fonctionne avec sql pilote, lit les données qu'il soit prêt et invoque [THREAD3] de réponse pour la demande xhr
  7. [THREAD3] envoie la réponse.

N'hésitez pas à me corriger, s'il y a quelque chose de mal.

Dans la question ci-dessus, disent-ils, le point et le résultat est, que [THREAD2] n'est pas de La gestion de la Piscine, cependant l'article MSDN (lien ci-dessus) dit que

Par défaut, en parallèle de la bibliothèque de types comme Task et Task<TResult> utiliser le pool de threads pour exécuter les tâches.

Je fais donc une conclusion, que tous les TROIS FILS sont gérés de la piscine.

En outre, si j'ai utilisé la méthode synchrone, je voudrais quand même garder mon serveur réactif, à l'aide d'un thread (à partir de la précieuse pool de threads).

Donc, quel est le point réel de la permutation de 1 fil à 3 fils? Pourquoi ne pas simplement de maximiser les threads du pool de thread?

Y a clairement des moyens utiles de l'aide de contrôleurs async?