Tengo pocos servicios REST asíncronos que no dependen unos de otros. Es decir, mientras "estoy esperando" una respuesta de Service1, puedo llamar a Service2, a Service3 y así sucesivamente.
Por ejemplo, consulte el siguiente código:
var service1Response = await HttpService1Async();
var service2Response = await HttpService2Async();
// Use service1Response and service2Response
Ahora, service2Response
no depende de service1Response
y se pueden buscar de forma independiente. Por lo tanto, no es necesario que espere la respuesta del primer servicio para llamar al segundo servicio.
No creo que pueda usar Parallel.ForEach
aquí ya que no es una operación vinculada a la CPU.
Para llamar a estas dos operaciones en paralelo, ¿puedo llamar al uso Task.WhenAll
? Un problema que veo usando Task.WhenAll
es que no devuelve resultados. Para obtener el resultado, ¿puedo llamar a task.Result
después de llamar a Task.WhenAll
, ya que todas las tareas ya están completadas y todo lo que necesito para obtener la respuesta?
Código de muestra:
var task1 = HttpService1Async();
var task2 = HttpService2Async();
await Task.WhenAll(task1, task2)
var result1 = task1.Result;
var result2 = task2.Result;
// Use result1 and result2
¿Es este código mejor que el primero en términos de rendimiento? ¿Cualquier otro enfoque que pueda usar?