Синхронизация приложения iPhone с приложением GWT - PullRequest
5 голосов
/ 12 февраля 2010

Я работаю над приложением для iPhone, которое должно работать в автономном и онлайн-режимах.
В его онлайн-режиме предполагается передавать всю информацию, которую пользователь вводит, в веб-сервис, поддерживаемый GWT / GAE. В автономном режиме предполагается, что информация должна храниться локально, а при наличии подключения синхронизировать ее с веб-службой.

В настоящее время мой план выглядит следующим образом:

  1. Обеспечение соединения между приложением и веб-сервисом с использованием протобуферов для эффективной беспроводной связи
  2. Работа с локальной БД с использованием Core Data
  3. Опрашивать состояние сети и, когда доступно, синхронизировать базу данных и поддерживать какую-то синхронизацию локальных ключей db-to-remote-db.

Вопрос - я в правильном направлении? Являются ли стандартные шаблоны для реализации этого? Может быть, кто-то может указать мне на приложение с открытым исходным кодом, которое работает аналогичным образом?

Я действительно новичок в кодировании iPhone и буду очень рад услышать любые предложения.

Спасибо

Ответы [ 3 ]

2 голосов
/ 12 февраля 2010

Я думаю, что вы размыли вопросы вместе.

  • Если у вас есть вопрос о создании веб-интерфейса GWT, это один вопрос.
  • Вопросы о том, как синхронизировать iPhone с веб-сервисом, - это другой вопрос. Для этого вы не хотите использовать RPC GWT для синхронизации, так как вам придется подделать «сторону браузера» системы сериализации в вашем коде iPhone, которую GWT обычно предоставляет для вас.
0 голосов
/ 18 марта 2012

Интересно, если вы рассматривали возможность использования Sync Framework для управления синхронизацией. Если это вас интересует, вы можете взглянуть на проект с открытым исходным кодом, службу синхронизации OpenMobster. Вы можете выполнить следующие операции синхронизации

  • двусторонний
  • односторонний клиент
  • одностороннее устройство
  • 1010 * Bootup *

Кроме того, все модификации автоматически отслеживаются и синхронизируются с облаком. Вы можете отключить приложение, когда сетевое соединение не работает. Он будет отслеживать любые изменения и автоматически в фоновом режиме синхронизировать его с облаком при восстановлении соединения. Он также обеспечивает синхронизацию, как iCloud, на нескольких устройствах

Кроме того, изменения в облаке синхронизируются с помощью push-уведомлений, поэтому данные всегда актуальны, даже если они хранятся локально.

Вот ссылка на проект с открытым исходным кодом: http://openmobster.googlecode.com

Вот ссылка на iPhone App Sync: http://code.google.com/p/openmobster/wiki/iPhoneSyncApp

0 голосов
/ 07 июня 2010

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

О способе синхронизации с автономным / онлайн-переключением: Есть несколько подходов, чтобы рассмотреть, и все они не идеальны. Поэтому, когда вы рассуждаете, подумайте о том, чего вы ожидаете ... Не будьте Microsoft Word, не пытайтесь перехитрить пользователя. Если в сценариях использования есть хотя бы один сценарий, требующий вмешательства пользователя для объединения изменений (и будет - возьмите его в банк), - для этого вам потребуется реализовать пользовательский интерфейс - тогда есть веская причина часто его использовать - пользователь привыкнет к этому. это лучше, чем он увидит через некоторое время, так как он начал использовать приложение, потому что необходимость в этом редка, потому что вы реализовали сверхпопулярную логику слияния, которая запрашивает пользователя только в очень особых случаях ... Не делайте этого. сбалансировать усилия. Потому что беспорядок, который ошибка в таком коде представит пользователю, намного более болезненен, чем выгода в совокупности.

Итак, КАК: Одним из способов является способ Do-UnDo. В то время как в автономном режиме - ведите журнал действий, которые пользователь совершил с данными в установленном порядке. как только вы подключитесь - отправьте на сервер и выполните их. То же от сервера к клиенту. В большинстве случаев будет работать нормально, если вы не пишете программное обеспечение типа Photoshop с огромными объемами данных на одну операцию. Также называется GangOfFour как шаблон действия.

Другой способ - это контроль источника. - Версии и могут быть даже замки. очень зависит от приложения. СУБД внутренне несколько раз использует его для реализации транзакций.

И всегда есть возможность быть только для чтения, когда Ofline: -)

...