将 C++ 应用程序与 Ubuntu One 同步

将 C++ 应用程序与 Ubuntu One 同步

我目前正在用 C++ 开发一款应用,它将与 Ubuntu One 同步数据,但我在网上找不到任何文档来解释如何做到这一点。我发现Ryan Paul 的 Ars Technica 文章它提供了使用 Python 实现此操作的出色介绍,同时提到存在一个库可用于在 C 中实现此操作,但它并未提供关于可在哪里找到此基于 C 的解决方案的提示。我在 Google 上搜索了一段时间,但似乎没有人谈论开发利用 Ubuntu One 同步的应用程序。

有人知道我可以在哪里找到有关这个基于 C 的接口的信息吗?

答案1

Ubuntu One 通过 Desktopcouch 提供数据同步,它是 CouchDB 的本地版本,可自动与 Ubuntu One 和您的所有机器同步。有关云和 Python API 的一些文档可从以下网址获取Ubuntu One 就在这里,如果您想构建使用与 Ubuntu C++ 应用程序相同数据的 Web 应用程序或移动应用程序,这可能会很有用。

C/C++ API 尚未出现在开发者网站上(很快就会出现!),因此这里有一个摘要,应该足以帮助您入门。

对于 C/C++,您有 couchdb-glib 和 deskcouch-glib。couchdb-glib 提供通用的 CouchDB API,而 deskcouch-glib 只提供一个对象,该对象创建一个 Session 对象,其中包含连接到 Ubuntu One 的 deskcouch 所需的一切。

所以:

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-文档 安装 libcouchdb-glib-doc软件包。安装 #libdesktopcouch-glib-dev 安装 libdesktopcouch-glib-dev应该会引入你需要的所有库。

API 可让您访问 CouchDB,因此您当然需要了解 CouchDB 本身的工作原理,以及如何在其中存储数据。简而言之:数据存储在 JSON 文档中,并通过文档 ID 或预先计算的视图提取。http://guide.couchdb.org/是CouchDB书籍,其中更详细地解释了Couch的数据存储方法。

如果您有任何问题,请通过 freenode 上的 #ubuntuone 联系我 (aquarius) 或 rodrigo。我非常乐意与您讨论您的计划以及在 Ubuntu One 数据存储系统中对这些数据进行建模的好方法。

相关内容