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

Разница между Apache Tapestry и Apache Wicket

Apache Wicket (http://wicket.apache.org/) и Apache Tapestry (http://wicket.apache.org/) являются как компонентная веб-инфраструктура s - в отличие от основанных на действиях фреймворков, таких как Stripes - от Apache Foundation. Оба позволяют вам создавать приложение из компонентов на Java. Они оба очень похожи на меня.

Каковы различия между этими двумя структурами? У кого-то есть опыт в обоих? В частности:

  • Как их производительность, сколько можно настроить обработку данных, можно ли использовать их без апатии?
  • В чем разница в их модели компонентов?
  • Что бы вы выбрали для каких приложений?
  • Как они интегрируются с Guice, Spring, JSR 299?

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

4b9b3361

Ответ 1

Некоторые существенные различия, которые я вижу в них:

  • Гобелен использует полустатистическую страницу структуры, где вы можете работать с условностей и циклов для достижения динамическое поведение. Калитка полностью динамичный; вы можете загрузить компонентов динамически, заменить их во время выполнения и т.д. Последствия это то, что Гобелен легче оптимизировать, и что Wicket больше гибкий в использовании.
  • Обе структуры примерно одинаково эффективны в исполнение, но Wicket полагается на хранилища на стороне сервера (по умолчанию текущая страница в сеансе и прошлая страниц в кеше второго уровня, по умолчанию находится файл temp в файле система). Если это вас беспокоит, подумайте о том, сколько одновременных сеансов вы ожидаете в часы пик и вычислить, скажем, ~ 100 кб за сеанс (вероятно, с высокой стороны). Это означает, что вы можете поддержка 20k параллельных сеансов для 2 Гб. Скажите 15k, потому что вам это нужно память для других вещей. из Конечно, недостаток хранения что он будет работать только хорошо с учетом близости сеанса, так что ограничение при использовании Wicket. рамки предоставляет вам средства для реализации страниц без гражданства, но если вы развиваете полностью без гражданства приложения, которые вы можете рассмотреть различные рамки.
  • Цель калитки - поддерживать статическую типизацию в полной мере, в то время как Tapestry - это больше о сохранении строк кода. Так что с Tapestry ваша база кода, вероятно, меньше, что хорошо для обслуживания, и с Wicket вы много статически напечатаны, что упрощает навигацию с помощью IDE и проверяется с помощью компилятора, что также полезно для обслуживания. Что-то сказать для обоих имхо.

Я уже несколько раз читал, что люди считают, что Wicket много работает через наследование. Я хотел бы подчеркнуть, что у вас есть выбор. Существует иерархия компонентов, но Wicket также поддерживает композицию, хотя конструкции, подобные IBehavior (поверх которой, например, встроена поддержка Wicket Ajax). Кроме того, у вас есть такие вещи, как конвертеры и валидаторы, которые вы добавляете к компонентам, глобально или даже в качестве перекрестного беспокойства с использованием некоторых фазовых прослушивателей Wicket.

Ответ 2

ПЕРЕСМОТРЕННЫЙ после изучения Гобелен 5.

Цель калитки - попытка сделать веб-разработку похожей на рабочий стол GUI. Им удалось сделать это очень хорошо за счет использования памяти (HTTPSession).

Tapestry 5 goal состоит в том, чтобы сделать очень оптимизированную (для ЦП и памяти) ориентированную на компоненты веб-инфраструктуру.

По-настоящему большая ошибка для меня - ответы "Wicket поддерживает компонент без гражданства!". к аргументам "Калитка голодна". Хотя Wicket действительно поддерживает компоненты без гражданства, они не являются "фокусом развития Wicket". Например, ошибка в StatelessForm не была исправлена ​​в течение очень долгого времени - см. StatelessForm - проблема с параметрами после завершения проверки.

  • IMHO, использующий Wicket, немного велик, пока вы не собираетесь оптимизировать/точно настроить параметры веб-приложения.
  • IMHO Wicket сложнее изучить, если у вас есть запрограммированные веб-приложения и вы хотите думать с точки зрения обработки запросов.
  • Tapestry 5 автоматически перезагружает классы компонентов, как только вы их изменяете. Обе платформы перезагружают компонентную разметку.
  • Калитка вынуждает разметку/разделение кода, Гобелен 5 просто дает вам эту способность. Вы также можете использовать менее подробный синтаксис в Tapestry 5. Как всегда, эта свобода требует больше предостережений.
  • Ядро Wicket легче отлаживать: пользовательские компоненты основаны на наследовании, в то время как пользовательские компоненты Tapestry 5 основаны на аннотациях. С другой стороны, чтобы облегчить переходы в будущие версии для Tapestry, а затем для Wicket.

К сожалению Tapestry 5 tutorial не подчеркивает, что пример кода гобеленов типа 't: loop source = "1..10"...' может быть плохой практикой. Поэтому следует приложить некоторые усилия к написанию соглашений об использовании гобеленов/хороших практик, если ваша команда не очень маленькая.

Мои рекомендации:

  • Используйте Wicket, когда структура ваших страниц очень динамична, и вы можете позволить себе потратить 10-200 Кб памяти HttpSession на каждого пользователя (это грубые числа).
  • Используйте Tapestry 5 в случаях, когда вам нужно более эффективное использование ресурсов.

Ответ 4

Я думаю, что Wicket - более простая структура для использования.

Кроме того, Wicket разрешает перезагрузку классов через вашу систему замены горячего кода IDE. Это все, что требуется, чтобы Wicket запускал измененные версии текущих классов приложений. Обычные ограничения применяются для замены горячего кода, например, для запуска в режиме отладки (Eclipse) и невозможности изменения структурных аспектов класса (например, имя класса, изменение сигнатур методов и т.д.).

Ответ 6

Wicket - очень хороший веб-фреймворк. Лучше всего, что я знаю. Я использую его с версии 1.3 и всегда получаю то, что хочу. Wicket имеет отличную интеграцию с Spring - просто используйте аннотацию @SpringBean в вашем коде для ввода любых Spring bean в ваши классы.

Ответ 7

Попробуйте http://incubator.apache.org/click/. Это потрясающая инфраструктура Java. Некоторые люди называют это "Калитка сделана правильно", -)

Ответ 8

Как я сказал, когда 4.1 был официальным стабильным выпуском:

Вы должны очень хорошо взглянуть на историю развития Гобелена, прежде чем совершать его использование. Гобелен сделал много несовместимых обновлений, без продолжения поддержки старых версий. Патчи до 4.1 больше не обрабатываются в разумные сроки. Это, на мой взгляд, неприемлемо для официальной стабильной версии.

Согласие использовать Гобелен 5 означает:

вы должны стать коммиттером; вам нужно идти в ногу со всей новой разработкой, отказываться от старых версий как можно быстрее; поддерживать стабильные версии самостоятельно.