Синхронизация приложения C++ с Ubuntu One
В настоящее время я занимаюсь разработкой приложения на C++, которое синхронизирует данные с Ubuntu One, но я не могу найти в Интернете никакой документации, объясняющей, как это сделать. Я нашел статью Райана Пола Ars Technica, которая представляет собой отличное введение в это на Python, при этом упомянув, что существует библиотека, которая облегчит это в C, но она не дает подсказки, где можно найти это решение на основе C, Я немного погуглил, но, похоже, никто не говорит о разработке приложений, использующих преимущества синхронизации Ubuntu One.
Кто-нибудь знает, где я могу получить информацию об этом интерфейсе на основе C?
1 ответ
Ubuntu One обеспечивает синхронизацию данных через desktopcouch, локальную версию CouchDB, которая автоматически синхронизируется с Ubuntu One и всеми вашими компьютерами. Некоторая документация для облачных и Python API доступна здесь на Ubuntu One, что может быть полезно, если вы хотите создавать веб-приложения или мобильные приложения, которые работают с теми же данными, что и ваше приложение Ubuntu C++.
API C/C++ еще не представлен на сайте разработчика (он скоро будет!), Поэтому вот краткое изложение, которого должно быть достаточно для начала.
Для C/C++ у вас есть couchdb-glib и desktopcouch-glib. couchdb-glib предоставляет универсальный API CouchDB, а desktopcouch-glib предоставляет только один объект, который создает объект Session со всем, что необходимо для подключения к desktopcouch Ubuntu One.
Так:
DesktopcouchSession *dc = desktopcouch_session_new ();
DesktopcouchSession является подклассом CouchdbSession, поэтому, получив один его экземпляр, вы можете использовать методы в CouchdbSession для доступа к базовому экземпляру CouchDB:
GSList *couchdb_session_list_databases (CouchdbSession *session,
GError **error);
CouchdbDatabase *couchdb_session_get_database (CouchdbSession *session,
const char *dbname,
GError **error);
gboolean couchdb_session_create_database (CouchdbSession *session,
const char *dbname,
GError **error);
gboolean couchdb_session_delete_database (CouchdbSession *session,
const char *dbname,
GError **error);
С помощью этих методов вы управляете базами данных, а с помощью get_database и create_database вы получаете экземпляр объекта CouchdbDatabase, который позволяет вам управлять документами в базах данных:
GSList *couchdb_database_get_all_documents (CouchdbDatabase *database,
GError **error);
gboolean couchdb_database_put_document (CouchdbDatabase *database,
CouchdbDocument *document,
GError **error);
gboolean couchdb_database_delete_document (CouchdbDatabase *database,
CouchdbDocument *document,
GError **error);
Как видите, для управления самими документами есть еще один объект, CouchdbDocument. Также существуют подклассы этого класса для управления определенными типами документов, например CouchdbDocumentContact (для контактов).
Вы можете получить полную справочную информацию по API, установив # libcouchdb-glib-doc пакет. Установка # http://packages.ubuntu.com/libdesktopcouch-glib-dev должен вытянуть все библиотеки, которые вам нужны.
API предоставляет вам доступ к CouchDB, поэтому вам, конечно, нужно знать, как работает сама CouchDB и как в ней хранятся данные. Краткий ответ: данные хранятся в документах JSON и извлекаются по идентификатору документа или с предварительно вычисленными представлениями. http://guide.couchdb.org/ - это книга CouchDB, которая более подробно объясняет метод хранения данных Couch.
Если у вас есть вопросы, пожалуйста, пингуйте меня (водолея) или родриго на #ubuntuone на freenode. Я был бы очень рад поговорить с вами о том, что вы планируете делать, и о хороших способах моделирования этих данных в системе хранения данных Ubuntu One.