Как показать прогресс длительной работы сервера (Web API Commanding) в HTML-клиенте Lightswitch?
У меня есть приложение HTML Client Lightswitch VS 2013, в которое я добавил кнопку, которая отправляет сообщение REST Web API. Это, в основном, "обновляет" данные в таблице из исходного восходящего источника. Это все работает правильно, но операция занимает несколько минут, и я хочу сообщить о состоянии пользователю во время его работы.
Прямо сейчас я попытался прикрепить простое Обновление, когда сообщение возвращается следующим образом:
$.post("/api/data/", "Refresh", function (response) {
screen.getData().then(function (newData) { screen.reQuery(); });
});
Похоже, что на самом деле это не выполняет обновление (screen.reQuery, по-видимому, неправильный вызов), но лучшим вариантом было бы вместо этого показать серверу, как происходит прогресс этого долго работающего приложения.
Одна мысль, которая у меня возникла, заключалась в том, чтобы серверный вызов возвращал данные в виде "процентов выполненных" в ответе при его обработке, но я не знаю, будет ли это доставлено клиенту по частям, и не будет наилучшим способом показать это пользователю в Lightswitch.
Я открыт для других сторонних библиотек, которые могут помочь с этим, но я хотел бы придерживаться WebAPI для командования вместо того, чтобы добавлять что-то вроде SignalR сейчас, если это возможно. Спасибо!
1 ответ
В общем, это не лучшая идея для запуска операций, которые занимают минуты на сервере.
Разумная альтернатива - создать один вызов, который, в свою очередь, создаст несколько веб-заданий (дополнительные сведения см. В веб-заданиях Azure). Веб-задания будут разбиты на отдельные мелкие задачи, и ваш html будет запрашивать веб-задания, а не веб-API.