Основанные на компоненте Java против основанных на запросе структур - PullRequest
48 голосов
/ 08 августа 2009

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

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

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

Ответы [ 4 ]

81 голосов
/ 08 августа 2009

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

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

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

24 голосов
/ 08 августа 2009

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

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

5 голосов
/ 24 ноября 2009

JSF - это компонентный Java-API, как сказал Нейт, Struts - это основанная на действии инфраструктура, запросы Http анализируются, а при обработке действий в конце сервлет контроллера направляет запрос в JSP, который будет отвечать за генерацию ответ. В то время как в JSF, который стал стандартом для компонентных веб-фреймворков, на самом деле нет необходимости обрабатывать запросы и ответы, так как все, что нам нужно, это писать страницы JSP или XHTML, связывать компоненты, используемые на странице, или значение, которое они должны отображать свойствам в поддерживаемых bean-компонентах или управляемых bean-компонентах, а FacesServlet (контроллер) выполняет всю работу, чтобы заботиться о синтаксическом анализе и перенаправлении запросов в JSP, который будет обрабатывать ответ на основе правил навигации, указанных в face-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 ...)

2 голосов
/ 03 октября 2014

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

...