我见过的大多数 Web API 2.0 方法都会返回IHttpActionResult
,它被定义为“定义异步创建 System.Net.Http.HttpResponseMessage 的命令”的接口。
我对方法返回时发生的情况有点困惑async Task<IHttpActionResult>
.
为什么你会使用其中一种而不是另一种?或者这些在功能上是否相同 - 不是IHttpActionResult
已经异步了?
您的操作可能会返回IHttpActionResult
当框架调用它时异步执行操作ExecuteAsync
.
但是,如果您必须在创建和返回结果之前首先进行一些其他异步调用,那么您将被迫将签名更改为async Task<IHttpActionResult>
。仅此而已。
如果您的控制器操作代码不使用await
然后你可以切换回更简单的签名。但是,您返回的结果仍然是异步的。
需要明确的是,在这两种情况下,您都使用异步代码。
性能优势在于 - 假设对最深级别的所有调用都是异步的 - Web 服务器线程在磁盘或网络 I/O 期间不会被阻塞,您的服务器可以用更少的资源处理更多的请求。
打电话前请仔细考虑Wait
or Result
任务,或在 ASP.NET 代码中自己创建任务。
手工编写 Web 服务器代码、有意使用多线程或并行性的两个合理理由是:
- 当它接收最少的流量但执行计算工作时,经常调用一次以对数据运行计算,并且您希望使用所有 16 个内核。
- 当对数据库分片或 >1 个其他服务进行 >1 个同时调用时,您需要预先为每个分片查询创建一个任务并等待所有分片。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)