Ho pochi servizi REST asincroni che non dipendono l'uno dall'altro. Cioè mentre "attendo" una risposta da Service1, posso chiamare Service2, Service3 e così via.
Ad esempio, fai riferimento al seguente codice:
var service1Response = await HttpService1Async();
var service2Response = await HttpService2Async();
// Use service1Response and service2Response
Ora, service2Response
non dipende da service1Response
e possono essere recuperati indipendentemente. Quindi, non c'è bisogno che io attenda la risposta del primo servizio per chiamare il secondo servizio.
Non penso di poter usare Parallel.ForEach
qui poiché non è un'operazione legata alla CPU.
Per chiamare queste due operazioni in parallelo, posso chiamare use Task.WhenAll
? Un problema che vedo con Task.WhenAll
è che non restituisce risultati. Per recuperare il risultato posso chiamare task.Result
dopo aver chiamato Task.WhenAll
, poiché tutte le attività sono già state completate e tutto ciò che devo recuperare è la risposta?
Codice di esempio:
var task1 = HttpService1Async();
var task2 = HttpService2Async();
await Task.WhenAll(task1, task2)
var result1 = task1.Result;
var result2 = task2.Result;
// Use result1 and result2
Questo codice è migliore del primo in termini di prestazioni? Qualche altro approccio che posso usare?