0

正如标题所述,我计划使用对项目(添加/删除/更新)进行的用户操作的事件(这是必需的)。现在这是我试图回答的一些问题,我感觉有人已经偶然发现了相同的问题集:

1)对象ID生成服务器与客户端?如果移动客户端离线 - 他需要为新创建的对象生成一些 ID - 以便对该对象的后续操作可以对其进行一些参考。最好的方法是什么?生成一些本地 ID,然后分配在服务器上生成的全局 ID(一旦对象被推送到服务器)。我们的架构团队认为这是正确的方法,但我个人看不到它的好处。特别是如果用户将登录其他移动设备并下载所有事件 - 他应该收到什么 ID - 全局或全局 + 本地。这种方法比仅在客户端生成类似于 UUID(时间 + 硬件 ID + 用户 ID + 递增 ID/随机 ID)的内容更好吗?

2)处理多个移动/网络客户端的正确方法是什么(用户可以登录单个或多个客户端)。这里的第一个问题是冲突解决- 这里我们的对象有版本 - 以支持乐观锁定 - 所以第一个成功提交的人就是赢家。这似乎很清楚。另一个问题是同步. 理想情况下,最好只将更新信息下载到客户端。这样我们就需要向客户发送他不知道的事件。为此,显然我们需要信息——哪个事件来自哪个设备。这是将每个事件的 sourceId 发送到服务器的另一点。但是我们如何处理 2 个或更多的网络会话呢?我是 WEB 编程的菜鸟,但我们希望是无状态的,这是否意味着浏览器上的某些脚本应该生成某种 sessionID,它将用作 web 客户端上生成的所有事件的 sourceID 并立即发送到服务器?

有没有人有类似的任务?您使用了哪些解决方案/遇到了哪些问题?

4

1 回答 1

0

你没有提到你使用的是什么类型的后端。如果您使用的是 Oracle 后端,则应该查看 Database Mobile Server (DMS):

http://www.oracle.com/technetwork/products/database-mobile-server/overview/index.html

它为您处理数据同步,包括冲突解决。您的移动应用程序将从本地数据库读取和写入,DMS 处理其余部分。它还处理支持的客户端平台上的设备/应用程序管理。

至于1)中描述的问题,您似乎在询问是否应该在客户端或服务器端创建唯一标识符。如果对您的架构没有更完整的了解,我看不到任何一种明显的优势。在任何情况下,无论您决定采用哪种方式,DMS 都可以将唯一标识符从一侧传播到另一侧。

希望对您有所帮助,祝您项目顺利。

-- Eric Jensen,甲骨文产品经理

于 2013-02-04T19:42:01.760 回答