首页 > 解决方案 > Asp.Net Web Api 中的异步操作是否以某种方式帮助用户?

问题描述

如果我有一个 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 秒。

标签: restasynchronousasp.net-web-apiasync-awaitthreadpool

解决方案


tl;博士

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


用户将如何以某种方式“感受”它?

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

无论如何,用户都需要等待这 15 秒。

除非您服务器上的所有线程都用完,否则用户在请求此资源时会收到错误消息(取决于其他技术)并且必须重新提交。这意味着他们将不得不等待超过 15 秒。


推荐阅读