2009-02-12 3 views
21

Я не разработчик Java, поэтому я могу ошибаться в некоторых словах ... но.Каковы преимущества Apache Wicket?

Приложение, в которое я интегрирую, перемещается из Spring в Wicket. Хотя это не должно повлиять на мою интеграцию с ним, мне стало интересно, почему они это сделают?

Из того, что я знаю, Весна является более популярной структурой. Я ничего не знаю об этом, кроме того, что он популярен. Я прочитал страницу Wicket, и Wicket кажется очень простой и понятной.

Каковы некоторые преимущества Wicket?

Мне кажется, что изменение всей структуры будет некоторой работой, поэтому я задаюсь вопросом, предлагает ли Wicket что-то, чего нет у Spring?

ответ

25

Преимущества, которые часто получают оцениваемое в кругах я часто является:

  1. Вашего HTML может быть полностью XHTML совместимым - есть очень хорошее разделение представления и логика в том, что единственным, что ваши потребностях презентации/html слоя знать о калитки - атрибуты wicketid в стандартных тегах html. Это замечательно для парня на стороне клиента html/css/javascript в вашей команде, который практически ничего не делает. Никакая другая веб-инфраструктура, основанная на Java, не может претендовать на это, afaik.
  2. Нет xml config для чего-либо конкретного калитки - все может быть сделано в источнике, и очень мало нужно сделать для стандартного web.xml для вашего .war
  3. Разработка на основе компонентов довольно проста - особенно если у вас есть не веб-фон (например, программист качания). он рекомендует повторно использовать немного больше, чем mvc, imo.
+4

Я заметил пункт 1 на сайте калитки. Он выглядит довольно чистым и простым. Я думал: «Вот как должен был быть asp.net» (я разработчик .net). – dtc

+2

Калитка скалы! ... Мне это нравится. –

+0

Пункт 1 - Если вы разрабатываете приложение с умеренным размером, ваш html будет иметь теги <калитка: граница, корпус, контейнер, панель>. Поэтому ваши разработчики HTML все равно должны знать о тегах Wicket - см. Http://cwiki.apache.org/WICKET/wickets-xhtml-tags.html для списка. Поэтому не так чистое разделение, как предполагалось. – Mike

9

Весна более всеобъемлющая, чем Wicket.

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

Весна построена на инъекции зависимостей и АОП. У калитки нет ни того, ни другого.

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

Вы можете использовать Spring, чтобы воспользоваться преимуществами во многих ситуациях, помимо веб-приложений.

+4

"Spring построена на инъекции зависимостей и АОП. Калитка не имеет ни одного." Стоит отметить, что нет ничего, что помешало бы вам использовать * любые пружинные модули вне весны mvc в сочетании с калитки ... или любые рамки DI, AOP, если на то пошло. – whaley

+0

Отличный пункт, whaley. Согласен. Это будет включать Guice или PicoContainer, AspectJ и т. Д. – duffymo

11

Весна больше, чем весна MVC. Вы можете (и, вероятно, должны) использовать Spring с Wicket.

6

Вы можете прочитать о преимуществах использования Wicket в свободной первой главе калитки в действии: http://www.manning.com/dashorst/

Короче говоря, Калитка является большой рамкой, когда приложение вы разрабатываете является относительно сложного, вы хотите быть поддержанным, иметь возможность масштабировать команду и использовать преимущества повторного использования. Объектно-ориентированное программирование оказалось очень полезной парадигмой для программирования пользовательских интерфейсов, но, к сожалению, большинство фреймворков Java для разработки веб-приложений, включая Spring MVC, поддерживают только очень процедурную модель программирования, где они отмечают термин MVC, чтобы сделать звук здоровым (но на самом деле, поскольку гранулярность, которую они поддерживают, - это обратные вызовы/ответы, а не автономные виджеты, MVC действительно вводит в заблуждение).

Слишком большая часть весны, и это то, что вы можете легко использовать вместе с Wicket.

11

Wicket rocks!

Spring (пользовательский интерфейс, который называется Spring MVC) просто кажется мега, «делайте все, включая кухонную раковину», тип рамы, который сделал его огромным и громоздким для меня, когда я начал оценивать Spring (и Spring MVC). Сегодня мне не кажется, что Весна сосредоточена на какой-то одной вещи. Первоначально я думаю, что это была просто рамка внедрения зависимостей, но она быстро стала пытаться быть всем для всех людей, и простота была потеряна.

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

Что не так с объявлением материала в Java-коде вместо XML в любом случае? С тех пор, когда кто-то постановил, что все должно быть объявлено в XML в любом случае. Если вам нравится плавать в море сложных файлов конфигурации XML, переходите к Spring. Если вам нравится получать работу и быть продуктивным, переходите к Wicket.

Wicket очень сфокусирован на том, чтобы быть лучшим интерфейсом пользовательского интерфейса на основе Java для разработки веб-приложений. Он не пытается заблокировать вас в какой-либо конкретной инфраструктуре инъекций зависимостей или какой-либо конкретной структуре персистенции (используйте ее с JDO/JPA, DataNucleus, Hibernate, что угодно).

