我有一个.net 核心 API,它有一个构建要返回的聚合对象的控制器。 它创建的对象由来自对服务类的3个方法调用的数据组成。它们都是相互独立的,并且可以相互隔离地运行。 目前我正在使用任务来提高这个控制器的性能。
[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);
}
这个工作很好,但是我想知道是否使用任务是最好的解决方案在这里?使用异步/等待是一个更好的主意和更被接受的方式吗?
例如,是否应该将控制器标记为异步的,并在对服务方法的每次调用中加入等待?