У меня есть сайт, вызывающий службу ASMX, запущенную на сервере (относительно старый). Я борюсь с проблемой, связанной с запросом ajax, который требует около 10-20 секунд, чтобы запустить метод успеха, если не был установлен тайм-аут.Служба ASMX с тяжелой обработкой
В основном пользователь заполняет набор информации и настроек и изображений. По завершении пользователь нажимает кнопку, которая отправляет изображение base64 на сервер и огромный объект json с ним. (Какая информация выбрана пользователем). В любом случае, служба отвечает за выполнение следующих действий:
- Создать изображение из base64 строки
- разобрать объект JSON и организовать его, а затем создает PDF-документ на 4 страницы с этим изображением в нем.
- Создайте лист Excel всей запрашиваемой информации.
- Отправить по электронной почте пользователю с PDF прикрепленного
- Отправить по электронной почте компании со всеми другими приложениями (PDF, Excel и изображения)
Это огромная нагрузка, особенно при использовании SMTP объект для отправки не одного, а двух электронных писем.
В принципе, можем ли мы сделать это асинхронно, не заставляя пользователя ждать «Успеха !!»? сообщение?
Спасибо, ребята.
Как насчет того, когда сервер получает запрос, помещает его в очередь и сразу же возвращает идентификатор очереди. Затем клиент может опросить каждые несколько секунд, чтобы проверить, завершен ли этот идентификатор очереди. –
Ну, когда сервер завершается, пользователь должен перейти на домашнюю страницу. Итак, если ему нужно проверить это означает, что ему нужно подождать и ждать столько же времени. Я думал больше о том, чтобы дать ему успех и уйти, но сервер все еще обрабатывает и все –
Я бы не сказал * Успех *, если работа еще не закончена. Я бы сказал что-то вроде «Ваша работа в настоящее время работает ...» и предоставит какой-то механизм для возврата и проверки состояния позже. Возможно, ваша панель навигации может иметь сообщения о статусе для выполнения заданий очереди. Facebook делает что-то подобное с загруженным видео; когда он завершит обработку, вы получите уведомление через всплывающее сообщение. –