Utilisation de async / wait et retour de la tâche à partir des méthodes API Web ASP.NET

J’ai une méthode de bibliothèque de classes portable (PCL) comme celle-ci:

public async Task GetLineStatuses() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync()) { return response.GetResponseStream().ReadAllText(); } } 

Ma méthode ASP.NET Web Api ressemble à ceci:

 public async Task Get() { HttpResponseMessage response = new HttpResponseMessage(); ssortingng statuses = await service.GetStatuses(); response.Content = new SsortingngContent(statuses); return response; } 

Quelles sont les implications du retour d’une tâche dans l’API Web? Est-ce permis? La seule raison pour laquelle je souhaite utiliser l’attente est que je puisse utiliser une bibliothèque de classes portable (PCL). Quelle est la meilleure pratique? Devrais-je avoir une version synchrone de ma méthode et une version asynchrone? Quelles sont les implications en termes de performances, de lisibilité du code et de maintenabilité?

De plus, aurais-je le même effet si je retournais Task plutôt que Task ?

Async et wait sont parfaitement acceptables dans ASP.NET. Voici une vidéo de Scott Handselman en démonstration: http://www.asp.net/vnext/overview/aspnet/async-and-await

“De plus, aurais-je le même effet si je retournais la Task plutôt que la Task ?”

Pas vraiment sûr de ce que vous entendez par là. La tâche est comme un conteneur pour l’object, donc une Task contiendrait le résultat de votre chaîne et une Task contiendrait votre résultat HttpResponseMessage … C’est ce que vous voulez dire? Je pense que l’une ou l’autre méthode est parfaitement acceptable. Si vous avez juste besoin de la ficelle, optez pour cela. Inutile de retourner plus que ce dont vous avez besoin.