async / await多少钱可以吗?

时间:2014-11-18 06:28:35

标签: c# asp.net-mvc asynchronous async-await

在我们的项目中,我们使用async / await几乎有3个目的(对于他们所有的方法):

  1. 数据访问层:获取/更新数据库的位置(使用Dapper)。
  2. 缓存(Redis):读/写。
  3. ASP.Net MVC 5控制器。
  4. 问题是异步/等待是多少。即使在读取或写入少量数据时也可以使用它们吗?缓存和控制器怎么样?

    备注:项目有点特殊,每天几个小时可能有 50,000次请求

2 个答案:

答案 0 :(得分:3)

根据我读过的文章:

  

Async / await非常适合在可能的情况下避免阻塞   耗时的工作是在.NET应用程序中执行的,但也有   与运行异步方法相关的开销

     

异步时,这个成本相对可以忽略不计   工作需要很长时间,但值得记住。

根据您的要求,即使在读取或写入少量数据时也是如此?。它似乎不是一个好主意,因为有结束。

以下是文章:The overhead of async/await in NET 4.5

在文章中,他使用分析器检查async / await的优化。

QUOTE:

  

尽管这种异步方法相对简单,但ANTS Performance   Profiler显示它导致了超过900种框架方法的运行   为了初始化它和它第一次做的工作   它运行了。

这里的问题可能是你要接受这些最小的开销,并考虑到这些开销会堆积成可能有问题的东西。

答案 1 :(得分:2)

  

问题是异步/等待是多少。甚至可以使用它们   在读取或写入少量数据时?如何缓存和   控制器?

您应该对I / O绑定操作使用async / await,如果它是少量数据则无关紧要。更重要的是避免可能长时间运行的I / O绑定操作,主要是磁盘和网络调用。 Asp.net的线程池大小有限,这些操作可能会阻止它。使用异步调用可以帮助您的应用程序更好地扩展,并允许处理更多并发请求。

了解更多信息:http://msdn.microsoft.com/en-us/magazine/dn802603.aspx