Асинхронный вызов ajax и метод асинхронного контроллера c # - PullRequest
0 голосов
/ 09 июля 2019

Сценарий выглядит следующим образом.

У меня есть вызов ajax в extjs. По умолчанию его асинхронный режим равен true, что означает, что вызов ajax будет асинхронным. На стороне сервера у меня также есть метод с возвращаемым типом Task, что означает его также асинхронный. Какая разница между выполнением Ajax-вызова и метода на стороне сервера в асинхронном режиме? Когда нужно сделать контроллер асинхронным с задачей?

Пример Ajax Extjs:

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 Ответ

1 голос
/ 09 июля 2019

На стороне клиента выполнение асинхронности позволит пользовательскому интерфейсу оставаться отзывчивым, поскольку JavaScript является однопоточным, он не блокирует пользовательский интерфейс при вызове сервера.

На стороне сервера выполнение асинхронных операций позволяет серверу обрабатывать больше запросов, поскольку ваш контроллер вызывает асинхронную операцию серверной службы, которой он освобожден для обработки другого входящего запроса.

Как правило, контроллер на стороне сервера становится асинхронным, вызывая службу / репо, от которой это также зависит. Несколько лет назад я видел демонстрацию Скотта Хансельмана, в которой он провел сравнение, в котором использование асинхронности в коде сервера дает лучшую производительность, чем предполагалось для неасинхронного кода.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...