Обмен данными и связь между настольными приложениями - PullRequest
1 голос
/ 17 апреля 2019

Мне нужно поддерживать обмен данными между настольными приложениями.У меня есть три настольных приложения A, B и C .Все три приложения планируется использовать вместе в жизненном цикле продукта.Рабочий процесс, как показано ниже.

. Для этого я могу использовать базу данных или файловую систему для хранения состояния процесса.на всех уровнях.Но проблема в том, что если пользователь открывает изображение в приложениях A и B параллельно и делает некоторые изменения в A , оно должно быть отражено в B (еслиC открывается, в C тоже).

Есть ли какой-либо другой дизайн или технология, кроме совместного использования файловой системы / базы данных между приложениями для этой проблемы?

Любые предложения приветствуются.

Заранее спасибо, Катер

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Как уже упоминалось в предыдущем ответе, это возможно.

Для этого можно использовать алгоритмы, такие как Бесконфликтный реплицированный тип данных и Оперативные преобразования . Вы можете искать более подробную информацию по этому вопросу. Есть много статей и статей на эту тему.

Использование дельт, как уже упоминалось в предыдущем ответе, - это еще одна вещь, которую вы тоже можете сделать. Документы Google используют (по крайней мере, в последний раз, когда я проверял) операционные преобразования.

Проверьте это тоже. Это хорошая визуализация OT: https://operational -transformation.github.io / visualization.html

Вы можете использовать IPC , чтобы заставить оба приложения общаться друг с другом или использовать третье, как упомянуто.

0 голосов
/ 17 апреля 2019

Конечно, есть, как вы думаете, Google Docs реализован?Несколько пользователей могут видоизменить один и тот же документ, но все изменения происходят в режиме реального времени.

Ключевой идеей является накопление дельт (т.е. наборов изменений), а не непосредственное изменение исходного файла.Это подразумевает существование еще одного процесса без окон, ответственного за 1) бесконечное чтение новых дельт из всех активных источников, 2) объединение их в один результирующий набор изменений и, в конечном итоге, 3) обновление общего файла.

A, B и C будут уведомлены ОС.Это легкая часть.Orchestrator (процесс без окон) может быть уведомлен различными способами, среди которых stdin или прослушивание определенного порта на localhost.Тебе решать.

Если вы тщательно спроектируете свои дельты, вы можете получить структуру map/reduce со всеми ее преимуществами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...