Подтвердить что ты не робот

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

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

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

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

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

Если я выберу Play!, я откажусь от некоторых из этого богатого пользовательского интерфейса? Что касается ситуаций, когда я хочу предоставить API-интерфейс услуги для интеграции/mashup/мобильных целей? Как играть? помогите мне здесь? Очевидно, BlueEyes хорошо играет здесь. Мне кажется, что мне нужен сервисный уровень.

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

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

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

4b9b3361

Ответ 1

Бета-версия Play 2.0 содержит пример приложения, которое именно вы ищете (ZenContacts). Его серверная часть - это всего лишь куча спокойных интерфейсов, а клиентская сторона использует coffeescript и т.д. Для создания богатого пользовательского интерфейса.

Ответ 2

Если все, что вы хотите, это REST API на бэкэнд, то Lift, Play! или Блюй будет работать отлично. Но я просто укажу на преимущества использования Lift.

  • Неверно, что Lift пытается навязать себе как переднюю, так и заднюю часть. Мы поддерживаем REST-only использование Lift и поощряем правильный проект.
  • В то время как Lift поставляется с jQuery и чертежом, вы можете использовать любую библиотеку javascript и фреймворк css, в настоящее время в списке рассылки отображается много людей, показывающих, как они используют twitter boostrap с помощью Lift. Смотрите этот модуль подъема, который помогает интегрировать Bootstrap.
  • С лифтом вы можете начать без гражданства, и если по пути вы обнаружите, что ваши потребности меняются, вы можете идти полным ходом. Вы можете даже смешивать и сопоставлять их в одном приложении.
  • Хотите какой-нибудь современный интерфейс? Подъемная комета - одна, если не самая лучшая, там. Очень прост в использовании, проверен и протестирован во многих браузерах/рабочих нагрузках. Я написал несколько сообщений, демонстрирующих поддержку комманды Lift.
  • Если вы решили использовать Lift для обоих, переднего и заднего конца, вы получаете бесплатное приложение, которое по умолчанию защищено, не нужно беспокоиться о xss, xsrf или многих из 10 уязвимостей безопасности OWASP.
  • Нужна коммерческая поддержка, есть растущий список здесь
  • Нужна тренировка? В Лондоне существует базовое обучение, и основатель Lift также предоставляет другие тренинги.
  • Существует несколько книг о лифте. Поднять в действии, Просто поднять и Изучение лифта
  • Существует очень активное сообщество , готовое помочь.
  • Кто использует лифт? Просто назовите несколько: Foursquare, OpenStudy, The Guardian UK, StackMob и многое другое.

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

Ответ 3

Насколько я знаю, оба играют! и Lift можно использовать как в основном "задний конец", и вы можете использовать HTML5 + CSS + JS в качестве своего "переднего конца"; они не обязательно ограничивают вашу способность создавать переднюю часть, которую вы хотите, поэтому отклонение их по этой причине было бы глупо. Обратите внимание на такие вещи, как knockout.js, которые сообщают, что они "работают с любой веб-картой". Однако, может быть, они более "тяжеловесы", чем то, что вам нужно.

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

Но если это то, что вы планируете фактически разместить в Интернете, "маршрутизация, валидация, привязка и т.д." практически необходимо обрабатывать задним концом; Я просто не могу представить, что любая из этих вещей (надежно) обрабатывается кодом, который выполняется в клиентском браузере. Кроме того, если ваши пользователи будут отключать JavaScript, ваш сайт будет полностью непригодным.

Ответ 4

Если я выберу Play!, я откажусь от некоторых из этого богатого пользовательского интерфейса?

Что именно вы подразумеваете под богатым интерфейсом? больше javascript на интерфейсе?

Если вы считаете - HTML5 + CSS3 + jQuery как богатый пользовательский интерфейс - тогда они очень хорошо работают с любыми "бэкэндами" (Lift/Play).

Другая вещь, которую вы можете рассмотреть, - это зрелость. Как вы упомянули, Play 2.0 поддерживает Scala изначально, имеет одобрение Typesafe и быстро принимается. Кроме того, вы можете легко предоставлять услуги RESTful и использовать их во внешнем интерфейсе (одно из ваших требований).

Опираясь на HTML5 + CSS3 + jQuery + Play 2.0:)

просто мои мысли..

Ответ 5

Что такое архитектура?

Играть! настоятельно рекомендует вашему серверу использовать архитектуру MVC, создавая пакеты в стандартном шаблоне:

app/
  controllers/
    Application.scala
  views/
    Application/
      index.scala.html
  models/
public/
  images/
  stylesheets/
  javascripts/

Это упрощает отслеживание архитектуры, а не разбивает ее.

Я не могу говорить ни для Lift, ни для BlueEyes, но никто из них не поддерживает архитектуру так сильно.

Ответ 6

Определенно посмотрите http://twitter.github.com/finagle, прежде чем составить yiir mind. Finagle может позаботиться о большинстве ваших бэкэндов. Он проектировал очень гибкую архитектуру, которая отвлекает внимание от использования фильтров.

Ответ 7

Я посмотрел на apache click, wicket, немного Lift (немного походил на калитку), а затем играл 1.2.4. До сих пор так хорошо играть. Действительно красивый подход к веб-разработке. Следите за хорошей работой, играйте! команда.