2010-07-12 2 views
20

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

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

+0

Какое приложение вы собираетесь сделать? Какие функции вам нужны? Что бы вы хотели сделать, чтобы Wicket не поддерживал или не поддерживал легко? –

+0

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

ответ

29

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

Lift имеет сильные стороны, которые Калитка не:

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

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

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

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

10

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

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

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

+2

+1 в игре. Выглядит потрясающе потрясающе! –

+0

+1 Играть. Простой, легкий, безгосударственный = масштабируемый, мощный .... – sirmak

+0

Вы предлагаете играть в java + play или scala + здесь? – rogerdpack

15

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

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

Лифт: лифт был создан Дэвидом Поллаком как реакция на проблемы, с которыми он столкнулся с Rails. Ему нужна была производительность и безопасность. Подъем быстрее и надежнее, чем Rails. Это на самом деле очень безопасно и автоматически обрабатывает SQL-инъекции, CRSF, XXS, повторные атаки.

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

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

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

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

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

Лифт является выразительным и мощным, но не очень простым.

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

+0

Я бы не описал Wicket как «классический MVC» вообще. На самом деле проблемы MVC - это именно то, что делает удивительную работу по преодолению. В Wicket на самом деле нет «контроллеров». Это также очень OO, что делает его очень сложным способом, которым MVC ужасен. Я бы не сказал, что типичный веб-MVC очень верен объектно-ориентированной архитектуре. – jpswain

+0

@ orange80 Возможно, вы правы. Если Swing является чистым MVC, тогда Wicket не является «таким большим» MVC (как Swing). Что, вероятно, смутило меня в том, что и Swing, и Wicket оба очень OO, как вы говорите. –

 Смежные вопросы

  • Нет связанных вопросов^_^