Стараюсь выбирать первый вариант, т.к. проще для реализации.
S>Допустим, установили цвет объекта и размер объекта. Сразу изменили в GUI и отправили 2 запроса. При этом первый запрос вернет что изменен цвет, но размер еще не изменен (т.е. второй запрос еще не исполнен — а размер указали во втором запросе, при этом в GUI — уже установили все). Как быть — как лучше такие ситуации обрабатывать?
Показать пользователю ошибку с кнопкой "перезагрузить страницу". Как перезагрузит, так увидит, что там изменилось, что нет. Пускай чинит свой интернет.
Вообще мой поинт в том, что делать систему, в которой есть два состояния (клиентское и серверное) с взаимоной синхронизацией это очень нетривиально и даже сложно. Поэтому тут походя какой-то совет и не дашь. Если вдруг хочется — то нужно готовиться, что такая система потребует огромных сил для корректной во всех случаях реализации. И всё это ради того, чтобы пользователю работалось чуть-чуть комфортней? По-мне это неразумные траты сил в 90% случаев. Если это система вроде Google Docs, где совместное редактирование документа это прям главная фича, тогда без вопросов — садишься и делаешь архитектуру, возможно со всякими CQRS, кастомными БД, и тд. А если это обычная крудятина, то лучше убедить пользователя, что ему оно не надо.
А если делать такую систему "малой кровью" — там будет куча необработанных ситуаций, вплоть до потери данных из-за подобных проблем. В общем оно того не стоит.