Comment puis-je convertir. Net 4.5 Async / Await exemple retour à 4.0
Ce qui serait l'équivalent asp.net mvc 4.0 code?
using System.Net;
using System.Net.Http;
using System.Web.Mvc;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace Web.Controllers
{
public class HomeController : Controller
{
private HttpClient httpClient = new HttpClient();
private static dynamic shots;
public async Task<ActionResult> Index()
{
if (shots == null)
{
try
{
var responseMessage =
await httpClient.GetAsync
("http://api.dribbble.com/shots/everyone?per_page=30");
responseMessage.EnsureSuccessStatusCode();
var value = await responseMessage.Content.ReadAsStringAsync();
shots = await JsonConvert.DeserializeObjectAsync<dynamic>(value);
}
catch (WebException)
{
}
}
return View(shots);
}
}
}
source d'informationauteur superlogical
Vous devez vous connecter pour publier un commentaire.
REMARQUE: Ce n'est que pour la Async/Await partie.
La façon la plus simple serait d'utiliser le Async CTP. Il a un Go live licence, ce qui signifie que vous pouvez l'utiliser dans le code de production. Vous aurez à faire quelques modifications dans les cas où la Async CTP ne fournit pas async équivalents.
Vous pouvez utiliser Async CTP sur Azure en tant que la seule chose nécessaire est une DLL supplémentaire. Il n'y a DONC question ici Async CTP et Windows Azure Soutien
J'ai été en utilisant Async CTP en production depuis plus d'un an sans problèmes. Je recommande vivement ce. La mise à niveau .NET 4.5 est plutôt facile, essentiellement, ne nécessitant que peu de classe changements de nom (TaskEx à la Tâche) et quelques changements de signature.
Si vous pouvez utiliser Visual Studio 2012 RC vous pouvez également utiliser le Pack de Ciblage asynchrone qui vous permettra d'utiliser votre code asynchrone .NET 4 avec moins de modifications que si vous utilisez la Async CTP.
Enfin, la force brute solution est d'utiliser le TaskIterator de la ParallelExtensionsExtras échantillons d'imiter ce que async/await. Vous aurez à convertir tous les invocations asynchrones à des tâches ou des méthodes qui renvoient une tâche, puis parcourir la liste de ces tâches. C'est beaucoup plus de code, mais c'est la seule solution si vous ne souhaitez pas utiliser le CTP du code, même si elle a un Go Live licence.
La ParallelExtensionsExtras inclure tâches asynchrones pour le WebClient qui peut être utile si vous décidez de passer de HttpClient pour WebClient.
Comme quelqu'un d'explorer comment obtenir l'ensemble de ce travail .NET 4.0 ainsi, je n'ai pas trouvé les réponses données sur ce fil et d'autres assez complet pour immédiatement se lever et courir. Donc la suite est plus complète réponse de quoi il suffit de faire:
======= ÉTAPE #1) de l'INSTALLATION de Microsoft ASP.NET l'API Web Client Bibliothèques (RC) 4.0.20505.0 =======
http://nuget.org/packages/Microsoft.AspNet.WebApi.Client
INSTALLE: System.Net.Http.dll, System.Net.Http.Formatting.dll, System.Net.Http.WebRequest.dll, Newtonsoft.Json.dll
======= ÉTAPE #2) de Microsoft .NET Framework 4 Client HTTP Bibliothèques 2.0.20505.0 =======
http://nuget.org/packages/Microsoft.Net.Http.
Si vous avez suivi l'étape n ° 1 déjà, NuGet aurait dû en fait déjà attrapé cette dépendance: System.Net.Http.dll. Système.Net.Http. est ce que propose HttpClient, HttpRequestMessage et HttpResponseMessage.
À ce stade, vous obtenez des erreurs lors de l'utilisation de async/await (si ces mots-clés sont toujours montrées comme des mots-clés) en disant des choses comme:
Ainsi:
======= ÉTAPE #3) Ciblage Asynchrone Pack pour Visual Studio =======
http://www.microsoft.com/en-us/download/details.aspx?id=29576
('...Visual Studio 11' nom des besoins de mise à jour sur NuGet, les deux en sont à la version 1.0.0)
Installe 1 dll: Microsoft.CompilerServices.AsyncTargetingPack.Net4.dll
"Le "Ciblage Asynchrone Pack pour Visual Studio 2012" permet aux projets de ciblage .NET Framework 4.0 ou Silverlight 5 utilisation de l'Asynchrone pour le langage C# 5 ... " http://www.microsoft.com/en-us/download/details.aspx?id=29576
Entre autres choses, ajoute TaskEx (un .NET 4.0 version qui se remplit de nombreuses nouvelles caractéristiques de la Tâche. TaskEx est uniquement pour la version 4.0... donc .NET 4.5: "la Tâche.Run" est en 4.0: "TaskEx.Exécuter", beaucoup d'autres choses sont comme ça avec cette bibliothèque)
Soudain, attendent et async et de l'ensemble des travaux commence à travailler comme un charme! Si vous réfléchissez, l'une des choses les plus importantes à ce sujet est la classe (déclarée sans espace de noms): AsyncCompatLibExtensions. Une statique de la classe contenant des méthodes d'extension sur en particulier:
1) Ruisseau. E. g. ReadAsync. Alors maintenant, stream.ReadAsync apparaît tout à coup! (il fait proprement enveloppements du flux BeginRead/méthodes beginwrite, si vous voulez savoir), 2) WebClient. E. g. webClient.DownloadStringTaskAsync, et plus encore.
AVERTISSEMENT Il n'y a pas de contrôle d'erreur!
Bien je me sens comme je l'ai appris quelque chose aujourd'hui, à la lecture de cet article http://blogs.msdn.com/b/pfxteam/archive/2010/11/21/10094564.aspx apprendre une meilleure façon de gérer cela 🙂
Vous pouvez utiliser le Ciblage Asynchrone Pack pour Visual Studio 2012 http://www.microsoft.com/en-us/download/details.aspx?id=29576
Je ne sais pas si vous avez trouvé une réponse à cette question mais je consultez ce lien: