Я пишу приложение Flex, использующее MVC на стороне клиента. Он использует GraniteDS, а также имеет функции «Удаленная ленивая загрузка и обратная ленивая загрузка».Шаблон проектирования для обновлений клиентского сервера
Пользователь регистрируется в приложении и затем нажимает кнопку, чтобы обновить свой адрес электронной почты. Затем контроллер вызывается, но я не уверен, какой заказ делать дальше. Я вижу следующие варианты:
Параметры
- Обновить модель на клиенте, а затем отправить обновления на сервер. Если сервер выдает ошибку, сообщите об этом пользователю и попросите перезагрузить приложение Flex, поскольку данные теперь не соответствуют фазе. В противном случае предположим, что обновление прошло нормально;
- Контроллер отправляет данные на сервер после ответа сервера, затем контроллер обновляет модель клиента с обновленными данными. Если ответ сервера не получен, сообщите об ошибке пользователя и попросите перезагрузить приложение, поскольку данные теперь могут быть несовместимыми.
Вариант 2 кажется лучше, но я не уверен, как его реализовать. Какие у меня варианты?
Solutions
- Клонирование MyUser и отправить клон на сервер, когда сервер возвращает MyUser затем обновить модель. Как бы вы обрабатывали более глубокие вложенные объекты в коллекциях MyUser, поскольку клон копировал бы только оригинальную коллекцию и не клонировал ее?
- Отослать MyUser.id с сервером с измененными данными. Загрузите MyUser на сервер, используя id, а затем измените их данные. Как только их данные будут изменены на сервере, верните MyUser клиенту, чтобы контроллер мог обновить их модель.
Решение 2 показалось бы очень плохим способом сделать это, поскольку оно обходит особенности гранита с ленивой/обратной ленивой загрузкой.
Это их лучший способ сделать это?