У меня есть .net core API, у которого есть контроллер, который строит агрегированный объект для возврата. создаваемый объект создается из данных, поступающих из трех вызовов метода в класс службы. Все они независимы друг от друга и могут выполняться изолированно друг от друга. В настоящее время я использую задачи для повышения производительности этого контроллера. текущая версия выглядит примерно так:
[HttpGet]
public IActionResult myControllerAction()
{
var data1 = new sometype1();
var data2 = new sometype2();
var data3 = new List<sometype3>();
var t1 = new Task(() => { data1 = service.getdata1(); });
t1.Start();
var t2 = new Task(() => { data2 = service.getdata2(); });
t2.Start();
var t3 = new Task(() => { data3 = service.getdata2(); });
t3.Start();
Task.WaitAll(t1, t2, t3);
var data = new returnObject
{
d1 = data1,
d2 = data2,
d2 = data3
};
return Ok(data);
}
Это хорошо работает, но мне интересно, является ли использование задач лучшим решением здесь? Будет ли использование async/await лучшей идеей и более приемлемым способом?
Например, если контроллер должен быть помечен как асинхронный и ждать каждого вызова методам службы?