logo
logo
Синхронизация. [Dervish 23/04/2013 21:01]
Когда мы говорим про версию AbilityCash для мобильных устройств, мы подразумеваем, что эта версия сможет синхронизировать данные с версией программы для настольных компьютеров. Между тем, синхронизация сама по себе является непростой задачей и имеет кучу разных способов решения. Я долго думал, как именно должна работать синхронизация и вот к чему пришел:
 
Для синхронизации предполагается использовать сервис Dropbox. Вообще, я рассматривал и другие варианты, начиная от синхронизации через USB-провод, по локальному wi-fi и организации собственного сервера синхронизации. Однако, в конечном итоге пришел к тому, что облачный сервис является наиболее гибким и удобным для решения таких задач. Выбор в пользу Dropbox-а был сделан исключительно по интуитивной оценке популярности, мне показалось, что это один из самых известных сервисов такого рода. Ну и наличие у него программного интерфейса для доступа тоже сыграло свою роль.
 
Я планирую построить синхронизацию на основе журналов обновления. Работать это должно примерно так: всякий раз, когда вы изменяете что-то в своих данных (и если настроена синхронизация), программа формирует маленький файлик, который содержит описание этого изменения, например, «удалена такая-то операция», «добавлена новая статья расхода» или «изменено положение счета в плане счетов». Этот файлик пересылается на сервер и выкладывается в выделенной для синхронизации папочке. Точно так же, с некоторой периодичностью будет проверяться наличие новых изменений на сервере, выложенных другими пользователями (другими устройствами). При наличии таких изменений, они тут же загружаются с сервера и применяются к актуальному файлу данных. Конечно, при этих операциях выполняется проверка на наличие конфликтов.
 
Если учет ведет один человек, он может синхронизировать все свои устройства при помощи своего аккаунта Dropbox. Если с одним файлом работают несколько человек, папку для синхронизации потребуется сделать разделяемой и выделить соответствующие полномочия для участников процесса.
 
Собственно, зачем я это пишу? Мне хотелось бы услышать критику, замечания или пожелания к изложенной концепции. Сейчас я работаю над переводом файла данных на SQLite и в процессе этой работы мне хочется предусмотреть возможность синхронизации.
 
Заранее благодарю.