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

Учитывая различные преимущества языка Scala, я решил написать свое следующее веб-приложение на Scala. Тем не менее, я должен использовать Wicket или Lift? Я знаком с Wicket, и мне это немного нравится, но я очень мало знаю о Lift. Стоит ли в этом контексте изучать лифт?

Другими словами, как Lift сравнивается с Wicket? Учитывая, что веб-приложение будет в Scala, может ли использование Lift сделать мою жизнь как разработчика проще?

Ответы [ 3 ]

29 голосов
/ 14 июля 2010

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

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

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

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

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

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

15 голосов
/ 13 июля 2010

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

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

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

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

10 голосов
/ 13 июля 2010

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

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

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

...