Căt*_*doi 2 c# asp.net asp.net-mvc asynchronous async-await
是否可以将所有操作异步,一直到从db读取的管理器和函数(使用LINQ的asyncs)?
它带来了什么好处?
例如在控制器中:
public async Task<PartialViewResult> EditNewsAsync(int id)
{
var newsReader = new NewsReader();
var news = await newsReader.GetAsync(id);
return this.PartialView("_AddEditNews", news);
}
Run Code Online (Sandbox Code Playgroud)
在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();
}
}
Run Code Online (Sandbox Code Playgroud)
它带来了什么好处?
如果您需要可扩展性,它会带来好处.使用异步IO而不是同步阻塞API的关键是在查询正在进行时释放线程.如果您不需要它,并且您查询ASP.NET线程池可以处理的端点的请求有限,那么您将看到没有任何好处async.
不要只是因为你可以完全"异步所有的事情".明智地使用它并理解async为您的代码带来的开销.