Архитектура на стороне сервера для мобильных веб-приложений

В большинстве настольных веб-приложений, которые я когда-либо работал, вам нужна веб-среда на стороне сервера. Веб-среда на стороне сервера (Struts, Spring MVC и т.д.) Имеет некоторый контроллер для обработки запросов, а затем механизм шаблонов (Velocity, JSP и т.д.) Для генерации динамического содержимого.

Теперь я начинаю работать над мобильными веб-приложениями, и все обсуждения, которые я вижу, вращаются вокруг выбора инфраструктуры пользовательского интерфейса (jQuery Mobile, jQTouch, Sencha Touch и т.д.), но я не вижу никакого обсуждения того, что происходит на сервер для фактического обработки HTTP-запросов или для генерации HTML, CSS и JavaScript.

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

Если бы я хотел использовать веб-инфраструктуру на стороне сервера, это было бы плохой идеей? С какими проблемами я столкнулся? У кого-нибудь есть рекомендация по веб-инфраструктуре, которая будет продуктивной платформой, а не "мешает" мобильным интерфейсам пользовательского интерфейса, например, jQuery mobile?

ПРИМЕЧАНИЕ. Разработчики, с которыми я работаю, в основном, связаны с корпоративными Java-фонов, однако я бы не ограничивал его только веб-рамками Java. Существуют другие структуры, которые имеют корни в Java, которые можно было бы рассмотреть (Grails, Lift и т.д.).

Ответ 1

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

Таким образом, технологии серверной стороны будут избегать, и это будет любой из них, создающий переднюю часть для вас, но не использующий jQuery. Сегодня более 45% всех веб-сайтов используют jQuery, и если вы выберете что-то еще, вы сразу же столкнетесь с преобладающими мобильными фреймворками. (GWT, IceFaces, я смотрю на вас).

Вероятно, самый безопасный и самый гибкий способ - либо использовать реализацию на основе Spring, либо Prime Faces. Spring На мобильном телефоне стоит посмотреть. Prime Faces фактически реализует jQuery Mobile и может использовать тему Theme Roller.

В целом, это не имеет значения, какой бэкэнд-каркас (если есть), который вы используете, пока вы нажимаете хорошую разметку. Браузеру все равно, и единственное, о чем заботится пользователь, - это хороший опыт. Итак, выберите все, что сделает ваши разработчики счастливыми для бэкэнда, пока это не мешает.

Что касается интерфейсных фреймворков, да, их популярность растет, потому что они, как правило, стандартизируют некоторые из лучших практик в мобильных устройствах. Существует много разных сравнений jQuery Mobile против Sencha vs jQTouch. Я оставлю вас на рисунке, который лучше всего подходит для вашего проекта, но, безусловно, будет использовать либо jQuery Mobile, либо Sencha, потому что сообщество поддержки вокруг них массивно, и вы вряд ли будете выглядеть как много потрепанных, домашних мобильных сайтов, которые пытались сделать это с нуля, когда у них не было опыта, чтобы снять его. Это просто грустно. Моя личная рекомендация - это jQuery Mobile, потому что она охватывает такой широкий спектр устройств и (если вы придерживаетесь стандартной пошаговой модели) будет изящно деградировать даже для самых страшных функциональных телефонов и по-прежнему быть функциональной, но выглядит потрясающе на смартфонах.

На ваш вопрос просто использовать дизайн RESTful с загрузкой JavaScript всем и управлять состоянием. Многие из них делают это, и это, безусловно, быстрый опыт, но вы мгновенно ограничиваете, кто может использовать его для тех, кто поддерживает мобильные браузеры хорошего JavaScript. Вы будете смотреть только на поддержку iOS, Android 2.2+, BlackBerry 6+ и Windows Phone 7+. Все остальные, вероятно, будут испытывать значительные трудности при просмотре вашего сайта. Внимательно рассмотрите свою аудиторию, прежде чем перейти к такой реализации. Если ваш сайт не будет работать без JavaScript, а ваши основные клиенты находятся в корпоративном мире... что произойдет, когда последняя конференция Black Hat выявит слабость в телефонах компании и из-за консервативного снижения рисков (паранойя), они подталкивают политику безопасности к все телефоны, которые отключают JavaScript. Такое происходит всегда. Итак, рассмотрите свою аудиторию.

Ответ 2

Взгляните на ItsNat, ItsNat приглашает вас думать в JavaScript клиента, но кодировать в Java и выполнять на сервере, генерируя тот же JS код для клиента.

Разница с GWT заключается в том, что код Java W3C DOM выполняется на сервере, и JS автоматически генерируется, а GWT выполняется в клиенте, данные сервера должны быть переданы клиенту.