我想要设计如何通过REST API来处理Android应用程序和远程服务器之间的数据同步。通过REST API处理Android服务和服务器之间的数据同步
现在它还处于早期阶段,但我有我的休息服务器基本上运行(无论如何足够用于测试目的)。
我有3个表来同步(链接如下)。
SHOW> -----季> ----- EPISODE
服务器和设备有这些表的一个类似的版本,我需要现在,最终他们设备同步到服务器(2方法)。同步将通过Android服务在后台对REST API进行异步调用(插入/更新和删除)而发生。
现在我的主要问题是提出一个逻辑,以确保双方将得到相应的更新。
从设备到服务器的插入/更新将通过POST请求完成,所以我想所有3个表上都有一个状态标志,通过ON INSERT/ON UPDATE TRIGGERS(SQlite)填充,允许同步服务工作需要到服务器上的行。 这是正确的做法吗?
它看起来像
CREATE TRIGGER sync_update_show AFTER UPDATE ON show
BEGIN
UPDATE show SET sync_flag = 'TO_SYNC' WHERE _id = new._id
END
现在进行删除,该服务是独立于主应用程序,我虽然使用BEFORE DELETE SQlite的触发器来填充“TODELETE”表,该服务可以浏览和触发删除对服务器的API调用。 这是正确的做法吗?
它看起来像
CREATE TRIGGER sync_delete_show BEFORE DELETE ON show
BEGIN
INSERT INTO todelete_show
SELECT * FROM show WHERE _id = old._id
END
现在,当它涉及到服务器应用程序同步,我只想得到所有记录(API调用)和处理插入/更新/删除设备上(浏览通过返回的记录)。但是可能有更高效的方法来优化带宽(返回的JSON可能很大)。
我欢迎任何意见,因为我不想开始处理服务实现并意识到我弄错了所有错误!
谢谢你的信息。我不认为我现在需要ContentProvider,因为我不打算与其他应用程序共享内容而不是我的其余服务器。我一定会考虑它的未来! – Madoc 2012-03-19 09:08:14