0

我正在设计一个用于数据收集的 Android 应用程序,该应用程序预计将用于网络覆盖范围不广的户外区域,因此客户端到服务器消息传递的稳健性很重要。如果用户尝试提交某些内容但请求失败或没有网络,则应用程序需要记住这一点并稍后再试,无论是按需还是在连接恢复时。

我们正在考虑将 Firebase 用于我们的数据模型,但也想评估更传统的服务器/数据库/API 解决方案。Firebase 的一大优势是它们通过客户端 SDK 提供的“离线”支持:

无论网络延迟或互联网连接如何,您的 Firebase 应用都将保持响应。在任何数据写入服务器之前,对 Firebase 数据库的所有写入都会立即触发本地事件。一旦重新建立连接,客户端将接收它错过的任何更改,并将其与当前服务器状态同步。

如果我们使用 Firebase,免费获得它是很棒的。或者,什么会给我类似的客户端功能来支持典型的 RESTful API?最好是某种可以为我处理状态而不是跟踪个人尝试的库。

我已经研究过像 SymmetricDS 这样的离线数据库同步解决方案,但在这种情况下这似乎有点过头了。事实上,我宁愿客户端没有直接的数据库访问权限。从应用程序发送的消息将是独立条目,如照片或评论,不需要执行复杂的查询、同步写入等。我只需要确保用户提交的任何内容最终都会发送到服务器一旦连接恢复,并确认它已经恢复。

4

1 回答 1

1

如果您正在考虑一个混合应用程序,您可以在 WebView 中使用 PouchDB(它支持 Cordova 和带有 SQL Lite 的 Android,并且可以通过这种方式重新用于 iOS)。它只能在本地使用,而不是使用它的同步功能,它既简单又强大,但需要让客户直接访问数据库。虽然,您可以在 db 上配置 R/W 访问权限和多个用户,并且每个 db 可以是每个客户端/项目,但实际上这就是 CouchDB 的用途,使得可扩展性非常简单。

它使用简单,并且混淆了存储数据所需的底层浏览器技术,并且因浏览器而异。因此,您不必担心浏览器支持哪种技术,例如 SQL 或本地存储等。与 Firebase 类似,它可能更适合您的情况。

当数据连接可用时,您可以使用传统的 REST,而不是您可以从浏览器中的 PouchDB 到 CouchDB 服务器执行的简单 .sync()。要查看层的数据将是 PouchDB,然后您可以单独管理与服务器的同步并跟踪响应以验证它是否已更新。但是,如果它可以满足您的要求,使用同步功能会简单得多。

http://pouchdb.com/learn.html

于 2016-01-29T18:56:21.490 回答