как правильно делаются приложения, где несколько клиентов могут одновременно редактировать данные?
Например, Evernote — есть список заметок, каждая заметка — текстовая.
Клиентов может быть несколько.
Каждый клиент может скачать последние данные, потом отключиться от сети,
исправить одну и ту же заметку и получить конфликт при следующем апдейте.
Evernote скорее всего хранит версию заметки и если она изменилась,
то делает общую заметку с каждым вариантом от каждого клиента
и пользователь сам разруливает конфликт.
В Google Docs нет данных на клиенте — все онлайн,
но зато несколько пользователй могут редактировать одну и ту же заметку
одновременно и без конфликтов — видимо, конфликт решается в пользу
одного (последнего?) изменения. Так?
Где можно побольше почитать про такие архитектуры, можно на английском.
Здравствуйте, Keith, Вы писали:
K>В Google Docs нет данных на клиенте — все онлайн,
Поэтому в качестве примера лучше рассмотреть Google Keep. Он позволяет редактировать заметки оффлайн на мобильном устройстве и онлайн в веб-интерфейсе, а потом синхронизирует.
Здравствуйте, Keith, Вы писали:
K>как правильно делаются приложения, где несколько клиентов могут одновременно редактировать данные?
Думаю, многое зависит от характера приложения и типа данных.
Для структурированных данных (типа разных бизнес-объектов) одни подходы, для приложений работы с контентом — другие.
K>Где можно побольше почитать про такие архитектуры, можно на английском.
Я так понимаю, вас интересуют больше вторые (контент-ориентированные системы), тогда можно, я думаю, посмотреть на то, как сделано в Microsoft Office.
Когда-то давно я пробовал посмотреть на то как это реализованно (была мысль сделать серверную поддержку данного механизма для системы, в разработке котрой я тогда принимал участие — но не сложилось), и самые общие моменты записал тут: Совместное редактирование в MS Office 2010 — немного технических подробностей
Там в конце статьи есть ссылки на опубликованные протоколы и форматы. Возможно, это даст некий импульс в изучении вопроса.
1.3 Structure Overview (Synopsis)
This file format is a revision-based file format created to be an effective way to store changes with
revisions instead of needing to rewrite the entire file whenever a change is written to the file.
Additionally, the revision store is transactional to ensure data integrity as clients read and write data
to the revision store. The revision store is used for .one and .onetoc2 files.
Здравствуйте, Михаил Романов, Вы писали:
МР>Здравствуйте, Keith, Вы писали:
K>>как правильно делаются приложения, где несколько клиентов могут одновременно редактировать данные? МР>Думаю, многое зависит от характера приложения и типа данных. МР>Для структурированных данных (типа разных бизнес-объектов) одни подходы, для приложений работы с контентом — другие.
K>>Где можно побольше почитать про такие архитектуры, можно на английском. МР>Я так понимаю, вас интересуют больше вторые (контент-ориентированные системы), тогда можно, я думаю, посмотреть на то, как сделано в Microsoft Office. МР>Когда-то давно я пробовал посмотреть на то как это реализованно (была мысль сделать серверную поддержку данного механизма для системы, в разработке котрой я тогда принимал участие — но не сложилось), и самые общие моменты записал тут: Совместное редактирование в MS Office 2010 — немного технических подробностей
МР>Там в конце статьи есть ссылки на опубликованные протоколы и форматы. Возможно, это даст некий импульс в изучении вопроса.
Все равно, тема синхронизации документов в реальном времени достаточно сложная,
Касательно офиса, открытых (на github) реализаций, нормально поддерживающих co-authoring, я не видел
Re[3]: Архитектура Doogle Docs/Evernote и аналогов