Коллективный редактор в реальном времени - Collaborative real-time editor

А совместный редактор в реальном времени это тип программное обеспечение для совместной работы или же веб приложение что позволяет совместное редактирование в реальном времени, одновременное редактирование, или же живое редактирование того же самого цифровой документ, компьютерный файл или же облачный данные - например, электронная таблица, обработка текста документ, база данных или же презентация - одновременно разными пользователями на разных компьютерах или мобильные устройства, с автоматическим и почти мгновенным слиянием их правок.

Совместное редактирование в реальном времени может происходить онлайн в веб-приложения Такие как Microsoft Office в Интернете (ранее Office Online ) - который поддерживает онлайн (Интернет ) одновременное редактирование (которое Microsoft называется "Совместное редактирование ") из Слово документы, Excel электронные таблицы, Силовая установка и другие Microsoft Office документы, хранящиеся на Office.com, Один диск или же SharePoint облачное хранилище - или же Гугл документы и другие G Suite производительность (офисный пакет) приложения - для совместного редактирования онлайн обработка текста и другие документы, хранящиеся в Гугл Диск. Совместное редактирование в реальном времени также может происходить гибридным способом, например, с Power Sheet BI для Excel,[1] в автономном, веб-и онлайн-совместном редактировании в настольном программном обеспечении, а также в веб-и мобильных приложениях, которые могут быть автоматически синхронизированы с мгновенным доступом к истории версий. В 2020 году наблюдается возрождение интереса к встраиванию этих приложений в безопасные веб-приложения, особенно для бизнес-вариантов использования, при этом Microsoft и Vaadin лидируют со специализированными серверными модулями для совместной работы в реальном времени, которые справляются со сложностями синхронного обмена данными в реальном времени, которые разработчики могут использовать их через API.[2][3]

В отличие от асинхронного (не в реальном времени, с задержкой или офлайн) совместное редактирование, например, с контроль версий такие системы, как Git или же Subversion, редактирование в реальном времени выполняет автоматическую, периодическую, часто почти мгновенную синхронизацию правок всех онлайн-пользователей, редактирующих документ на своем собственном устройстве. Это сделано для того, чтобы избежать или минимизировать редактировать конфликты. При асинхронном совместном редактировании каждый пользователь обычно должен вручную отправить (опубликовать, отправить или зафиксировать), обновить (обновить, извлечь, загрузить или синхронизировать) и (в случае возникновения каких-либо конфликтов редактирования) объединить свои изменения.

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

История ключевых продуктов

Первый пример совместного редактора в реальном времени был продемонстрирован Дуглас Энгельбарт в 1968 г., в Мать всех демосов. На появление широко доступных реализаций концепции потребовались десятилетия.

Мгновенное обновление было выпущено для классическая Mac OS в 1991 из ON Technology.[4][нужен лучший источник ] Позже появилась версия для Майкрософт Виндоус также был выпущен, что позволяет в реальном времени[нужна цитата ] сотрудничество через эти два операционные системы.[нужна цитата ] Instant Update полагался на сервер рабочей группы для координации документов, обновляемых в реальном времени на нескольких клиентах.

В Веб 2.0 Это явление вызвало взрыв интереса к инструментам редактирования документов на основе браузера. В частности, продукт под названием Writely увидел взрывной рост пользователей и был куплен Google в марте 2006 г. (то, что стало известно как Гугл документы а позже переименован в Гугл Диск ). Он обеспечивал одновременное редактирование всего документа, хотя изменения от других пользователей отражались только после того, как клиентская программа опрашивала сервер (каждые полминуты или около того).[нужна цитата ] Еще одним ранним веб-решением было JotSpotLive, в котором построчное одновременное редактирование было доступно почти в реальном времени.[5] Однако после покупки Google в ноябре 2006 года материнской компании JotSpot сайт был закрыт. Сайты Google был запущен в феврале 2007 года как рефакторинг JotSpot,[6][7][8][9] но ему не хватает многопользовательских возможностей JotLive в режиме реального времени. Проекты Synchroedit (форматированный текст) и MobWrite (простой текст) - это две недавние попытки с открытым исходным кодом восполнить пробел в совместном редактировании в режиме реального времени в браузере, хотя по-прежнему не удается достичь истинной производительности в реальном времени, особенно на крупномасштабная архитектура.[нужна цитата ]

