最新的EF教程介绍了如何使用EF 6和MVC 5,似乎倾向于使用异步调用数据库,例如:
Department department = await db.Departments.FindAsync(id);
这是新的标准/最佳实践吗?
我不确定使用ASP.NET MVC进行此种开发风格有何好处。
可以有人评论一下这种模式吗?这是微软正在推广的新标准吗?
最新的EF教程介绍了如何使用EF 6和MVC 5,似乎倾向于使用异步调用数据库,例如:
Department department = await db.Departments.FindAsync(id);
这是新的标准/最佳实践吗?
我不确定使用ASP.NET MVC进行此种开发风格有何好处。
可以有人评论一下这种模式吗?这是微软正在推广的新标准吗?
SynchronizationContext
实现安全的请求内并发处理SemaphoreSlim
, ...)典型的低延迟服务(同步调用的好处):
这些按照典型的情况进行分类。所有这些也可能属于相反的类别。
你可以在同一个应用程序中混合使用同步和异步。 在其最佳状态下使用异步。
那么为什么微软和Entity Framework团队推广异步使用呢?以下是我的主观看法:这可能是微软的内部政策。他们可能预计EF在客户端应用程序中的使用(对于此场景,异步非常适合)。或者,他们没有意识到异步数据库调用几乎总是浪费开发人员的时间而没有任何好处。大多数人没有意识到这一点,因为异步是现在的趋势。
在 ASP.NET 中,您应该使用异步API来处理任何与I/O相关的操作,包括数据库访问和 Web 服务调用。
使用async
允许 ASP.NET 充分利用线程池,从而获得非常好的可扩展性优势。
async
比线程池本身更快地扩展。因此,它非常适用于突发流量情况。 - Stephen Cleary