Вопрос

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

  • Является ли волна не использует GWT-RPC, чтобы получать регулярные обновления с сервера? Firefox отслеживает некоторую связь JSON, переходя на провод, но ничего подобного RPC.

  • Как они продолжаются, когда, например, новый вейвлет отправляется. Есть ли объект View для каждой волны Do, или они используют какой-то другой шаблон?

  • Как GUI обновляется после ответа, скажем, появляется новая волна. Был бы вся площадь с вейвлетыми перераспределенными или использовать некоторые интеллектуальные методы, чтобы гарантировать, что касается только определенного элемента?

Спасибо

Это было полезно?

Решение

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

Например, если вы посмотрите на WAVEVIEW.java, вы можете видеть, что они используют автобус событий на стороне клиента, например, Ray Ryan, упомянутые в Этот разговор В Google IO 2009 года. Кажется, я помню, как видно другое видео, где они говорили об этих аспектах Google Wave:

  • Они используют систему событий для увольнения событий, когда что-то происходит на стороне клиента. Система событий управляет связь с сервером, передавая информацию о событиях до сервера, получая события обратно с сервера и публикуя эти события, которые возвращаются. Автобус событий использует своего рода буфер, так что если куча событий уволяется в быстрой последовательности, они могут отправлять их все в одну партию. Например, когда появляется новая волна, событие с информацией волны будет выпущена, и любые части пользовательского интерфейса, которые активно слушают это событие, будут уведомлены, что они могут определить, нужно ли им менять соответственно.
  • Они использовали точки шва (или некоторые такие; я не могу вспомнить имя), чтобы сделать это, чтобы GWT мог сломать код в модулях, и загружать только части, которые фактически необходимо использовать. Поскольку Wave UI JavaScript файл изначально был более чем 1 МБ (министерзированным и сжатым), это было довольно важно.
  • Поскольку только определенные волны и вейвлеты будут видны одновременно, они фактически использовали несколько сложных методов для повторного использования тех же элементов DOM. Поэтому, когда вы прокрутите вниз по списку волн, он фактически принимает элемент DOM, представляющий волну в верхней части вашего почтового ящика, изменяя информацию внутри и перемещать ее в нижнюю часть зоны прокрутки, оставляя пустое пространство в детали зоны прокрутки, которую вы больше не видите.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top