3 votes

Synchronisation d'une application C++ avec Ubuntu One

Je suis actuellement en train de développer une application, en C++, qui synchronisera ses données avec Ubuntu One, mais je ne trouve aucune documentation en ligne expliquant comment faire cela. J'ai trouvé l'article d'Ars Technica de Ryan Paul qui fournit une excellente introduction à ce processus en Python en mentionnant qu'il existe une bibliothèque qui facilitera cela en C, mais il ne donne aucune indication quant à l'endroit où cette solution basée sur le langage C peut être trouvée. J'ai fait quelques recherches sur Google, mais personne ne semble parler du développement d'applications exploitant la synchronisation avec Ubuntu One.

Est-ce que quelqu'un sait où je peux trouver des informations sur cette interface basée sur le langage C ?

8voto

titanae Points 1481

Ubuntu One offre une synchronisation des données via desktopcouch, qui est une version locale de CouchDB qui est automatiquement synchronisée avec Ubuntu One et tous vos appareils. Une documentation pour les API cloud et Python est disponible sur Ubuntu One ici, ce qui peut être utile si vous souhaitez construire des applications web ou mobiles qui fonctionnent avec les mêmes données que votre application C++ Ubuntu.

L'API C/C++ n'est pas encore sur le site des développeurs (cela arrivera bientôt !), donc voici un résumé qui devrait suffire pour commencer.

Pour le C/C++, vous avez couchdb-glib et desktopcouch-glib. couchdb-glib fournit l'API générique de CouchDB, et desktopcouch-glib fournit juste un objet, qui crée un objet Session avec tout ce qui est nécessaire pour se connecter au desktopcouch d'Ubuntu One.

Donc :

DesktopcouchSession *dc = desktopcouch_session_new ();

DesktopcouchSession est une sous-classe de CouchdbSession, donc une fois que vous en avez une instance, vous pouvez utiliser les méthodes de CouchdbSession pour accéder à l'instance sous-jacente de 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);

Avec ces méthodes, vous gérez les bases de données, et avec get_database et create_database, vous obtenez une instance d'un objet CouchdbDatabase, qui vous permet de gérer les documents dans les bases de données :

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);

Comme vous pouvez le voir, pour gérer les documents eux-mêmes, il y a un autre objet, CouchdbDocument. De plus, il existe des sous-classes de celui-ci pour gérer des types spécifiques de documents, comme CouchdbDocumentContact (pour les contacts).

Vous pouvez obtenir la référence complète de l'API en installant le #libcouchdb-glib-doc Installer libcouchdb-glib-doc paquet. Installer #libdesktopcouch-glib-dev Installer libdesktopcouch-glib-dev devrait importer toutes les bibliothèques dont vous avez besoin.

L'API vous donne accès à CouchDB, donc bien sûr, vous devrez savoir comment fonctionne CouchDB lui-même, et comment vous stockez des données dedans. La réponse courte est : les données sont stockées dans des documents JSON, et extraites par ID de document ou avec des vues précalculées. http://guide.couchdb.org/ est le livre CouchDB qui explique en détail la méthode de stockage des données de Couch.

Si vous avez des questions, n'hésitez pas à me contacter (aquarius) ou rodrigo sur #ubuntuone sur freenode. Je serais plus qu'heureux de discuter avec vous de ce que vous prévoyez de faire et des bonnes façons de modéliser ces données dans le système de stockage de données Ubuntu One.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X