多少异步/等待是可以的

本文关键字:等待 异步 多少 | 更新日期: 2023-09-27 18:30:57

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

  1. 数据访问层:获取/更新数据库(使用 Dapper)。
  2. 缓存(Redis):读/写。
  3. ASP.Net MVC 5 控制器。

问题是多少异步/等待是可以的。即使在读取或写入少量数据时也可以使用它们吗?缓存和控制器怎么样?

备注:该项目有点特殊,一天中的几个小时每秒可能有大约 50,000 个请求

多少异步/等待是可以的

根据我读过的一篇文章:

异步/等待非常适合避免阻塞,同时可能 在 .NET 应用程序中执行耗时的工作,但有 与运行异步方法相关的开销

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

根据你的要求,即使在读取或写入少量数据时?这似乎不是一个好主意,因为已经结束了。

以下是文章:NET 4.5 中异步/等待的开销

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

报价:

尽管这种异步方法相对简单,但 ANTS 性能 探查器显示它导致运行 900 多个框架方法 为了初始化它和它第一次做的工作 它运行了。

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

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

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

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