是否可以使所有操作异步,一直到从数据库读取的管理器和函数(使用 LINQ 的异步)?
它会带来什么好处吗?
例如在 Controller 中:
public async Task<PartialViewResult> EditNewsAsync(int id)
{
var newsReader = new NewsReader();
var news = await newsReader.GetAsync(id);
return this.PartialView("_AddEditNews", news);
}
在 NewsReader.cs 中:
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();
}
}
最佳答案
Does it bring any benefits?
如果您需要可扩展性,它会带来好处。使用异步 IO 而不是同步阻塞 API 的要点是,一旦查询正在进行,就可以释放线程。如果您不需要这样做,并且查询 ASP.NET 线程池可以处理的端点的请求有限,那么您将看不到异步
有什么好处。
不要仅仅因为可以就完全“异步所有事情”。明智地使用它并了解 async
给代码带来的开销。
关于c# - 对 Controller 中的所有操作使用 async/await?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31447755/