Для моего следующего проекта, веб-приложения, должен использовать scala+wicket или scala+lift?

Учитывая различные преимущества языка Scala я решил записать свое следующее веб-приложение в Scala. Однако я должен использовать Калитку или Лифт? Я знаком с Калиткой, и как он вполне немного, но знаю очень мало о Лифте. Действительно ли изучение Лифта стоит усилия в этом контексте?

В словах порядка, как Лифт выдерживает сравнение с Калиткой? Учитывая, что веб-приложение будет в Scala, использование Лифта могло сделать мою жизнь как разработчика легче?

20
задан Ceki 24 November 2010 в 13:40
поделиться

3 ответа

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

У Lift есть сильные стороны, которых нет у Wicket:

  • Гораздо лучшая поддержка Ajax. Поддержка Ajax в Lift гораздо менее многословна, чем в Wicket. Если вы собираетесь делать много Ajax, изучение Lift может оказаться полезным.
  • Поддержка Comet. Если в вашем приложении есть компонент server-push, Lift предлагает лучшую поддержку comet, чем любой другой веб-фреймворк.
  • Lift больше похож на Scala. Если вы пришли из Java, то использование в Lift сопоставления шаблонов и передачи функций - это кривая обучения.

Что касается комментариев в этой теме, я хотел бы не согласиться с некоторыми из сделанных заявлений:

  • Lift не требует, чтобы вы смешивали презентацию и бизнес-логику. У вас есть масса возможностей структурировать свое приложение в соответствии с вашим стилем кодирования - от полного развода представления и логики до дикого и свободного смешивания этих двух элементов. Выбор за вами.
  • Lift не делает того же, что и Rails. Lift - это не еще один MVC-фреймворк в стиле "me-too", и я не уделял много времени аспектам CRUD в Lift. Lift - это безопасность, производительность разработчика, удобство сопровождения и создание высокоинтерактивных (Ajax и Comet) веб-приложений. Библиотеки Lift содержат множество модулей, включая ряд ORM-модулей, поддержку JSON и т.д. Отчасти это объясняется нехваткой библиотек на Scala 2-3 года назад, а также тем, что сообщество Lift потрясающее и поддерживающее, а процесс выпуска Lift работает очень хорошо (ежемесячные релизы по вехам, которые достаточно стабильны для работы Foursquare.)
  • Lift не сосредоточен на цикле HTTP-запросов/ответов. Lift сосредоточен на абстрагировании от них. Разработчик тратит меньше времени, беспокоясь об именовании параметров, и больше времени уделяет бизнес-логике.

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

29
ответ дан 29 November 2019 в 23:06
поделиться

Я сделал несколько веб-приложений на Lift. Исходя из традиционного фона Java с большим количеством Maven + JSF / Facelets + Spring + Hibernate, я должен признать, что, хотя я люблю Scala, меня разочаровывают некоторые слабые стороны Lift. В частности, я думаю, что в сниппетах часто смешиваются бизнес-правила с деталями интерфейса. Кроме того, очень сложно реализовать комплексное модульное тестирование.

Я не знаком с Wicket, но на данный момент я пишу приложение с использованием Play Framework. Поддержка Scala в основном работает неплохо, есть модуль Akka. Akka прекрасно подходит для любых нетривиальных приложений, требующих масштабирования.

Play выглядит очень многообещающе, хотя он все еще находится в активной разработке, документация также кажется довольно хорошей. Инфраструктура CRUD удобна для быстрого перехода в функциональное состояние или для создания простого интерфейса администратора для данных, которые не будут меняться очень часто.

10
ответ дан 29 November 2019 в 23:06
поделиться

Уикет и Лифт - совершенно разные звери. У меня есть некоторые знания об обеих средах (но далеко от экспертного уровня, который вы обычно видите здесь):

Wicket: Каждая страница на веб-сайте имеет страницу с шаблоном HTML и вспомогательный класс Java / Scala. Магия Wicket состоит в том, чтобы подключить страницу шаблона HTML к соответствующему классу и сопоставить каждый идентификатор Wicket в шаблоне с правильным методом в классе, чтобы данные были видны на сгенерированной странице HTML, отправленной клиенту. Вот и все. Wicket - это чистая сеть и не более того. Очень легко создавать собственные графические компоненты в Wicket и наследовать от них.

Lift: Lift был создан Дэвидом Поллаком как реакция на проблемы, возникшие у него с Rails. Что ему нужно, так это производительность и безопасность. Подъемник быстрее и безопаснее, чем Rails. На самом деле он очень безопасен и автоматически обрабатывает атаки SQL-инъекций, CRSF, XXS и повторного воспроизведения.

Lift делает то же самое, что и Rails (сопоставляется с БД), но сильно отличается от Rails. Ментальное наследие Rails очевидно, поскольку некоторые API в Lift используют синтаксис Ruby (с подчеркиванием и вопросительными знаками в инспекторах), что может удивить разработчика Scala. Lift - это не классический MVC-фреймворк, такой как Wicket, это Model-ModelView-View. На самом деле Lift больше ориентирован на цикл запрос-ответ. Он предназначен для имитации программирования GUI, управляемого событиями (например, Java Swing или .NET GUI). Это означает, что HTML-элементы и действия записываются в одном месте:

var inputName = ""
SHtml.text(inputName,s => inputName = s)

Этот код создаст входной HTML-тег, подобный этому:

<input type="text" value=""/>

, и подключит функцию к переменной, чтобы входные данные были сохранены. Структура такая же, даже если вместо HTTP GET / POST используется AJAX.

Лифт выразительный и мощный, но не очень легкий.

Пожалуйста, поправьте меня, если это не так!

15
ответ дан 29 November 2019 в 23:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: