gpt4 book ai didi

用于并发 XML 编辑的 Java 工具

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:21 25 4
gpt4 key购买 nike

我正在构建一个用户界面,用户必须能够同时在网页上进行编辑。我们 90% 以上的应用程序采用的标准技术是乐观锁定;也就是说,我们预计并发编辑很少会发生,如果发生,第二个提交者会收到错误并丢失其编辑。

在应用程序的有限部分中,预计会出现并发编辑,我们需要以更好的方式处理它们。锁定以强制顺序编辑不是一个选项,因为如果用户在没有明确解锁的情况下离开屏幕,则需要锁定超时,这会非常烦人。

如果可能,我希望将表单数据保存为 XML,但允许对该文档进行并发编辑。

我简要研究过的一些工具可能能够做到这一点,或者提供一些关于如何最好地处理它的灵感:

Apache Wave(Google Wave)http://incubator.apache.org/wave/

MobWrite http://code.google.com/p/google-mobwrite/

是否有人对可以处理此问题的工具包或技术有更多建议?感谢您的帮助。

最佳答案

两种基本算法可以在这里为您提供帮助:

<强>1。 Operational transformation ,这是 Apache Wave 的幕后黑手。

主要思想是捕获基本编辑事件并合并来自不同用户的并发事件流。虽然乍一看很简单,但这种方法可能需要复杂的实现:

  1. 对所有编辑事件进行强大的跨浏览器捕获和分解可能很难实现

  2. 在出现网络错误/超时的情况下,没有简单的方法可以恢复多个通信代理的同步状态。

<强>2。 Differential sync ,它是 Google Mobwrite 的幕后黑手。

这个基于计算编辑后的副本和某些基本状态(所谓的“影子”)之间的差异。然后并发差异将被合并。人们可以轻松计算文档的任意两个状态之间的差异,因此从同步包丢失中恢复没有问题。以下tech talks record详细解释了这项技术。

面对与您类似的需求,我的解决方案基于第二种方法,因为它简单且稳健。原始 Mobwrite 实现使用 Python 后端,因此我用 Java 重新实现了它。您可以找到一个工作原型(prototype) here ,这是一个简单的基于网络的协作编辑器,我在我们的专有软件中采用相同的方法之前作为概念验证而制作。

关于用于并发 XML 编辑的 Java 工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382088/

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