Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

История основных продуктов [ править ]

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

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

Web 2.0 явление вызвало взрыв интереса в браузерных инструментов для редактирования документов. В частности, продукт под названием Writely получил взрывной рост пользователей и был куплен Google в марте 2006 года (который стал известен как Google Docs, а затем переименован в Google Drive ). Он обеспечивал одновременное редактирование всего документа, хотя изменения, внесенные другими пользователями, отражались только после того, как клиентская программа опрашивала сервер (каждые полминуты или около того). [ необходима цитата ] Еще одним ранним веб-решением был JotSpotLive, в котором построчное одновременное редактирование было доступно почти в реальном времени. [5]Однако после покупки Google в ноябре 2006 года материнской компании JotSpot сайт был закрыт. Google Sites был запущен в феврале 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, выпустила V1.0 своего механизма совместной работы [14] , чтобы позволить разработчикам быстро встраивать функции совместной работы и редактирования в реальном времени в любое веб-приложение с помощью Java. бэкэнды, использующие несколько строк кода (для конкретных случаев использования через их, все еще ограниченные, высокоуровневые API). [15] Эта функция в настоящее время поддерживает Java, хотя производитель отмечает, что также появится API на основе TypeScript, в соответствии с недавним продолжающимся расширением платформы Vaadin, которое также позволит создавать пользовательский интерфейс на основе TypeScript в будущем через свою будущую среду Fusion. [16] [17]

Технические проблемы [ править ]

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

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

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

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

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

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

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

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

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

См. Также [ править ]

  • Cobrowsing
  • Бесконфликтный реплицированный тип данных
  • Распределенных вычислений
  • Распределенный контроль версий
  • Совместная работа над документами
  • Список программного обеспечения для совместной работы
  • Текст в реальном времени
  • Вики
  • Gobby

Ссылки [ править ]

  1. ^ «БЕСПЛАТНОЕ приложение без кода, Analytics AI, Blockchain, Excel Excel Web 3.0 Collaboration Platform» . PowerSheet.ai . Проверено 8 июня 2020 .
  2. ^ "Fluid Framework" . fluidframework-docs.azureedge.net . Проверено 2 ноября 2020 .
  3. ^ "Collaboration Engine" . Ваадин . Проверено 2 ноября 2020 .
  4. ^ "Руководство пользователя" . Архивировано из оригинала на 2009-02-21.
  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 News .
  9. ^ Марка 'Rizzn' Hopkins (2008-02-27). «Google наконец-то освобождает JotSpot с помощью сайтов Google» . Mashable .
  10. ^ Ina Fried и Джош Lowensohn (2010-08-04). «Google отключает Google Wave» . CNET .
  11. ^ SunChengzheng; SunDavid; NgAgustina; CaiWeiwei; ЧоБрайден (2020-01-04). «Реальные различия между OT и CRDT в рамках общей структуры преобразования для поддержания согласованности в соредакторах» . Труды ACM по взаимодействию человека и компьютера . DOI : 10.1145 / 3375186 .
  12. ^ «Часто задаваемые вопросы» . fluidframework-docs.azureedge.net . Проверено 2 ноября 2020 .
  13. ^ "Fluid Framework" . fluidframework-docs.azureedge.net . Проверено 2 ноября 2020 .
  14. ^ «Встречайте Collaboration Engine: простейший способ создания совместных веб-приложений» . Ваадин . Проверено 2 ноября 2020 .
  15. ^ "Collaboration Engine" . Ваадин . Проверено 2 ноября 2020 .
  16. ^ «Взгляд на будущее возможностей совместной работы Ваадина в реальном времени» . Ваадин . Проверено 2 ноября 2020 .
  17. ^ "Представляем Vaadin Flow and Fusion" . Ваадин . Проверено 2 ноября 2020 .
  18. ^ Microsoft Live Communications. Архивировано 5 марта 2008 г. в португальском веб-архиве. Рекламируется как в реальном времени, но не в реальном времени в смысле этой статьи.