在我们的项目中,我们使用async / await几乎有3个目的(对于他们所有的方法):
问题是异步/等待是多少。即使在读取或写入少量数据时也可以使用它们吗?缓存和控制器怎么样?
备注:项目有点特殊,每天几个小时可能有 50,000次请求。
答案 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