Я попадаю в небольшую загадку.Я создаю новое, современное веб-приложение, и мне нужно не только выбирать технологию, но и архитектуру.Я думаю, что было бы справедливо сказать, что в наши дни это трудный выбор, потому что у нас есть больше вариантов, чем мы сделали даже 5 лет назад.
Прежде всего, я решил, что Scala будет сервером.побочный язык.У меня есть свои причины, и это не сообщение Scala против XYZ - этот выбор был сделан.Я также осознал тот факт, что мы в сети, в облаке, поэтому я даже не собираюсь пытаться уйти от Javascript.Возможно, я сделаю это с CoffeeScript, но я буду писать код, размещенный в браузере.
Теперь, предполагая Scala, большинство людей, вероятно, перейдут на Play! или Lift ,Наверное, играть!учитывая, что это одобрение от Typesafe , но я думаю, что у меня есть еще один более важный вопрос, на который нужно ответить в первую очередь.Что такое архитектура ?Если мне нужен очень богатый клиент, действительно ли мне нужно нечто большее, чем простой уровень обслуживания без сохранения состояния, основанный на том факте, что у нас все равно будет тонна JavaScript?Я не уверен, что это будет одностраничное веб-приложение, но является ли что-то вроде BlueEyes потенциально правильным выбором?Поднимай и играй!гораздо тяжелее, потому что они берут на себя гораздо больше ответственности.Они генерируют HTML, и для этих платформ браузер довольно тупой.Такие вещи, как маршрутизация, валидация, поддержка Ajax и Comet, являются проблемами на стороне сервера.Поскольку сегодня браузер обладает более широкими возможностями, богатые интерактивные функции обычно реализуются путем генерации и внедрения Javascript с сервера.
Мой вопрос сводится к этому.Пойду ли я с традиционным Lift / Play!фреймворк, в котором сервер берет на себя ответственность как клиента, так и сервера, или мне нужен расширенный уровень обслуживания + уровень обслуживания REST, где клиент играет более заметную роль в приложении?Архитектура, в которой клиент имеет дело с маршрутизацией, проверкой, связыванием и т. Д. Я вижу такие структуры, как KnockOut.js , Sammy.js , Sproutcore , Backbone.js , ... Я не собираюсь перечислять их все, но достаточно сказать, что все они используют некоторые из этих базовых функций с точки зрения клиента.
Если явыбрать Play !, я отказываюсь от этого богатого интерфейса?Как насчет ситуаций, когда я хочу предоставить сервисные API для интеграции / гибридного / мобильного использования?Как бы играть!помогите мне здесь?Ясно, что BlueEyes хорошо играет здесь.Я думаю, что мне нужен сервисный слой независимо от того.
Если я выберу BlueEyes, как будет выглядеть мой клиентский код?Сколько из этих основанных на Javascript фреймворков мне нужно, чтобы дать мне то, что мне нужно?Я по-прежнему хочу, чтобы большая часть моей бизнес-логики была на уровне сервисов, но маршрутизация, привязка ... все, что связано с пользовательским интерфейсом, будет заботой клиента.
Я не уверен, что есть правильный или неправильный ответ, но я думаю, что это сообщество, вероятно, может указать мне правильное направление.
Я также разместил это в своем блоге по адресу http://www.andyczerwonka.com/picking-a-web-technology-isnt-as-easy-as-it-u-45228