Недавно я исследовал веб-фреймворки на стороне сервера java, которые служат платформой рендеринга для нового проекта веб-сайта B2C. Основываясь на своих исследованиях, я бы в общих чертах разделил доступные решения на два лагеря:
- такие, как JSF и Tapestry, которые по сути сводятся к программированию HTML и сервлетов, и
- такие, как Wicket, Vaadin и Echo, которые обходятся без шаблонов HTML и предлагают модель программирования, похожую на толстые клиенты SWT, основанную на иерархии окон, компонентов представления и событий, выводящих клиентский HTML на основе эта иерархия.
Вторая группа, которая является одной из ветвей инфраструктур RIA, предлагает множество желательных функций с точки зрения управления на стороне сервера, производительности разработчика (например, простота, отсутствие необходимости решать проблемы повторного входа сервлета и т. Д.), Виджеты представлений, готовая кросс-браузерная совместимость и интересные визуальные эффекты.
Что не так желательно для B2C, так это то, что платформы RIA предоставляют одностраничные интерфейсы. В конце концов, они, естественно, не разрешают историю браузера и закладки (это можно сделать, но это грязно и ограничено, например, только фрагментами URL), и, возможно, наиболее важно, они безразличны к SEO, который является немного демонстрации для ориентированного на потребителя веб-сайта.
Это будет связано с делегированием сервлета и элемента управления HTML в платформу. Вопрос в том, есть ли способ иметь оба, или это просто слишком утопично? Инфраструктура RIA-типа на стороне сервера со всеми преимуществами, которые дает IMHO, но с гибкими и удобными URL-адресами для закладок наряду с SEO-осведомленностью?
Такое решение, конечно, может быть не единой структурой, а многоуровневым. Кроме того, фреймворк itsnat , кажется, предлагает большую часть вышеперечисленного, но из-за того, как он реализован, у меня возникнут большие опасения по поводу нагрузки на сервер (ЦП и память) - хотя я думаю, что отчасти неизбежно, что среды RIA будут более загруженными для сервера, чем подходы сервлетного / шаблонного программирования.
Кто-нибудь знает об альтернативных путях продвижения вперед?