Возможно ли сотрудничество в реальном времени с использованием текстовой области? - PullRequest
3 голосов
/ 11 января 2012

Я занимаюсь разработкой приложения, которое требует совместной работы в реальном времени.Я планирую использовать текстовую область cshtml, чтобы позволить пользователям печатать.Возможно ли сотрудничество в реальном времени с помощью текстовой области?

Кроме того, я немного прочитал об операционном преобразовании.Можно ли это сделать с помощью .net framework?

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

Заранее благодарим.

Ответы [ 3 ]

5 голосов
/ 12 января 2012

ShareJS бесплатен, использует node.js для достижения того, что вы ищете, и реализует алгоритм OT2

. Для .Net нет оперативного преобразования внеполе, однако вы можете взглянуть на BeWeeBee SDK, (хотя это коммерческое программное обеспечение)

4 голосов
/ 11 января 2012

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

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

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

Кроме того, я немного прочитал об операционном преобразовании.Может ли это быть достигнуто с помощью .net Framework?

Мне пришлось поискать операционное преобразование , и это частично отвечает на вопрос об опыте пользователя - это неблокирование.Прочитав вики-документ, я задам вопрос: почему это невозможно? Вы можете мгновенно общаться между всеми пользователями / приложениями, чтобы уведомлять их об изменениях (как указано: с помощью веб-сайта в реальном времени).технологии) так что вам просто нужно реализовать и управлять всеми умными алгоритмическими вещами :) (я не знаю, есть ли компонент, который будет управлять этим для вас)

Для веб-технологий реального времени .NET, вы можетехотите посмотреть SignalR , XSockets , SuperWebSocket или WebSync .

Если вы хотите начать работунемного быстрее, вы можете взглянуть на размещенную веб-технологию реального времени

0 голосов
/ 04 января 2018

Это старый вопрос, но есть некоторая дополнительная информация, которая может оказаться полезной. Как упоминалось в предыдущих ответах, существует несколько вариантов синхронизации данных на основе текста. Многие из них основаны на Оперативном Преобразовании или CRDT . Эти подходы реализованы в SDK на многих языках. (Полное раскрытие, я один из авторов Конвергенции ).

Однако вам также необходимо принять во внимание некоторые другие функции, необходимые для реализации совместного редактирования. Например:

  • Присутствие : Кто там с тобой редактирует?
  • Информация о совместной работе : Такие вещи, как общие курсоры и выборки?
  • Локальный против группы Отмена : Что происходит, когда пользователь нажимает control-z? Они отменяют последнее действие, которое они сделали, или последнее действие, которое сделали другие удаленные пользователи?
  • История : Зная, кто сделал что сложнее, когда несколько человек редактируют одновременно. Когда один пользователь нажимает кнопку сохранения (если есть сохранение), он может сохранять действия, выполняемые другим пользователем.

Это всего лишь несколько примеров того, что следует учитывать при совместном редактировании, помимо синхронизации данных. Когда возникают эти вопросы, большинство ответов сосредоточены исключительно на структуре синхронизации данных. В Convergence Labs мы помогаем людям разрабатывать приложения для совместного редактирования и внедрили десятки таких приложений. Мы много раз видели, что если все, что вы вкладываете, это синхронизация данных, пользовательский опыт оказывается довольно плохим, и пользователям не понравится приложение.

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

...