Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用async声明端点(以及返回任务<;IHttpActionResult>;)与不使用async声明端点之间的区别_.net_Api_Asynchronous_Async Await - Fatal编程技术网

.net 使用async声明端点(以及返回任务<;IHttpActionResult>;)与不使用async声明端点之间的区别

.net 使用async声明端点(以及返回任务<;IHttpActionResult>;)与不使用async声明端点之间的区别,.net,api,asynchronous,async-await,.net,Api,Asynchronous,Async Await,在.NET Web API 2的新引导项目中,自动为您创建的大多数端点(例如AccountController中的任何端点)都声明为异步,并返回带有IHttpActionResult的任务。我对这份声明有几个问题 以这种方式声明端点与仅返回HttpResponseMessage之间的主要区别是什么 与非同步实现相比,此声明是否有任何主要优势?IE是否会提高性能、可扩展性等 以这种方式声明的端点是否期望请求来自异步调用(例如来自前端的AJAX调用),或者该声明是否仅影响在后端处理该端点的执行 非常

在.NET Web API 2的新引导项目中,自动为您创建的大多数端点(例如AccountController中的任何端点)都声明为异步,并返回带有IHttpActionResult的任务。我对这份声明有几个问题

  • 以这种方式声明端点与仅返回HttpResponseMessage之间的主要区别是什么
  • 与非同步实现相比,此声明是否有任何主要优势?IE是否会提高性能、可扩展性等
  • 以这种方式声明的端点是否期望请求来自异步调用(例如来自前端的AJAX调用),或者该声明是否仅影响在后端处理该端点的执行
  • 非常感谢您的指点

     3-Is an endpoint declared this way expecting the request to be coming from an async call,
     e.g. an AJAX call from a front-end, or does that declaration merely affect how the execution of that
     endpoint is handled on the back-end?
    
    正如您所猜测的,这对客户端发送请求的方式没有影响,但会影响后端的执行和请求处理

    2- Are there any major advantages to this declaration over a non-sync implementation? 
    IE Does this boost performance, scalability, etc...
    
    当然,假设您的服务器最多可以并发处理10个请求,并且您有一个控制器,该控制器具有保存到数据库的操作,并且保存过程需要5秒才能完成,在同步情况下,处理您的请求的线程闲置5秒,等待保存过程完成,这意味着您的服务器无法使用该线程处理另一个请求,这意味着如果您有10个并发请求试图保存到数据库中,您的整个服务器将处于空闲状态,等待这些请求完成,这导致您的服务器无法处理任何其他请求,这在网站中非常糟糕。 异步的情况不同,例如,如果您的数据库ORM支持异步方法,那么您可以等待该方法完成,并且从服务器的角度来看,可以释放处理您的请求的线程来处理另一个请求,这意味着您的服务器可以执行得更好,要等待您的方法,您需要使用C#支持的async/await

    要回答此问题,我建议您访问问题/答案

    希望这有帮助

    1- What are the major differences between declaring an endpoint this way versus just returning an HttpResponseMessage?