Поднимите, играйте! или BlueEyes (с кучей Javascript Frameworks)

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

Прежде всего, я решил, что Scala будет серверным языком. У меня есть причины, и это не пост Scala против XYZ - выбор сделан. Я также пришел к выводу, что мы находимся в сети, в облаке, поэтому я даже не собираюсь пытаться уйти от Javascript. Возможно, я сделаю это с CoffeeScript, но я буду писать код, размещенный в браузере.

Теперь, предполагая Scala, большинство людей, вероятно, перейдут к Play! или Подъемник . Наверное, поиграем! учитывая, что это одобрение Typesafe , но я думаю, что у меня есть еще один более важный вопрос, на который нужно сначала ответить.Что за архитектура ? Если мне нужен очень богатый клиент, действительно ли мне нужно нечто большее, чем простой уровень обслуживания без сохранения состояния, исходя из того факта, что у нас в любом случае будет тонна Javascript? Я не уверен, что это будет одностраничное веб-приложение, но возможно ли что-то вроде BlueEyes правильным выбором? Поднимите и играйте! являются гораздо более тяжеловесными, поскольку берут на себя гораздо больше ответственности. Они генерируют HTML, и для этих фреймворков браузер довольно тупой. Такие вещи, как маршрутизация, проверка, поддержка Ajax и Comet - все это заботы на стороне сервера. Поскольку сегодня браузер обладает более широкими возможностями, богатые интерактивные функции обычно реализуются путем создания и внедрения Javascript с сервера.

Мой вопрос сводится к следующему. Я хожу с традиционным Lift / Play! фреймворк, в котором сервер берет на себя ответственность как клиента, так и сервера, или я должен использовать расширенный клиент + уровень обслуживания в стиле REST, где клиент играет более заметную роль в приложении? Архитектура, в которой клиент занимается маршрутизацией, проверкой, привязкой и т. Д. Я вижу такие фреймворки, как KnockOut.js , Sammy.js , Sproutcore , Backbone.js , ... Я не собираюсь перечислять их все, но достаточно сказать, что все они берут на себя некоторые из этих функций фреймворка с точки зрения клиента.

Если я выберу «Играть!», Откажусь ли я от части этого богатого пользовательского интерфейса? Как насчет ситуаций, когда я хочу предоставить сервисные API для интеграции / гибридных приложений / мобильных целей? Как бы играть! помогите мне здесь? Ясно, что BlueEyes здесь хорошо играет.Я думаю, мне все равно нужен уровень обслуживания.

Если я выберу BlueEyes, как будет выглядеть мой клиентский код? Сколько из этих фреймворков на основе Javascript мне нужно, чтобы дать мне то, что мне нужно? Я по-прежнему хочу, чтобы большая часть моей бизнес-логики находилась на уровне обслуживания, но маршрутизация, привязка ... все эти элементы пользовательского интерфейса были бы заботой клиента.

Я не уверен, что есть правильный или неправильный ответ, но я думаю, что это сообщество, вероятно, может указать мне в правильном направлении.

Я также разместил это в своем блоге по адресу http://www.andyczerwonka.com/picking-a-web-technology-isnt-as-easy-as-it-u-45228

21
задан andyczerwonka 10 February 2012 в 05:17
поделиться