обновление веб-сервиса объектами при выходе из приложения - PullRequest
1 голос
/ 14 июня 2011

Я работаю над приложением silverlight, где пользователь может создавать, редактировать, удалять объекты. Изменения, которые они вносят, помещаются в очередь, которая обрабатывается каждые 4 минуты. Когда он обрабатывается, обновления отправляются через асинхронный вызов веб-метода для сохранения в базе данных sql, по одному за раз. Когда первое обновление заканчивается, начинается следующее.
У меня проблема, когда пользователь вносит изменения и затем выходит из приложения браузера до истечения 4-минутного таймера. В настоящее время изменения теряются.

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

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

1 Ответ

1 голос
/ 14 июня 2011

Вы можете использовать Javascript, чтобы остановить пользователя, покидающего страницу. StackOverflow делает это (попробуйте отредактировать ответ и покинуть страницу). Это работает как при закрытии браузера, так и при навигации по страницам. Из Javascript вы также можете уведомить приложение Silverlight о необходимости сохранения любых данных в очереди (Silverlight поддерживает предоставление методов Javascript).

Q. Экономия каждые 4 минуты - немного странное поведение для приложения Silverlight. Я предполагаю, что он предназначен только для одного пользователя за раз. Что ограничивает вас в сохранении чаще?

...