Здравствуйте, Sinclair, Вы писали:
S>>Весь вопрос в том — как делать отмену. Будете ли вы встраивать в каждый сетевой запрос возможность отмены?
S>Я же вам вроде бы объяснял, что делать с отменой.
S>1. Не делать её вообще. Нет никакой разницы, вышел пользователь, или отключился, или у него на клиенте пропало питание. Действие на стороне сервера дорабатывает до конца.
S>2. Делать отмену на основе транзакционности. См. пример с MS SQL Server.
Так речь о действии на стороне клиента — у клиента своя база.
S>>Атомарность может быть при записи в базу. А когда внешний вызов — атомарности быть не может, разве что внешний сервис это предусмотрел — но сразу проблема двух генералов, которая неразрешима в принципе.
S>Поэтому придумали REST.
И как он решит задачу, которая не разрешима даже в теории?
S>Внезапно оказывается, что если научиться обрабатывать одну из этих ситуаций, то автоматически получится ответ на все эти ситуации, и, заодно, на все более сложные сценарии вроде придуманного вами выше.
S>И способ — очень простой:
S>1. Пишем в локальную базу "мы собираемся сделать к серверу вот такой запрос" (атомарно)
S>2. Делаем запрос
S>3. Получив ответ на запрос, пишем в базу "на запрос получен вот такой ответ" (атомарно).
S>0. При старте системы, поднимаем из локальной базы список всех запросов, которые прошли через п.1 и не прошли через п.3. Повторяем для всех их них п.2 и 3.
1. Тебе нужно проверить что текущая открытая база (а это десктопное или моб. приложение) — та же самая, того же пользователя. Что если пользователь другой?
2. Результат запроса нужно не только сохранить в базе, но и применить на форме. Пользователь нажал на кнопку — делаем запрос к серверу, обновляем таблицу, отображаем на форме. Если пользователь изменился (но форма все так же доступна через IoC глобально) — то что?