Asp.Net Web Api 中的异步操作是否以某种方式帮助用户?

Does Async Actions in Asp.Net Web Api help the user in some way?

如果我有一个 Web Api 服务(没有 GUI),并且用户的 Get 请求要求我获取数据,这将需要 15 秒来检索它,

假设这是我的操作:

  [HttpGet]   
  public async Task<HttpResponseMessage> GetSomeAsync([FromUri]NiceRequestObject request)
  {
     var response = await _niceService.F1Async(request); //15 seconds duration.
     return Request.CreateResponse(response);
  }

那么对用户的好处是什么?事实上,我将线程发布回了 线程池......用户将如何以某种方式“感受”它?无论如何,用户都需要等待这15秒。

tl;博士

这不是 UI 体验优化。它可以改善 UI 体验,但这确实是一个副作用。这有助于您优化线程利用率。这意味着您可以用更少的线程处理更多的请求。这意味着您可以拥有更便宜的服务器 and/or 可以在现有基础架构上处理更多请求。


How will the user "feel" it some way?

当 10,000 人同时请求您的页面时,用户会感受到这种感觉,并且您的服务器更有可能处理所有这些请求(包括这个虚构的“用户”)而不会 运行线程。归根结底,这是 服务器优化

The user needs to wait these 15 seconds no matter what.

除非你服务器上的所有线程都用完了,否则用户在请求这个资源时会报错(取决于其他技术),需要重新提交。这意味着他们将不得不等待超过 15 秒。