@a_halala

Как обеспечить непротиворечивость данных в клиент серверном приложении?

Добрый вечер. Хотелось бы получить ответ на один вопрос. Допустим есть какое-то веб приложение, где клиент общается с сервером посредством REST (Например связка Spring mvc и angularjs). Допустим с клиентской части были отосланы на сервер какие-то данные для обработки и сохранения в БД например. И вот тут вопрос. Что должен возвращать сервер в качестве ответа при успешной обработке? Должен ли он вернуть обработанные данные, или просто статус SUCCESS 200? Если он возвращает обработанные данные, то целостность и непротиворечивость гарантируется, но если количество данных влияет на скорость выполнения запроса, то тут спорно. Если же он возвращает SUCCESS, то все ту же обработку можно сделать и на клиенте, но непротиворечивость уже не гарантируется. Так кто же мне подскажет, какие best practices применяются в таких случаях? Надеюсь, что вопрос мой ясен. Спасибо!
  • Вопрос задан
  • 356 просмотров
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg Куратор тега Программирование
Любые ответы на любые вопросы
Непротиворечивость данных обеспечивается исполнением модели гарантий ACID. Если каждая REST - операция выполняется в рамках отдельной транзакции, удовлетворяющей ACID, данные остаются непротиворечивыми между любыми транзакциями. Таким образом, достаточно из каждого вызова REST возвращать уведомление о том, что транзакция фиксирована.
Ответ написан
@maxtm
Make money, not job
Имхо, для достижения 100% успеха во всех 100% операциях - тяжело будет найти какое-то единственное правильное решение. То есть, каждую Вашу операцию нужно будет согласовывать с сервером, на предмет непротиворечивости данных, в контексте требований к скорости работы приложения.

Другими словами, там где требуется скорость - вы на клиенте "доводите" данные до нужного состояние "непротиворечивости" с данными от сервера, но не выкачиваете их (и не генерируете), в других местах, где скорость не так важна - смело берете данные с сервера.
Ответ написан
Комментировать
ruFelix
@ruFelix
Предсказание будущего по руке, таро, кофе.
В общем случае:
Если клиенту нужно отправить данные для обработки и показать уже обработанные данные то очевидно их стоит вернуть.
Если клиенту не нужны данные, а нужно только совершить какое то действие, то он отправляет данные необходимые для этого действия и в ответ получает только статус.

Случай на которым вы акцентируете внимание, когда большой объём сырых данных обрабатывается и сохраняется на сервере, а потом в обработанном виде отображает на клиенте. Тут нужно смотреть по ситуации, клиент может быть слабый по производительности и скорости интернета, а может и нет, соответственно на сервер можно ждать обработанные данные с сервера, а можно на него отправлять уже обработанные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Искра Екатеринбург
от 80 000 до 100 000 ₽
Art gorka Санкт-Петербург
от 60 000 ₽
от 40 000 до 60 000 ₽