Sta*_*tan 15 c# asp.net async-await asp.net-web-api
我一直在WebApi2上阅读很多,我真的很喜欢它,但我只是不明白为什么每个方法都使用async而不是标准方法.
这是一个例子:
[ResponseType(typeof(BookDto))]
public async Task<IHttpActionResult> GetBook(int id)
{
BookDto book = await db.Books.Include(b => b.Author)
.Where(b => b.BookId == id)
.Select(AsBookDto)
.FirstOrDefaultAsync();
if (book == null)
{
return NotFound();
}
return Ok(book);
}
Run Code Online (Sandbox Code Playgroud)
这有什么好处?我仍然需要等待我的书在使用之前使用ef从db加载.这有什么不同于我不使用任务来检索书籍的常规方式吗?
Ste*_*ary 26
在服务器端(例如,WebAPI),async方法允许请求线程在数据库服务器生成响应时返回到线程池.这使您可以更好地扩展.
当数据库服务器返回对WebAPI方法的响应(即完成返回的任务FirstOrDefaultAsync)时,ASP.NET将从线程池中获取另一个线程并继续处理您的请求.
请注意,并非每种方法都应如此async.您应该只async在需要进行await某些操作时使用.有一个很棒的Channel9视频,描述了async在ASP.NET 上使用的概念和好处.我今年也在ThatConference上发表了async关于服务器端的演讲(链接到我的博客文章,包括幻灯片).
| 归档时间: |
|
| 查看次数: |
4525 次 |
| 最近记录: |