Как Вы измеряете прогресс вызова веб-сервиса?

Я не думаю, что вам нужно иметь аккаунт в Playstore только для показа рекламы. Вы можете показывать рекламу даже в режиме отладки. Хотя я бы посоветовал вам включить тестовый ключ, который Google предоставляет разработчикам, но это не означает, что настоящий ключ, созданный для ваших проектов, не будет работать в приложении, если он не загружен в playstore.

6
задан ashwnacharya 25 September 2008 в 19:32
поделиться

6 ответов

Запишите отдельный метод для сервера, который можно запросить путем передачи идентификатора задания, которое было запланировано и которое возвращает приближенное значение между 0-100 (или 0.0 и 1.0, или безотносительно) того, как далеко вдоль него.

Например, в стиле REST, Вы могли выполнить ПОЛУЧИТЬ запрос к http://yourserver.com/app/jobstatus/4133/ который возвратил бы простое '52' как text/plain. Затем просто необходимо ли запросить что каждый (второй? две секунды? десять секунд?), чтобы видеть, как далеко вдоль него.

Как Вы на самом деле выполняете контроль на бэкенде, чрезвычайно зависит от того, что Ваш процесс и как он работает.

4
ответ дан 10 December 2019 в 00:46
поделиться

Я думаю, что веб-сервис XML является медленным, так создает, несколько методов и опроса прогресса будут чрезвычайно медленными и генерируют огромную нагрузку на сервер. Я не сделал бы этого в продуктивной среде. Я вижу то же (но меньший) проблемы с опросом базы данных.

Попробуйте расширения SOAP вместо этого. Это реализует событийно-ориентированную модель. Посмотрите Добавление Индикатора выполнения к Вашему Клиентскому приложению веб-сервиса на MSDN.

2
ответ дан 10 December 2019 в 00:46
поделиться

Самый легкий путь состоял бы в том, чтобы иметь обновление веб-сервиса поле на базе данных с прогрессом вызова и затем создать веб-сервис, который запрашивает то поле и возвращает значение.

1
ответ дан 10 December 2019 в 00:46
поделиться

Сделайте веб-сервис для возврата своего рода идентификатора задачи или идентификатора сессии. Сделайте другой веб-метод для запросов с тем идентификатором, который возвращает необходимую информацию (завершение %, список файлов, безотносительно). Опросите этот метод в некотором интервале от клиента.

Используйте базу данных, чтобы хранить информацию процесса, если Вы сделаете это в память о веб-сервисе, то это не масштабируется хорошо в среде веб-фермы, как это может произойти, что задача работает на другом сервере, чем тот, который Вы опрашиваете.

Править: Я просто видел другой подобный ответ и комментарий к нему. Комментатор прав - можно использовать таблицу в оперативной памяти для предотвращения дисковых операций, но все еще использования отдельного сервера дб.

0
ответ дан 10 December 2019 в 00:46
поделиться

Имейте начальную букву, "запускаются, вызов веб-сервиса" поколения отчета создают задачу в некотором пуле задачи и возвращают вызывающую сторону идентификатор задачи.

Затем предоставьте другой метод, который возвращает "процент, сделанный" для данного taskId.

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

1
ответ дан 10 December 2019 в 00:46
поделиться

Можно также использовать SoapExtensions для уведомления клиента прогресса загрузки/процесса. Сервер может затем отправить события клиенту. Ничто в клиенте не должно быть изменено, если Вы не используете его.

Допускает что-то вроде этого в Вашем клиенте:

//...
private localhost.MyWebServiceService _myWebService = new localhost.MyWebServiceService ();
_myWebService.processDelegate += ProgressUpdate;
_myWebService.CallHeavyMethod();
//...

private void ProgressUpdate(object sender, ProgressEventArgs e)
{
  double progress = ((double)e.ProcessedSize / (double)e.TotalSize) * 100.00;
  //Show Progress...
}
2
ответ дан 10 December 2019 в 00:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: