异步Ajax调用和异步C#控制器方法

时间:2019-07-09 05:48:01

标签: c# asp.net ajax asp.net-core extjs

情况如下。

我在extjs中有一个ajax请求调用。默认情况下,其async为true,这意味着ajax调用将是异步的。在服务器端,我还有一个返回类型为Task的方法,这意味着它也是异步的。 使Ajax调用和服务器端方法都异步之间会有什么区别?什么时候需要使控制器与任务异步?

Extjs ajax示例:

Ext.Ajax.request({
        url: '/api/students',
        method: 'GET',
        timeout: 60000,
        params:
        {
            id: 1 // loads student whose Id is 1
        },
        headers:
        {
            'Content-Type': 'application/json'
        },
        success: function (response) {

        },
        failure: function (response) {
            Ext.Msg.alert('Status', 'Request Failed.');

        }
    });

控制器类示例:

  public async Task<IActionResult> students()
  {
    return Ok()
  }

1 个答案:

答案 0 :(得分:1)

在客户端执行异步操作将使UI保持响应,因为JavaScript是单线程的,因此在调用服务器时不会阻止UI。

在服务器端,执行异步操作可使服务器处理更多请求,因为您的控制器调用了后端服务的异步操作,因此该服务器已被释放以同时处理另一个传入请求。

通常,服务器端控制器通过调用也依赖于异步的服务/存储库而变为异步。几年前,我看到了Scott Hanselman的一个演示,他在其中进行了比较,即在服务器代码中使用异步确实可以产生比非异步代码更好的性能。

希望这会有所帮助。