о направлении проектирования системы:
Во-первых, если нет НАСТОЯЩЕЙ необходимости, не создавайте 2 разных приложения: одно GWT и другое iPhone.
создать одно, но хорошо написанное приложение GWT. Он будет работать в автономном режиме без проблем и будет управлять вашими данными с помощью функции HTML - кэш автономного приложения
Если необходимо создать 2 отдельных приложения
чем хотя бы сэкономить свои усилия и не писать сервер дважды, как если бы вы работали со стандартным подходом GWT, вам почти не удалось бы общаться с сервером из отдельного приложения (это сжатый JSON через HTTP с некоторыми хитрыми заголовками ...) или будет Пишите вещи вдвойне, так что загляните в библиотеку RestLet , которая хорошо поддерживается GAE.
О способе синхронизации с автономным / онлайн-переключением:
Есть несколько подходов, чтобы рассмотреть, и все они не идеальны. Поэтому, когда вы рассуждаете, подумайте о том, чего вы ожидаете ... Не будьте Microsoft Word, не пытайтесь перехитрить пользователя.
Если в сценариях использования есть хотя бы один сценарий, требующий вмешательства пользователя для объединения изменений (и будет - возьмите его в банк), - для этого вам потребуется реализовать пользовательский интерфейс - тогда есть веская причина часто его использовать - пользователь привыкнет к этому. это лучше, чем он увидит через некоторое время, так как он начал использовать приложение, потому что необходимость в этом редка, потому что вы реализовали сверхпопулярную логику слияния, которая запрашивает пользователя только в очень особых случаях ... Не делайте этого.
сбалансировать усилия. Потому что беспорядок, который ошибка в таком коде представит пользователю, намного более болезненен, чем выгода в совокупности.
Итак, КАК:
Одним из способов является способ Do-UnDo.
В то время как в автономном режиме - ведите журнал действий, которые пользователь совершил с данными в установленном порядке.
как только вы подключитесь - отправьте на сервер и выполните их. То же от сервера к клиенту.
В большинстве случаев будет работать нормально, если вы не пишете программное обеспечение типа Photoshop с огромными объемами данных на одну операцию. Также называется GangOfFour как шаблон действия.
Другой способ - это контроль источника. - Версии и могут быть даже замки. очень зависит от приложения. СУБД внутренне несколько раз использует его для реализации транзакций.
И всегда есть возможность быть только для чтения, когда Ofline: -)