Sono stato un convinto sostenitore di non bloccare mai il codice asincrono. Ho ritenuto che fosse sempre meglio usare un'API sincrona piuttosto che eseguire la macchina a stati meno efficiente generata dal compilatore anche se non ci sono possibilità di deadlock.
Ma nel caso specifico di System.Net.HttpClient
con codice che non può andare fino in fondo asincrono (come un'app console), non è meglio sfruttare il caching della connessione di HttpClient piuttosto che usare qualcosa come WebRequest che deve negoziare la sessione TCP su ogni invocazione?
Sto iniziando a pensare che i vantaggi di riutilizzare HttpClient, anche se blocchi con .Result
, superano invece i motivi dell'utilizzo di un'API sincrona.
Si presume naturalmente che HttpClient sia un'istanza condivisa, che venga riutilizzata e funzioni in un ambiente privo di contesto come un'app per console o un nucleo di asp.net.