我承认我对async / await模式并不是很了解。我刚读了一些文章,并得到了这种模式很好的印象,所以我到处都用它。我的服务层塞满了这样的代码:
public async Task DoSomeWork()
{
// some database operations...
await ctx.SaveChangesAsync();
}
在我的异步控制器操作方法中:
public async Task<ActionResult> SomeAction()
{
await service.DoSomeWork();
return View();
}
在我的大多数项目中,iis服务器和数据库服务器位于同一个Intranet中,即使在同一物理服务器上也是如此。所以我不认为我从使用异步中获得任何好处,而是遭受了它的缺点,其中一个是页面在开发阶段没有显示任何异常,我在调试时经历了数千次踩到等待代码行只是没有响应,没有例外,没有中断。
那么,我是否滥用或过度使用async / await模式?
答案 0 :(得分:2)
Async适用于两件事:在UI应用程序上,async提供响应能力;在服务器应用程序上,async提供可伸缩性。
对于ASP.NET服务器,是否使用异步的问题通常归结为后端的可扩展性。这是因为大部分时间,数据库服务器都是瓶颈。如果您的后端是可扩展的(例如,NoSQL),那么在Web服务器上使用async通常是有意义的。但是如果你有一个SQL服务器实例作为你的bakend,那么异步Web服务器通常是没有意义的。