这更多的是不一定与任何特定技术绑定的概念问题。 假设你在服务器上获得了一些数据库,一些REST/JSON API访问该数据库中的内容,一些移动客户端显示通过API检索到的数据。将部分数据库模型从服务器同步到客户端
在客户端上有一些缓存机制,并且只要客户端只能读取数据就能够离线访问数据会很好(在我的情况下,拒绝对脱机客户端的写入访问权限避免必须管理所有可能发生的讨厌冲突)。
看来,解决这个问题的好方法是在客户端上提供服务器数据库模型的子集,并将数据从服务器同步到客户端。 访问本地数据库可能会立即返回结果,但也触发更新请求到服务器。如果服务器返回修改后的数据,则客户端模型会同步其本地数据库并通知显示数据更改。
最终的目标当然是用户可以浏览信息,不管他的互联网连接的稳定性如何,只要他不修改任何数据就不会受到连接对话框或类似的问题的困扰。
从实现的角度来看......一方面,将服务器数据库直接连接到客户端数据库似乎不是个好主意,因为它们可能来自不同的供应商。我想至少在两个数据库实现上都需要一个独立于供应商的模型。另一方面,将服务器数据库中的数据转换为某种传输格式,并将其放回到客户端数据库中似乎有很多开销。
任何建议如何以优雅和可维护的方式解决?
我强烈建议John上面介绍的2个选项之一。由于Android内置的方式,GCM是首选。但是,如果您的项目需求不能满足GCM路线,那么第一个选项仍然存在。 –
我不喜欢第一个选项,因为这可能会导致更新用户可能永远不会看到的数据。 GCM我打算包含轻量级通知,但通过它触发数据库更新可能对我来说太浪费了。另外我不确定它在手机平台上的工作效果如何,因为这些推送服务似乎与供应商相关。你对第三种选择有什么看法?根据使用情况更新本地数据库。在本地访问数据时,本地结果可能会立即返回,但也会向服务器发送相同数据的请求 – mibollma