最近,我对在Web API项目中实现async-await模式的方式产生了疑问。我读到过async-await应该是“all the way”,这也是我所做的。但似乎这一切都变得多余了,我不确定自己是否正确地做了这件事。我有一个控制器调用了一个仓储库,然后它调用了一个数据访问(Entity Framework 6)类——“全部异步”。关于这个问题,我看到了很多相互矛盾的东西,希望能弄清楚。
编辑:被引用的重复帖子是一篇好文章,但并不够特定,不能满足我的需求。我包括了代码以说明问题。似乎很难在这个问题上得出决定性的答案。如果我们可以把async-await放在一个地方,让.NET处理剩下的部分,那就太好了,但我们不能这样做。那么,我是否过度使用了它,或者它并不像看起来那么简单。
以下是我的代码:
控制器:
public async Task<IHttpActionResult> GetMessages()
{
var result = await _messageRepository.GetMessagesAsync().ConfigureAwait(false);
return Ok(result);
}
存储库:
public async Task<List<string>> GetMessagesAsync()
{
return await _referralMessageData.GetMessagesAsync().ConfigureAwait(false);
}
数据:
public async Task<List<string>> GetMessagesAsync()
{
return await _context.Messages.Select(i => i.Message).ToListAsync().ConfigureAwait(false);
}