Каковы хорошие способы борьбы с таймаутами на стороне клиента при подключении к удаленному сервису, поскольку результат запроса становится неизвестным? - PullRequest
0 голосов
/ 17 марта 2012

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

Примите следующие настройки:

thick client <--> web service <--> database

Предположим, что типичный процесс сохранения данных следующий:

  1. толстый клиент отправляет запрос на размещение в веб-службу
  2. веб-служба передает данные вбаза данных
  3. веб-служба возвращает успех «толстому» клиенту

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

Есть ли способ смягчить такую ​​ситуацию, которая не предполагает попытки объяснитьчеловек пользуется толстым клиентом, что состояние запроса вызывает сомнения?Я не думаю, что смогу написать сообщение об ошибке, которое бы сработало.

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

1 Ответ

0 голосов
/ 17 марта 2012

Возможно, вы захотите разрешить клиенту проверить позже (возможно, 10 секунд или минуту), действительно ли операция прошла успешно.Вам нужно было бы улучшить свой веб-сервис, чтобы иметь такой API.

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

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