gpt4 book ai didi

c# - MVC 4 网络 API : returning tasks from actions

转载 作者:行者123 更新时间:2023-11-30 21:08:12 25 4
gpt4 key购买 nike

可能我的脑袋有些困惑,但我在下面看到了一种困惑:

  • Web API Controller 派生自 ApiController 类,其中主要方法是 ExecuteAsync,它使请求通过过滤器和操作的管道,最后返回 Task;
  • Web API 操作支持使用 TPL 或异步/等待返回任务类型对象的能力。

我的问题是:我真的能从 API 操作中构建和运行任务中受益吗?据我所知,尽快将线程返回到 ASP.NET 线程池的目标已经由 ApiController.ExecuteAsync 基础结构执行,因此额外级别的异步对我没有任何帮助(除非我需要取消任务或在后端执行操作并行)。

有什么想法吗?谢谢。

最佳答案

与任何并行编程一样,不幸的是答案是:它完全取决于您正在执行的处理类型。

对于初学者来说,ASP.NET 运行时已经为每个请求提供了并发性。因此,如果您所做的工作完全受计算限制,那么使用异步几乎没有什么好处。该规则的异常(exception)情况是,如果您在请求中处理的数据非常大,因此将受益于进一步的并发。

确实使用异步的最重要场景是当您进行任何类型的 I/O 工作时(磁盘 I/O 网络 I/O)。例如,当您的 ASP.NET Controller 代码...

  • 与另一个后端网络服务通信
  • 与数据库服务器通信
  • 读取/写入文件信息到磁盘

您希望在这些情况下使用异步,因为在完成 I/O 请求时存在等待时间:磁盘或网络延迟。通过使用异步,您可以释放 CPU 线程,否则这些线程将被阻塞等待该数据,以便它可以处理其他一些计算密集型工作。

关于c# - MVC 4 网络 API : returning tasks from actions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9772998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com