À l'aide de async/await et le retour Tâche<HttpResponseMessage> à Partir de ASP.NET Web Méthodes de l'API
J'ai une Bibliothèque de classes Portable (PCL) méthode comme ceci:
public async Task<string> GetLineStatuses()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
{
return response.GetResponseStream().ReadAllText();
}
}
Mon ASP.NET Web Api méthode ressemble à ceci:
public async Task<HttpResponseMessage> Get()
{
HttpResponseMessage response = new HttpResponseMessage();
string statuses = await service.GetStatuses();
response.Content = new StringContent(statuses);
return response;
}
Quelles sont les implications de retour d'une mission dans l'API Web. Est-ce possible? La seule raison pour laquelle je veux utiliser attendent est si je peux utiliser une Bibliothèque de classes Portable (PCL). Quelles sont les bonnes pratiques? Dois-je avoir une version synchrone de ma méthode et un système de version? Quelles sont les performances et la lisibilité du code et de la maintenabilité des implications?
Aussi aurais-je le même effet si je retourne Task<string>
plutôt que Task<HttpResponseMessage>
?
Je belive ASP.NET dans .Net 4.5 soutien
Je veux aussi savoir ce que les performances et la lisibilité du code et de la maintenabilité des implications?
async
méthodes, de sorte que votre code devrait fonctionner de la nageoire. Pourquoi demandez-vous si cela est autorisé? N'avez-vous pas l'essayer?Je veux aussi savoir ce que les performances et la lisibilité du code et de la maintenabilité des implications?
OriginalL'auteur Muhammad Rehan Saeed | 2012-12-28
Vous devez vous connecter pour publier un commentaire.
Async et await sont parfaitement acceptables dans ASP.NET. Voici un Scott Handselman vidéo de démo: http://www.asp.net/vnext/overview/aspnet/async-and-await
"Aussi aurais-je le même effet si je retourne
Task<string>
plutôt queTask<HttpResponseMessage>
?"Pas vraiment sûr de ce que vous entendez par là. La Tâche est comme un conteneur de l'objet, de sorte qu'un
Task<string>
contiendra votre chaîne et unTask<HttpResponseMessage>
contiendra votre HttpResponseMessage résultat... Est-ce que tu veux dire? Je pense que la méthode est parfaitement acceptable. Si vous avez juste besoin de la chaîne, puis aller avec qui. Pas de point dans le retour de plus que vous avez besoin.Je ne suis toujours pas vous suivre. Gardez à l'esprit, c'est de ne pas retourner une chaîne de caractères, mais une Tâche<string>. La chaîne, dans la Tâche<string>.Le résultat peut être rendu comme contenu, mais une Tâche<string> lui-même ne le peut pas.
Retourne une chaîne et retourne un HttpResponseMessage avec un StringContent et deux choses différentes. Si vous retourner une chaîne de caractères, WebAPi va utiliser le contenu de la négociation pour trouver un formateur qui peut sérialiser cette chaîne. Si vous retournez un StringContent, que la chaîne va directement dans la réponse. Mais le retour d'une Tâche<string> qui termine finalement avec une chaîne doit être équivalent à un retour de cette chaîne directement autant que WebAPI.
OriginalL'auteur Pete