В 2009 году Google начал бета-тестирование Google Wave, среда для совместной работы в реальном времени, которая, как надеялись Google, со временем вытеснит электронную почту и обмен мгновенными сообщениями.[нужна цитата ] EtherPad был приобретен Google, который выделил команду EtherPad для работы в рамках проекта Wave. Однако в августе 2010 года Google объявил в своем блоге[10] что было принято решение прекратить разработку Wave как отдельного проекта из-за недостаточного принятия пользователями. После того, как Google выпустил заброшенный исходный код EtherPad как Открытый исходный код в декабре 2009 года сообщество занялось его разработкой и произвело полное переписывание под названием Etherpad lite, который полностью написан на JavaScript и построен на вершине node.js. Другие известные инструменты, основанные на операционная трансформация технологии CKEditor, и SubEthaEdit.[11] В 2020 году наблюдается всплеск интереса к этой концепции, поскольку Microsoft также недавно выпустила свой фреймворк Fluid, который основан на новой технологии Total Order Broadcast, в отличие от OT или CRDT.[12] В настоящее время Fluid не зависит от фреймворка. Microsoft заявляет, что он еще не готов к производственному использованию.[13]

В октябре 2020 года компания Vaadin Ltd., поставщик платформы Vaadin, выпустила версию 1.0 своего механизма совместной работы,[14] с предпосылкой того, что разработчики могут быстро встраивать функции совместной работы и редактирования в реальном времени в любое веб-приложение с серверными модулями Java, используя несколько строк кода (для конкретных случаев использования через их, все еще ограниченные, высокоуровневые API).[15] Эта функция в настоящее время поддерживает Java, хотя поставщик отмечает, что API на основе TypeScript также входит в план, в соответствии с недавним продолжающимся расширением платформы Vaadin, которое также позволяет создавать пользовательский интерфейс на основе TypeScript в будущем через свою будущую структуру Fusion.[16][17]

Технические проблемы

Сложность решений для совместного редактирования в реальном времени связана с задержкой связи. Теоретически, если бы связь была мгновенной, то создание редактора для совместной работы в реальном времени было бы не сложнее, чем создание однопользовательского редактора, потому что документ можно было бы редактировать, используя алгоритм, подобный следующему:

  1. Запросить токен редактирования документа с сервера
  2. Подождите, пока сервер не скажет, что наша очередь редактировать документ
  3. Сообщите серверу, как редактировать документ
  4. Отпустите токен редактирования документа

Однако скорость связи ограничена задержкой в ​​сети. Это создает фундаментальную дилемму: пользователям нужны их собственные правки, вносимые в документ мгновенно, но если они вносятся мгновенно, то из-за задержки связи их правки обязательно должны быть вставлены в разные версии документа.

Пример иллюстрирует эту проблему. Предположим, Боб и Алиса начали с документа, содержащего слово Мэри. Боб удаляет "M", затем вставляет "H", чтобы заменить слово на Hary. Алиса, прежде чем она получит какое-либо изменение от Боба, удаляет 'r', затем удаляет 'a', чтобы изменить его на Мой. И Боб, и Алиса получат правки, которые были применены к версиям документа, которые никогда не существовало на собственных машинах.

Таким образом, задача совместного редактирования в реальном времени состоит в том, чтобы точно выяснить, как применять изменения от удаленных пользователей, которые изначально были созданы в версиях документа, которые никогда не существовали локально и которые могут конфликтовать с собственными локальными изменениями пользователя.

Самые сложные решения решают эту проблему, не требуя сервера, не используя блокировку (все пользователи могут свободно редактировать все части документа одновременно) и поддерживая любое количество пользователей (ограниченное только ресурсами компьютеров). UNA и SubEthaEdit являются примерами двух программ, использующих этот подход.

