是否可以将所有操作异步,一直到从db读取的管理器和函数(使用LINQ的asyncs)?
是否带来任何好处?
e.g。在控制器中:
public async Task<PartialViewResult> EditNewsAsync(int id)
{
var newsReader = new NewsReader();
var news = await newsReader.GetAsync(id);
return this.PartialView("_AddEditNews", news);
}
public async override Task<News> GetAsync(int id)
{
using (var ctx = new KreditorWebEntities())
{
IQueryable<News> query = from n in ctx.News
where n.new_id == id
select new News { Id = n.new_id,
UserId = n.new_fk_addedByUserId,
AddedDatetime = n.new_addedDatetime,
ShowOnlyOnce = n.new_showOnlyOnce,
Text = n.new_text };
return await query.FirstOrDefaultAsync();
}
}
答案 0 :(得分:5)
它带来了什么好处吗?
如果您需要 可扩展性 ,它会带来好处。使用异步IO而不是同步阻塞API的关键是,在查询正在进行时,您将释放该线程。如果您不需要,并且您查询ASP.NET线程池可以处理的端点的请求有限,那么您将看到async
没有任何好处。
不要全力以赴&#34;异步所有的事情&#34;只是因为你可以。明智地使用它并理解async
为您的代码带来的开销。