桌面应用程序之间的数据共享和通信

时间:2019-04-17 10:12:11

标签: database-design architecture

我需要支持桌面应用程序之间的数据共享。我有三个桌面应用程序 A,B和C 。计划将这三个应用程序在产品生命周期中一起使用。 工作流程如下。

      1。用户使用应用程序A
    创建设计(例如图像)
      2。用户打开应用程序B ,并且应该能够在设计中工作(在 A 中创建),以便在创建的图像上添加一些效果。
      3。同样,用户应该能够继续在应用程序C 中使用图像。

为此,我可以使用数据库或文件系统来存储各个级别的进程状态。但是问题是,如果用户并行打开应用程序 A和B 中的图像并在 A 中进行某些更改,则该图像应反映在 B (如果C打开,也可以在C中打开)。

除了此应用程序之间的文件系统/数据库共享之外,还有其他设计或技术吗?

欢迎任何建议。

预先感谢, 凯瑟琳

2 个答案:

答案 0 :(得分:0)

当然有,您如何看待Google文档的实现?多个用户可以更改同一个文档,但是所有更改都实时存在。

关键思想是累积增量(即变更集),而不是直接更改源文件。这意味着存在另一个负责无窗口的进程,该进程负责1)从所有活动源中无休止地读取新的增量,2)将它们合并为单个结果变更集,最终3)更新共享文件。

操作系统将通知

ABC。这很容易。可以通过不同的方式来通知Orchestrator(无窗口过程),其中包括stdin或监听localhost上的某个端口。由你决定。

如果您仔细设计增量,则可能会获得一个map/reduce-结构,并具有所有优点。

答案 1 :(得分:0)

如上一个答案所述,这是可能的。

您可以使用Conflict-free replicated data typeOperational Transformations之类的算法来做到这一点。您可以搜索有关此主题的更多信息。关于该主题有很多白皮书和文章。

使用上一个答案中提到的增量也是您可以做的另一件事。 Google文档使用(至少是我上次检查的时间)操作转换。

也检查一下。这是OT的很好的可视化效果:https://operational-transformation.github.io/visualization.html

您可以使用IPC来使两个应用程序互相通信,也可以使用第三个应用程序。