Эффективный способ хранения / поиска для воспроизводимых приложений в стиле комет (Google Wave, Etherpad) - PullRequest
3 голосов
/ 05 декабря 2009

Я рассматриваю веб-приложение, которое будет иметь тот же вид многопользовательского, автоматического сохранения, бесконечные возможности отмены / воспроизведения, которые вы видите в Google Wave и Etherpad (хотя и в значительно меньшем масштабе и пользовательской базе).

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

Я знаю, что это не обязательно лучший вопрос переполнения стека, поскольку, вероятно, нет «правильного» ответа, но мой Google-фу подвел меня, и я просто хотел бы прочитать список!

Обычно я бы работал под python / django, но это не жесткое требование, а просто предпочтение :)

1 Ответ

1 голос
/ 19 декабря 2009

Звучит как настоящий технологический клубный бутерброд:

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

  • Код сервера мгновенных сообщений OLTP и Comet на серверах

  • Код разрешения конфликтов управления версиями на сервере

  • База данных контроля версий в оперативной памяти в клиентских устройствах

  • Код разрешения конфликтов контроля версий в клиенте (работает в пакетном режиме на входящие байты для увеличения скорости отклика - клиент платформа однопоточная!)

  • Код клиента мгновенного обмена сообщениями Comet во внутренней части клиента (работает в пакетном режиме на входящие байты для увеличения скорости отклика - клиент платформа однопоточная!)

  • Измерение текста в графическом интерфейсе клиента

  • (необязательно) Пользовательский растровый шрифт для браузеров с плохо понятными метриками шрифта

  • 2D код анимации в клиентском графическом интерфейсе (работает партиями в списке для рисования, чтобы повысить отзывчивость - клиент платформа однопоточная!)

  • Код сервера управления сеансами веб-пользователей на страницах клиента

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

Я ожидаю, что основной проблемой реализации будет достижение кратчайшей возможной последовательности событий между GUI, принимающим и подтверждающим изменения положения каретки, или получающими изменения от (C) (слоя) и изменений ввода текста.

...