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

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

Я не разработчик Java, поэтому могу ошибаться некоторые термины... но.

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

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

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

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

4b9b3361

Ответ 1

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

  • Ваш html может быть полностью совместим с xhtml - есть ОЧЕНЬ приятное разделение представления и логики, поскольку единственное, что ваш уровень представления /html должен знать о калитки, - это атрибуты wicketid в стандартных тегах html. Это замечательно для парня на стороне клиента html/css/javascript в вашей команде, который практически ничего не делает. Никакая другая веб-инфраструктура, основанная на Java, не может претендовать на это, afaik.
  • Нет конфигурации xml для какой-либо конкретной калитки - все может быть сделано в источнике, и очень мало нужно сделать для стандартного web.xml для вашего .war
  • Разработка компонентов на основе компонентов довольно проста - особенно если у вас есть не веб-фон (например, программист качания). он рекомендует повторно использовать немного больше, чем mvc, imo.

Ответ 2

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

Компонентная модель POJO

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

Простота развития

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

Разделение проблем

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

Secure

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

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

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

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

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

Поддержка нескольких вкладок и нескольких окон

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

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

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

Простая, гибкая, локализуемая проверка формы

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

сеансы сеанса

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

Factory Настраиваемый

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

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

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

Компоненты границы

Компоненты Wicket Border позволяют украшать страницы многоразовым способом. Это особенно полезно для наследования общих навигационных структур или макета.

Поддержка всех основных функций HTML

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

Программное манипулирование атрибутами

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

Автоматические преобразования

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

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

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

Сводка ListView

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

Компонент дерева

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

Локализация

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

Ответ 3

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

Ответ 4

Калитка качается!

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

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

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

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

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

Ответ 5

Spring является более всеобъемлющим, чем Wicket.

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

Spring построен на инъекции зависимостей и AOP. У Wicket нет ни одного.

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

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

Ответ 6

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

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

Часть DI Spring велика, и это то, что вы можете легко использовать вместе с Wicket.

Ответ 7

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

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

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

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

Ответ 9

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

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

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

Ответ 10

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

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