Интернет развивается с огромной скоростью и одной из основных тенденций последнего времени является перенос десктопных приложений в облака и работа с ними через браузер. Ключевыми особенностями таких «живых» сайтов являются интерактивнось и скорость отклика.
3. Use case
• Сайт похож на Desktop приложение
• Реагирует на события мгновенно (до 200мс)
• Стандартное поведение браузера не нарушено
4. Целевая аудитория
• Интернет магазины
• Соц сети
• Сайты знакомств
• Корпоративные сайты
• Браузерные игры
5. Плюсы интерактивности
• Сериализированные данные имеют
меньший объем
• Постоянное соединение, не делаем лишние
запросы
• Некоторые изменения HTML можно
распараллелить
• Заранее загрузить следующие шаги
• Снизить время реакции до 200мс
7. Use case для клиента
• Правильные ссылки в адресной строке
• Внутренним ссылки работают
• Отправка формы
• Кнопка "Назад" работает
• Курсор загрузки страницы
• Синхронизация
• Хранение состояния
8. Архитектура сервера
• Отдельные сервисы для бизнес логики
• Протокол общения между компонентами
• Кроссплатформенный формат HTML
шаблонов
• JSON интерфейс может быть адаптирован
под API
• Брокер сообщений для уведомления
пользователей
9. Клиет - Сборка
• Ant, Maven, Make
• >> или copy
• Минифицирование
– Google Closure
– YUI Compressor
– UglifyJS
– Webassets
20. Транспорт – Абстракции
• Метод для отправки сообщений
• Обработчик получения сообщений
• Обработчик установления и разрыва
соединения
• Натройки для клиента при инициации
соединения
21. Транспорт - Библиотеки
• socket.io
• SockJS
• Коммерческие библиотеки в облаках
Сервер
• Netty, Jetty for Java
• Tornado for Python
22. Socket.IO
Клиент Сервер - Tornado
Отправить сообщение
24. Рендеринг - MUSTACHE
A typical Mustache template:
Hello {{name}}
You have just won ${{value}}! {{#in_ca}}
Well, ${{taxed_value}}, after taxes. {{/in_ca}}
Given the following hash:
{ "name": "Chris",
"value": 10000,
"taxed_value": 10000 - (10000 * 0.4),
"in_ca": true
}
Will produce the following:
Hello Chris You have just won $10000!
Well, $6000.0, after taxes.
25. Сервер – REST API
• Java – Restlet, Apache Wink, Jersey
• Python - web.py, Flask and Bottle