Какой framework Вы используете Опыт выкидывания ненужных вещей на примере реального проекта

advertisement
Какой framework Вы
используете
Опыт выкидывания ненужных вещей
на примере реального проекта
О чем здесь будет
рассказываться
• http://java-source.net/open-source/webframeworks - 64 фреймворка и это далеко не
все.
• Что мы действительно хотим и
действительно нужно от веб фреймоврка?
• При выборе фреймворка – что мы
«покупаем» за свои «деньги»
• Веб-ом дело не ограничивается
С чего началось
•
•
•
•
Struts
Tapestry
JSF (Icefaces, Richfaces)
Wicket
• Spring.web
• А можно и вообще без него
Чего мы хотим от web
framework-а
•
•
•
•
•
Декларативность
Code reuse
Как можно меньше писать Ява кода
Все что можно, было автоматизировано
«Что было сложно и круто» - на рынке труда фраза
«3 года опыта разработки веб приложений на JSF»
как правило ценится выше чем «5 лет разработки
высокоэффективных приложений вообще без
фреймворков».
• Идеально как в RoR – класс в нем связь с БД, там не
валидация, там часть параметров отображения и
90% приложения рисуется автоматом
Тяжелый framework
• Много обсчета на сервере
• Большая сессия пользователя
• Ограничения на структуру URL, цикл запроса/ответа и
т.п.
• Ускорение времени на разработку «типовых» страниц –
95% веб контента делаются быстро, а остальные 5%
медленно и мучительно
• Очень не просто или вообще невозможно использовать
для public internet sites
• Необходимость учить еще один/несколько
языков/синтаксисов.
• Невозможность 100% контролировать запросы к БД (мы
говорим о persistence)
Экономика интернет
сайта
Что делать если
Типичный web запрос
Что действительно
надо от фреймворка
• Чтобы он был простой
• Быстрый
• Модульный можно было легко добавлять убирать
компоненты
• Легко масштабировался по количеству
пользователей
• Чтобы все было прямолинейно и можно было
потрогать руками (надо отредактировать CSS –
берешь и редактируешь)
• Приложение легко работало в кластере
• Легко можно было настроить failover (рассказать как
это делается в tomcat/JBoss и как делается по сути)
Легкий framework
• Минимальная нагрузка на CPU сервера
• Stateless или легкая сессия
• Возможность 100% контролировать запросы
к БД
• Больше времени на разработку одной
страницы (вроде бы).
Несколько примеров
• JSF – «тяжелый» цикл запроса, проблемы с
сессионными данными – есть много
процессора и памяти – тяжело
кластеризуется.
• ZK – динамический рендеринг страницы на
сервере, проблемы с сессионными
данными, долго учиться.
• Wicket – переусложнен, много statesaving
Типичные проблемы
тяжелых фреймворков
• Переусложненный цикл обработки запроса –
значительно увеличивает нагрузку на CPU и время
отдачи страницы
• Тяжелое и плохо управляемое состояние
сессии/страницы на стороне сервера – сложно или
невозможно добавить failover & clustering
• Компонентный подход не позволяющий в точности
использовать html предоставленный web мастером –
увеличение времени на «натягивание» дизайна.
• Неоптимальное общение с БД:
– N запросов вместо одного/двух
– Невозможность контролировать точный вид запросов и как
следствие их не оптимальность.
Сервлет API v3 уже достаточно
хорош, чего в нем не хватает
• Декларативный разбор параметров запроса
• Принудительная изоляция макета страницы
и кода
• ???
• EJB3?
Вопросы
• ???
Download