Это явно связано с пользовательским интерфейсом, но вы можете использовать любую инфраструктуру инъекций зависимостей, которая вам нравится (вам не нужно использовать DI с Spring, но вы можете, если хотите). Мы даже используем наш собственный DI (http://www.expojo.com) с Wicket, и все это фанки.

3

Некоторые преимущества калиткой мне нравится:

  1. Простота - Изучение кривой мала, особенно если вы из свинг школы.
  2. Чистое разделение проблем. Веб-дизайнеру не нужно много знать о кодах.
  3. Простота развертывания.

    Here is my blog to show hello world codes in Wicket

4

Я согласен с ответами, представленными до сих пор. Что не было упомянуто, являются следующие моменты, которые являются следствием подхода Wicket о разработке веб-приложений сфокусировано на Java-код: -

  • развитие Калитка не предполагает написания JSP-страницы.
  • Компоненты AJAX могут быть разработаны без привлечения письменности Javascript.

Я не сталкивался ни с какими-либо другими фреймворками, которые используют этот ориентированный на Java подход. Все остальные, которые я использовал (Struts, Spring), связаны с разработкой JSP.

Для меня большое преимущество Wicket - сосредоточиться на Java и доступность богатых средств разработки, таких как Eclipse. Также очень чистое разделение бизнес-логики с аспектами презентации приложения.

3

Весна дает шаблон дизайна MVC только на уровне страницы - очень грубый уровень детализации. Напротив, калитка дает вам шаблон проектирования MVC на уровне отдельных компонентов (так же, как Swing предлагает для толстого программирования клиентов).С Spring MVC все данные формы являются глобальными для всего переднего сервлета, поэтому возможностей для скрытия информации, ослабления связи или жесткой сплоченности не существует. С помощью Wicket ваша логика отображения может быть гораздо более модульной - данные, управляемые компонентом A, не должны быть видимыми для кода для компонента B.

Меньший уровень детализации значительно упрощает повторное использование кода отображения на нескольких разных веб-страницах или даже в веб-приложениях.

Кроме того, поскольку конфигурация компонентов выполняется на Java, а не на XML, их можно настроить «на лету» во время выполнения, что обеспечивает большую мощность и гибкость (в отличие от большинства других компонентно-ориентированных фреймворков, таких как ASP.NET Web Forms или Java Server Faces).

14

Вот некоторые особенности апача калитки:

POJO модель компонентной

Страницы и компоненты в калитке реальных объекты Java, которые поддерживают инкапсуляцию, наследование и событие.

Простота разработки

Поскольку Калитка является Java и HTML, вы можете использовать то, что вы знаете о Java или ваш любимый редактор HTML, чтобы писать Wicket приложения.

Разделение концернах

Калитка не смешивает разметку с Java кодом и не добавляет специальный синтаксис для файлов разметки. Миры HTML и Java параллельны и связаны только с идентификаторами Wicket, которые являются атрибутами свойств HTML и Component в Java. Поскольку Wicket HTML - это просто HTML, а Wicket Java - это просто Java, кодеры и дизайнеры могут работать независимо в значительной степени и не полагаться на какие-либо специальные инструменты.

Secure

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

Прозрачный, масштабируемая поддержка кластеризации

Все приложения Калитки будут работать на кластере автоматически и без дополнительной работы. Как только узкие места понятны, Wicket позволяет настраивать репликацию состояния страницы. Следующая версия Wicket будет поддерживать клиентские модели для масштабирования с нулевым состоянием.

прозрачной задней крышка Кнопки Поддержка

Калитки поддерживает настраиваемое управление версией страницы. Когда пользователи отправляют форму или следуют ссылке со страницы, к которой они обращаются с помощью кнопки «Назад» в своем браузере, Wicket может вернуть объект страницы в состояние, в котором оно было, когда страница была первоначально отображена. Это означает, что вы можете писать веб-приложения, поддерживающие кнопку «Назад», при очень небольшой работе.

Multi-закладка и многооконный поддержка

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

Многоразовые компоненты

Многоразовые компоненты калиткой особенно легко создать. Вы не только расширяете существующие компоненты с помощью ключевого слова Java extends, но также можете создавать компоненты Panel, которые связывают группу компонентов как многократно используемую единицу.

Простой, гибкий, Localizable Form Validation

Это тривиально, чтобы написать и использовать валидатор в калитке. Также довольно легко настроить и локализовать отображение и содержимое сообщений об ошибках проверки.

типизированной Сессия

Калитка устраняет необходимость управления HttpSession атрибутов вручную. Объекты страниц и компонентов прозрачно хранятся в сеансе, и ваше приложение может создавать собственный подкласс сеанса с свойствами типов. Все объекты, хранящиеся в сеансе, могут автоматически участвовать в репликации кластеризации.

завод Настраиваемый

Калитка очень расширяемой. Большинство операций настраиваются на фабриках или фабричных методах.

Съемных Модели

объекты модели в калитке могут быть очень легкими с точкой зрения памяти и использования сети в кластере. Когда модель используется, она может «присоединяться», заполняя себя информацией из постоянного хранилища. Когда модель больше не используется, временная информация может быть сброшена, уменьшая размер объекта.

Пограничных Компоненты

компонента Уикет Пограничная позволяют оформление страниц в многоразовой моде. Это особенно полезно для наследования общих навигационных структур или макета.

Поддержка всех основных HTML Особенности

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

Programmatic Манипуляция Атрибуты

Калитки Компоненты могут программно изменить любой атрибут HTML тегов.

Автоматических Конверсии

После того, как форма подтверждает, модель может быть обновлена ​​с помощью преобразователей калитки. Большинство обычных конверсий встроены и легко создавать новые конвертеры.

Динамические Изображения

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

выгружаемого ListView

ListViews в калитке чрезвычайно силен. Вы можете вложить любой компонент в строку ListView, даже другие ListView. PageableListView поддерживает ссылки навигации для больших списков.

Дерево компонентов

Из компонента дерева коробки для навигации и выбора узлов.

Локализация

HTML-страницы, изображения и строки ресурсов могут быть локализованы.

1

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

http://www.infoq.com/articles/modular-wicket

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