Re[8]: Про обработку ошибок - типовые решения
От: Shmj Ниоткуда  
Дата: 27.04.25 13:45
Оценка: :)
Здравствуйте, 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 глобально) — то что?
=сначала спроси у GPT=
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.