gpt4 book ai didi

c# - IHttpActionResult 与异步任务

转载 作者:IT王子 更新时间:2023-10-29 04:24:33 26 4
gpt4 key购买 nike

我见过的大多数 Web API 2.0 方法都返回 IHttpActionResult ,它被定义为“定义异步创建 System.Net.Http.HttpResponseMessage 的命令”的接口(interface)。

我对方法返回时发生的事情感到有点困惑 async Task<IHttpActionResult> .

你为什么要用一个而不是另一个?或者它们在功能上是否相同 - 不是 IHttpActionResult已经异步了吗?

最佳答案

您的操作可能会返回 IHttpActionResult它在框架调用其 ExecuteAsync 时异步执行操作.

但是如果在创建和返回结果之前必须先进行一些其他异步调用,那么您将不得不将签名更改为 async Task<IHttpActionResult> .仅此而已。

如果您的 Controller 操作代码不使用 await然后你可以切换回更简单的签名。但是,您返回的结果仍然是异步的。

需要明确的是,在这两种情况下,您都在使用异步代码。

性能优势在于 - 如果对最深层的所有调用都是异步的 - Web 服务器线程在磁盘或网络 I/O 期间不会被阻塞,您的服务器可以用更少的资源处理更多的请求。

打电话前请三思WaitResult在任务上,或在 ASP.NET 代码中自己创建任务。

对 Web 服务器代码进行手工编码、有意多线程或并行处理的两个正当理由是:

  • 当它收到最少的流量但执行计算工作时,经常调用以对数据运行计算并且您想要使用所有 16 个核心。
  • 当同时调用 >1 个数据库分片或 >1 个其他服务时,您需要为每个分片查询预先创建一个任务并等待它们。

关于c# - IHttpActionResult 与异步任务<IHttpActionResult>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29100732/

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