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


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

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

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

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

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

10 22

10 ответов:

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

  1. ваш html может быть полностью совместим с xhtml - существует очень хорошее разделение представления и логики в том, что единственное, что ваш слой презентации/html должен знать о wicket, - это атрибуты wicketid в стандартных HTML-тегах. Это замечательно для клиента html / css / javascript в вашей команде, который практически не работает на java. Ни один другой веб-фреймворк на основе java не может претендовать на это, afaik.
  2. нет xml config для любой конкретной калитки - все можно сделать в исходном коде и очень мало нужно сделать для стандартной сети.xml для вашего .война
  3. разработка на основе компонентов довольно проста для grok-особенно если у вас нет веб-фона (например, свинг-программист). он поощряет повторное использование гораздо больше, чем mvc, imo.

Вот некоторые особенности Apache wicket:

Модель компонента POJO

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

Легкость развития

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

Разделение интересов

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

Безопасный

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

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

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

Прозрачная Кнопка Назад Поддержка

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

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

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

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

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

Простая, Гибкая, Локализуемая Проверка Формы

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

Сеансы Typesafe

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

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

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

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

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

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

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

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

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

Программная манипуляция Атрибуты

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

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

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

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

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

Pageable ListView

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

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

Компонент out of the box tree для навигации и выбора узлов.

Локализация

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

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

Камни калитки!

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

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

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

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

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

Весна более всеобъемлюща, чем калитка.

Wicket-это Java Web UI framework. У Spring также есть один, наряду с модулями для сохранения, удаленного доступа, безопасности, обмена сообщениями и т. д.

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

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

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

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

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

Ди часть весны велика, и это то, что вы можете легко использовать вместе с калиткой.

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

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

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

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

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

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

    Вот мой блог, чтобы показать hello world коды в калитке

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

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

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

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

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