J'écris un nouveau code et je voudrais l'écrire en utilisant async et await, mais le code appelant n'est actuellement pas écrit en asynchrone. Est-il correct d'écrire le nouveau code en asynchrone et de l'appeler sync jusqu'à ce que le code appelant prenne en charge async? Ou devrais-je écrire la synchronisation du code, puis le convertir à une date ultérieure? Et serait-ce considéré comme une dette technique?Ecriture d'un nouveau code en asynchrone mais synchro d'appel
public Result Execute(Paramerters parameters) {
return ExecuteAsync(parameters).Result;
}
public Task<Result> ExecuteAsync(Paramerters parameters) {
...
}
Execute
est sur une interface et est appelé à partir d'un autre code qui n'est pas encore async. Est-il correct de créer la version asynchrone et de l'appeler de Execute
jusqu'à ce que le code appelant Execute
soit converti en asynchrone? Mon ancien code est écrit en .net 4.5.1 mais n'est pas encore converti en asynchrone.
Je recommande vivement de rester avec le mantra "Async tout le chemin vers le bas" et mettre à jour le code tout de suite. C'est une bonne lecture sur le sujet: http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html Gardez aussi à l'esprit que le "nous réparerons le reste plus tard" "approche est très probablement l'illusion la plus omniprésente dans l'ensemble de l'industrie du développement de logiciels. Ne complétez pas les choses à moitié. Soit rendre le code asynchrone ou non. – David
Cela s'appelle "sync over async" et est un anti-pattern. C'est * généralement * une très mauvaise idée, et certaines combinaisons de sync-over-async ou async-over-sync peuvent * bloquer complètement * ... –