【发布时间】:2014-05-13 21:28:11
【问题描述】:
我们有许多使用 await/async 关键字的异步控制器和服务。
一些动作看起来有点像:
public async Task<SomeViewModel> Get(int id)
{
var someData = await _service.GetData(id);
var someOtherData = await _service.GetMoreData(id);
return new SomeViewModel
{
Data = someData,
OtherData = someOtherData,
}
}
可能服务调用本身也有多个awaits。 await 通常会针对 async 对实体框架、服务总线或第 3 方 Web 端点的调用。
我的一位同事今天提出这种代码毫无意义,它只会为线程管理产生额外的工作,而在负载不足的情况下,我们实际上会为运行时产生更多工作并减慢应用程序结果下降了。
它们是否正确?如果是,当您在 Web API 请求中有多个 IO 绑定调用时,async / await 的最佳做法是什么?
【问题讨论】:
-
这个问题已经有了很好的答案,但我想知道您的同事对开发 Web API 的团队有何看法。他们是否认为团队如此无能,以至于他们会开发一个功能并为用户增加额外的复杂性以使事情变慢?
标签: c# asp.net-web-api async-await