Фреймворки на основе Java-компонентов и фреймворки на основе запросов

Меня недавно спросили в интервью - как вы сравниваете компонентные фреймворки с фреймворками на основе запросов? Я объяснил EJB как пример фреймворка на основе компонентов и Struts как фреймворка, основанного на запросах, но не был убежден, правильно ли я отнесся к вопросу.

Любые идеи о том, что имел в виду интервьюер и что нужно было сравнивать?

С уважением, avajurug


person user150014    schedule 08.08.2009    source источник


Ответы (4)


Скорее всего, они искали примеры веб фреймворков - например, JSF - это компонентный фреймворк, а Struts - фреймворк на основе запросов.

Фреймворки на основе запросов обычно дают понять через свои API-интерфейсы, что они работают с синтаксическим анализом HTML-запроса / генерацией HTML-ответа, в то время как фреймворки на основе компонентов пытаются абстрагироваться от этого и рассматривать приложение как коллекции компонентов с рендерерами и действиями для заниматься вещами.

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

person Nate    schedule 08.08.2009
comment
Спасибо, Нейт. Думаю, вы правы, что, вероятно, имели в виду веб-фреймворки. Я не знаком с JSF, поэтому не могу объяснить. Спасибо за ответ. - person user150014; 08.08.2009
comment
+1 за отличный ответ. Пользуясь Struts и JSF в течение нескольких лет, я пришел к аналогичным выводам. - person javashlook; 08.08.2009

Фреймворк на основе запросов - это веб-фреймворк, который получает запрос пользователя, затем определяет, что система должна делать, и возвращает ответ пользователю. Таким образом, поток в значительной степени линейный. Вы думаете в действиях: что хочет пользователь (запрос) -> какой пользователь вернется (ответ). Примером структуры на основе запросов является Struts. Современный Grails тоже в значительной степени основан на запросах.

Фреймворк на основе компонентов не такой. На самом деле нет четкого ощущения потока спереди назад. Примером этого является не JSF, потому что в некотором смысле JSF во многом аналогичен Struts (поскольку создатель Struts и JSF то же самое). Хороший пример структуры на основе компонентов Tapestry и Калитка. Парадигма в этих двух рамках различна. Вы думаете не действиями или запросом-ответом, а компонентами и компонентами. Вы определяете компонент в своем приложении и сообщаете, что он делает. Но поток не обязательно должен быть линейным, как в фреймворке на основе запросов.

person Joshua Partogi    schedule 08.08.2009
comment
Хмм, это было бы действительно субъективно. Это зависит от вашего рабочего процесса при создании веб-приложения. Фреймворк на основе компонентов действительно хорош, если вы хотите иметь повторно используемые компоненты для использования во многих различных проектах. Фреймворк на основе действий действительно хорош, если вам нужно только отправлять и получать Http-запрос и HTTP-ответ (действительно полезно в приложении Ajax). - person Joshua Partogi; 08.08.2009
comment
JSF нельзя отнести к категории некомпонентных фреймворков. См. Спецификацию JSF. JSF2.x Primefaces имеет богатый набор компонентов пользовательского интерфейса. - person Sree Rama; 14.05.2013
comment
JSF действительно является структурой на основе компонентов. Хотя JSF сохраняет состояние просмотра между циклом запрос-ответ, а Tapestry 4 (не знаю о гобелене 5) всегда возвращается к первоначальному состоянию страницы в начале запроса. У обоих есть свои плюсы и минусы, но оба они основаны на компонентах. Также тот факт, что создатели Struts и JSF одинаковы, не означает, что оба они будут в значительной степени одинаковыми; они могут быть, а могут и не быть. - person Master Chief; 13.03.2016

JSF - это компонентный Java API, как сказал Нейт, Struts - это структура, основанная на действиях, запросы Http анализируются, а при обработке действий в конце сервлет контроллера пересылает запрос JSP, который будет отвечать за генерацию ответа. В то время как в JSF, который стал стандартом для веб-фреймворков на основе компонентов, на самом деле нет необходимости обрабатывать запросы и ответы, поскольку все, что нам нужно, это писать страницы JSP или XHTML, связывать компоненты, используемые на странице, или значение, которое они должны отображать. к свойствам в поддерживающих bean-компонентах или управляемых bean-компонентах, а FacesServlet (контроллер) выполняет всю работу по синтаксическому анализу запроса и перенаправлению на JSP, который будет отображать ответ на основе правил навигации, указанных в faces-config.xml. Итак, как вы можете видеть, существует большая разница между Struts и JSF, поскольку JSF предлагает подход на основе компонентных событий, в то время как Struts более близок к классической модели JSP / Servlet. Еще одна вещь, которую jpartogi сказал, что создатель JSF и struts - то же самое, я просто хочу упомянуть, что Struts - это фреймворк, принадлежащий сообществу Apache, а JSF - это API, указанный JCP в JSR-127 для версии 1.1 и JSR-252. для версии 1.2 и имеет разные реализации (SUN-RI, Apache MyFaces ...)

person javance    schedule 24.11.2009

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

person FURKAN ILGIN    schedule 03.10.2014
comment
Что это за компонент? - person Force.comBat; 28.10.2015