2009-08-08 15 views
47

Me preguntaron recientemente en una entrevista: en Java, ¿cómo se comparan los marcos basados ​​en componentes para solicitar marcos basados ​​en la base? Expliqué EJB como un ejemplo de marco basado en componentes y Struts como un marco basado en solicitud, pero no estaba convencido de si hice justicia a la pregunta.Componente basado en Java vs marcos basados ​​en solicitud

¿Alguna idea sobre lo que el entrevistador quiso decir y lo que debería haber sido comparado?

cordiales, avajurug

Respuesta

78

Fueron muy probablemente en busca de ejemplos de web marcos - por ejemplo, JSF es un framework basado en componentes, y Struts es un marco basado en la petición.

Los marcos basados ​​en solicitudes generalmente dejan en claro a través de sus API que están trabajando con el análisis de una solicitud HTML/generación de una respuesta HTML, mientras que los marcos basados ​​en Component intentan abstraerlo y tratar la aplicación como colecciones de componentes con renderizadores y acciones para hacer cosas.

En mi opinión, los marcos web basados ​​en componentes son más problemáticos de lo que vales. Su objetivo principal es hacer que el desarrollo de una aplicación web sea más fácil para los desarrolladores que no están familiarizados con el desarrollo web y más cerca del escritorio tradicional desarrollo. Sin embargo, en la práctica, cuando algo sale mal, necesita desarrollar componentes personalizados, necesita personalizar el marco de trabajo para algo que no está "listo para usar", etc. Necesita comprender el desarrollo web "tradicional" subyacente y cómo el marco basado en componentes lo abstrae; y si usted es un desarrollador web experimentado y tiene soluciones, utilidades, bibliotecas o fragmentos existentes que funcionaron en el desarrollo web "tradicional", perderá tiempo en volver a implementarlos en trabajar dentro del marco basado en componentes.

+0

Gracias Nate. Supongo que tienes razón de que probablemente se referían a frameworks web. No estoy familiarizado con JSF, así que no pude explicarlo. Gracias por la respuesta. – user150014

+4

+1 para una respuesta excelente. Después de haber usado Struts y JSF durante algunos años, llegué a conclusiones similares. – javashlook

+0

¡una gran respuesta, gracias! – quento

24

El marco basado en solicitudes es un marco web que recibe la solicitud del usuario, a continuación, determina qué debe hacer el sistema y devuelve la respuesta al usuario. Entonces el flujo es bastante lineal. Estás pensando en acciones: qué quiere el usuario (solicitar) -> qué usuario recibirá (respuesta). Un ejemplo de marco basado en Solicitud es Struts. El moderno Grails es más o menos un marco basado en Solicitud también.

El marco basado en componentes no es así. En realidad, no hay un sentido claro del flujo de adelante hacia atrás. Un ejemplo de esto no es JSF, porque de algún modo JSF es bastante similar con Struts (ya que el creator of Struts and JSF es el mismo). Un buen ejemplo de marco basado en componentes Tapestry y Wicket. El paradigma en estos dos marcos es diferente. No piensas en acciones o solicitud-respuesta, sino en componentes y componentes. Usted define un componente en su aplicación y le dice qué hace el componente. Pero el flujo no tiene que ser lineal como en el marco basado en Solicitud.

+0

Gracias jpartogi ... así que ¿qué crees que son los pros y los contras de estos marcos ... – user150014

+0

Hmmh, eso sería muy subjetivo. Depende de tu flujo de trabajo al crear una aplicación web. El marco basado en componentes es realmente bueno si desea tener componentes reutilizables para ser utilizados por muchos proyectos diferentes. El marco basado en acciones es realmente bueno si solo necesita enviar y recibir solicitudes Http y respuesta http (realmente útil en la aplicación Ajax). –

+1

JSF no se puede clasificar como marco no basado en componentes. Por favor, consulte la especificación JSF. JSF2.x Primefaces tiene un rico envío de componentes UI. –

5

JSF es una API java basada en componentes, como dijo Nate, Struts es un marco basado en acción, las solicitudes Http son analizadas, mientras que el procesamiento de las acciones al final el controlador Servlet envía la solicitud al JSP que será responsable de generar la respuesta. Mientras que en JSF se convirtió en un estándar para los marcos web basados ​​en componentes, en realidad no hay necesidad de procesar las solicitudes y las respuestas, ya que todo lo que necesitamos es escribir páginas JSP o XHTML, enlazar los componentes utilizados en la página o el valor que deben representar a propiedades en respaldos de beans o beans administrados y el FacesServlet (controlador) hace todo el trabajo para importar el análisis de solicitudes y el redireccionamiento al JSP que representará la respuesta en base a las reglas de navegación especificadas en faces-config.xml.Como puede ver, hay una gran diferencia entre Struts y JSF, ya que JSF brinda un enfoque basado en eventos de componentes, mientras que Struts se acerca más al modelo clásico de JSP/Servlet. Otra cosa que jpartogi ha dicho es que el creador de JSF y struts es el mismo, solo quiero mencionar que Struts es un framwork propiedad de la comunidad Apache mientras que JSF es una API especificada por JCP en el JSR-127 para la versión 1.1 y JSR-252 para la versión 1.2 y tiene diferentes implementaciones (SUN-RI, Apache MyFaces ...)

2

Simplemente, si el marco tiene objetos en el lado java para cada elemento web para que pueda cambiar sus atributos o agregar alguna funcionalidad, es un marco basado en componentes, pero si el marco no proporciona objetos y usted tiene que poner el valor de respuesta del elemento web entre sus etiquetas, es un marco basado en solicitudes.

+0

¿Qué es este componente? –

Cuestiones relacionadas