在数据库和 PhoneGap 应用程序之间同步列表数据的最佳实践
Best practice for synchronising list data between database and PhoneGap application
场景
我有以下组成检查样式应用程序的组件
- Web 应用程序 (安排新的检查和更新/删除计划的检查,直到它们被发送到设备)
- 数据库(存储预定检查)
- WCF Restful 服务 (returns 设备用户请求的最新日程数据)
- 和一个 PhoneGap 应用程序(显示设备用户的计划检查列表,将 WCF 服务返回的数据存储在本地存储中)
它将从网络用户为移动用户安排新的检查开始,并将它们保存到数据库中。设备用户将登录到移动应用程序并刷新他们的日程列表,以便返回并显示最新的日程项目。然后,网络用户可以随时创建/更新/或删除检查。
问题
每次设备用户刷新他们的日程列表时,他们的所有日程数据都将被返回并添加到本地存储。这意味着将创建重复项,因为某些数据可能已经存在于设备上。
分辨率
为了防止出现重复,我将在数据库中添加一个额外的字段来将项目标记为 "received by app",以便下次设备用户刷新他们的日程列表时可以忽略标记的项目,并停止网络用户更新或删除它们。
此分辨率存在漏洞
- 如果我在返回列表时在 Web 服务中将项目标记为 "received by app",则从 WCF 服务返回数据和接收数据的设备之间可能会出现错误,这意味着它从未到达设备。这可能会导致项目被标记为 "on the device",而实际上它们不是。
- 或者,如果我选择等到设备收到列表,然后向数据库发送一条消息说设备已收到物品,由于没有互联网连接,这条消息可能不会立即发送.这意味着 Web 门户用户可以更新/删除用户的预定项目,即使它在他们的设备上也是如此。
我的问题
我想知道是否有人有管理此漏洞的有效解决方案,或者我是否应该更改方案中的任何步骤以阻止此漏洞出现?
您可以使用时间戳来检查上次更新本地存储的时间。对于对数据库的每个请求,您可以将本地存储时间戳与数据库时间戳进行比较,并仅获取在时间戳之后创建的那些。
场景
我有以下组成检查样式应用程序的组件
- Web 应用程序 (安排新的检查和更新/删除计划的检查,直到它们被发送到设备)
- 数据库(存储预定检查)
- WCF Restful 服务 (returns 设备用户请求的最新日程数据)
- 和一个 PhoneGap 应用程序(显示设备用户的计划检查列表,将 WCF 服务返回的数据存储在本地存储中)
它将从网络用户为移动用户安排新的检查开始,并将它们保存到数据库中。设备用户将登录到移动应用程序并刷新他们的日程列表,以便返回并显示最新的日程项目。然后,网络用户可以随时创建/更新/或删除检查。
问题
每次设备用户刷新他们的日程列表时,他们的所有日程数据都将被返回并添加到本地存储。这意味着将创建重复项,因为某些数据可能已经存在于设备上。
分辨率
为了防止出现重复,我将在数据库中添加一个额外的字段来将项目标记为 "received by app",以便下次设备用户刷新他们的日程列表时可以忽略标记的项目,并停止网络用户更新或删除它们。
此分辨率存在漏洞
- 如果我在返回列表时在 Web 服务中将项目标记为 "received by app",则从 WCF 服务返回数据和接收数据的设备之间可能会出现错误,这意味着它从未到达设备。这可能会导致项目被标记为 "on the device",而实际上它们不是。
- 或者,如果我选择等到设备收到列表,然后向数据库发送一条消息说设备已收到物品,由于没有互联网连接,这条消息可能不会立即发送.这意味着 Web 门户用户可以更新/删除用户的预定项目,即使它在他们的设备上也是如此。
我的问题
我想知道是否有人有管理此漏洞的有效解决方案,或者我是否应该更改方案中的任何步骤以阻止此漏洞出现?
您可以使用时间戳来检查上次更新本地存储的时间。对于对数据库的每个请求,您可以将本地存储时间戳与数据库时间戳进行比较,并仅获取在时间戳之后创建的那些。