gpt4 book ai didi

android - 通过 REST API 处理 Android 服务和服务器之间的数据同步

转载 作者:行者123 更新时间:2023-11-29 02:06:34 24 4
gpt4 key购买 nike

我正在尝试设计如何通过 REST API 最好地处理 Android 应用程序和远程服务器之间的数据同步。

现在它仍处于早期阶段,但我的其余服务器已基本运行(无论如何足以用于测试目的)。

我有 3 个表要同步(链接如下)。

节目 >----- 季节 >----- 剧集

服务器和设备都有这些表的相似版本,我需要将它们从设备同步到服务器(现在和最终两种方式)。同步将通过 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 TRIGGERS 来填充服务可以浏览的“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 可能很大)。

我欢迎任何关于此的意见,因为我不想开始致力于服务实现并意识到我完全错了!

最佳答案

您使用数据库触发器管理变更日志的方法肯定会奏效。如果您想要一种更加面向对象的方法,您可以为您的业务对象公开一个 CRUD API,然后在该 API 中更新一个带有更新/插入/删除标记的变更日志表,而不使用数据库触发器。

如果您对使用同步框架感兴趣,我想提请您注意 OpenMobster 的同步服务。

您可以进行以下同步操作

  • 双向
  • 单向客户
  • 单向装置
  • 开机

除此之外,所有修改都会自动跟踪并与云端同步。当网络连接断开时,您可以让您的应用离线。它将跟踪任何更改,并在连接恢复时自动在后台将其与云同步。

它还支持像 iCloud 一样跨多个设备同步。

在云端,您只需编写一个 Java channel ,它是数据的 CRUD 接口(interface),并将 channel 公开给同步引擎。在设备端,此数据可通过基于 CRUD 的同步 API 获得。所有其他同步细节,如管理变更日志、冲突管理、复制到多个设备等,均由同步引擎自动处理。

在你的情况下,

ChangeLog 自动管理并与同步引擎集成。它使用我提到的面向对象的方法,并通过基于 CRUD 的同步 API 处理同步。

这是开源项目的链接:http://openmobster.googlecode.com

这是了解其部分工作原理的教程:http://code.google.com/p/openmobster/wiki/AndroidSyncApp

关于android - 通过 REST API 处理 Android 服务和服务器之间的数据同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9737287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com