Хотя эти сложные подходы позволяют Пользовательский опыт, базовый редактор для совместной работы также можно создать в клиент-серверная модель. В сценарии клиент-сервер одному из экземпляров редактора назначается роль сервера совместной работы при открытии документа. Этот сервер обеспечивает синхронизацию других редакторов, определяя сетевую задержку и действуя как синхронизация времени сервер. Сервер получает с отметкой времени уведомления об изменениях, внесенных в документ другими пользователями. Он определяет, как эти изменения должны влиять на его локальную копию, и транслирует свои изменения в пул совместной работы. В некоторых моделях изменения не отражаются на клиенте до тех пор, пока с сервера не будет получен официальный ответ, даже если эти изменения были внесены локально.

Этот подход, хотя и значительно менее эффективен, обеспечивает базовое сотрудничество при относительно низких затратах. Это делает его предпочтительным в ситуациях, когда ресурсы обработки ограничены. NetSketch является примером программы, использующей эту модель.

В прошлом, Microsoft и IBM работали над добавлением средств совместной работы к существующим архитектурам.[18] Несмотря на то, что эти подходы позиционируются как совместная работа в реальном времени, они требуют либо блокировки документа (так что только один человек может редактировать его за раз), либо «согласования» конфликтующих изменений, что, как правило, пользователи считают неудовлетворительным.[нужна цитата ]

Смотрите также

Рекомендации

  1. ^ «БЕСПЛАТНОЕ приложение без кода, аналитический ИИ, блокчейн, платформа для совместной работы Excel & Web 3.0». PowerSheet.ai. Получено 2020-06-08.
  2. ^ «Флюид-каркас». fluidframework-docs.azureedge.net. Получено 2020-11-02.
  3. ^ «Двигатель совместной работы». Ваадин. Получено 2020-11-02.
  4. ^ "Руководство пользователя". Архивировано из оригинал 21 февраля 2009 г.
  5. ^ Майкл Аррингтон (27 сентября 2005 г.). "JotSpot Live - идеальная вики?". TechCrunch.
  6. ^ Майкл Аррингтон (27 февраля 2008 г.). «На это ушло 16 месяцев, но Google повторно запускает Jotspot». TechCrunch.
  7. ^ Дэвид Шартье (28 февраля 2008 г.). "Первый взгляд: Google перезапускает JotSpot как сайты Google". Ars technica.
  8. ^ Дэн Фарбер (27 февраля 2008 г.). «JotSpot перевоплотился в сайты Google». CNET Новости.
  9. ^ Марк 'Rizzn' Хопкинс (27 февраля 2008 г.). «Google наконец-то освобождает JotSpot с помощью Сайтов Google». Mashable.
  10. ^ Ина Фрид и Джош Ловенсон (04.08.2010). "Google отключает Google Wave". CNET.
  11. ^ SunChengzheng; SunDavid; NgAgustina; CaiWeiwei; ЧоБрайден (04.01.2020). «Реальные различия между OT и CRDT в рамках общей структуры преобразования для поддержания согласованности в соредакторах». Труды ACM по взаимодействию человека и компьютера. Дои:10.1145/3375186.
  12. ^ "Часто задаваемые вопросы". fluidframework-docs.azureedge.net. Получено 2020-11-02.
  13. ^ «Флюид-каркас». fluidframework-docs.azureedge.net. Получено 2020-11-02.
  14. ^ «Встречайте Collaboration Engine: самый простой способ создания веб-приложений для совместной работы». Ваадин. Получено 2020-11-02.
  15. ^ «Двигатель совместной работы». Ваадин. Получено 2020-11-02.
  16. ^ «Взгляд на будущее возможностей Vaadin для совместной работы в реальном времени». Ваадин. Получено 2020-11-02.
  17. ^ «Представляем Vaadin Flow and Fusion». Ваадин. Получено 2020-11-02.
  18. ^ Microsoft Live Communications В архиве 2008-03-05 в португальском веб-архиве. Рекламируется как в реальном времени, но не в реальном времени в смысле этой статьи.