¿Cuáles son los principios de desarrollo de aplicaciones web con acción basado en frameworks de java?

StackOverflow https://stackoverflow.com/questions/2852481

  •  27-09-2019
  •  | 
  •  

Pregunta

De fondo

Voy a desarrollar un nuevo de aplicaciones web con java.No es muy grande o muy complejas y tengo el tiempo suficiente hasta que se va "oficialmente" de inicio.

Tengo algunas JSF/Facelets fondo de desarrollo (alrededor de la mitad de un año).Y también tengo libre con JSP+JSTL.

En la auto-propósito educativo (y también con el fin de encontrar la mejor solución) quiero el prototipo del nuevo proyecto con uno de acción basado en marcos.En realidad, voy a elegir entre Spring MVC y Rayas.

Problema

Con el fin de obtener la correcta impresión acerca de la acción basada en marcos (en comparación con JSF) quiero estar seguro de que puedo usar correctamente (en mayor o menor medida).

Así pues, aquí es una lista de algunas de las más frecuentes de las tareas (al menos para mí) y describir cómo voy a resolver con JSF.Quiero saber cómo deben ser resueltos con la acción marco basado en (o por separado con Spring MVC y Rayas si hay alguna diferencia para la tarea concreta).

  1. La representación de contenido:Puedo aplicar listos-para-usar componente estándar de jsf bibliotecas (núcleo y html) o de 3 ª parte libs (como RichFaces).Puedo combinar componentes simples y fácilmente puedo crear mis propios componentes, que se basan en componentes estándar.
  2. Procesamiento de datos (primitivo o tipos de referencia) en el formato correcto:Cada componente permite especificar un convertidor de para la transformación de datos en ambos sentidos (para procesar y enviar al servidor).Converter es, como de costumbre, una clase simple con 2 pequeños métodos.
  3. La navegación del sitio:Puedo especificar un conjunto de navegación-casos en faces-config.xml.A continuación, especifique la acción-el atributo de un enlace (o un botón) que debe coincidir con uno o más de navegación de los casos.El mejor partido es elegido por el JSF.
  4. La aplicación de flujo (multiforme asistentes por ejemplo):Estoy usando JSF 1.2, así que uso Apache Orquesta para el flujo (conversación) ámbito de aplicación.
  5. Procesamiento de formularios:Tengo una bastante estándar en java bean (backing bean en JSF términos) con algunos alcance.I 'mapa' de los campos de formulario en este bean propiedades.Si todo va bien (sin excepciones y validación se pasa), a continuación, todas estas propiedades se establecen con los valores de los campos del formulario.Luego puedo llamar a un método (especificado en el botón del acción atributo) para la ejecución de cierta lógica y devuelve la cadena que debe mucho a uno de mis navegación de los casos para ir a la siguiente pantalla.
  6. Validación de formularios:Puedo crear validador personalizado (o elegir de entre las existentes) y agregar a casi cada componente.3ra parte de las bibliotecas tienen conjuntos de personalizado ajax-validadores.Estándar de validadores de trabajo sólo después de que se envíe.En realidad, no me gusta cómo validación en JSF obras.Demasiada magia allí.Muchos componentes estándar (o quizás todos) han predefinido de validación y es imposible desactivarlo (tal vez no siempre, pero me encontré con muchos problemas con ella).
  7. Soporte de Ajax:muchas bibliotecas 3rd-party (MyFaces, IceFaces, OpenFaces, AnotherPrefixFaces...) tienen un fuerte soporte de ajax y funciona bastante bien.Hasta que te encuentras con un problema.Demasiado magia de allí.Es muy difícil hacer que funcione, si no funciona pero te has hecho a la derecha como se describe en el manual.
  8. El usuario URLs amigables: la gente dice que hay algunas bibliotecas que existen.Y se puede hacer con los filtros así.Pero yo nunca lo he probado.Parece demasiado complejo para la primera mirada.

Gracias de antemano por explicativa acerca de cómo estos elementos (o algunos de ellos) pueden ser realizadas con la acción basada en el framework.

¿Fue útil?

Solución

Voy a hacer mi mejor esfuerzo para responder con respecto a Rayas.He usado Struts y JSF en el pasado, pero no recientemente, así que a lo mejor tengo vagas nociones y sentimientos acerca de ellos.

Estamos íntimamente familiarizado w/ Rayas, lo uso para casi todo ahora, y realmente disfrutar de ella.Es fácil de saltar, es compatible con muchos de los complicados escenarios, pero también tiene la posibilidad de trabajar FUERA de ella, lo cual es muy importante cuando se desea construir su propio ajax widgets o hablar con otro sistema o algo.

Si usted ve las rayas de la ruta, me definitivamente recomiendo comprar o descargar el libro.Es una ventanilla única para todo lo que usted necesita para hacer Rayas, y es prácticamente la única documentación para Stripersist (muy buena característica, pero NO en la web de google docs).


La representación de contenido:Puedo aplicar listos-para-usar componente estándar de jsf bibliotecas (núcleo y html) o de 3 ª parte libs (como RichFaces).Puedo combinar componentes simples y fácilmente puedo crear mis propios componentes, que se basan en componentes estándar.

Esto es similar.Núcleo, Html, Fmt, etc.así como cualquiera de las etiquetas personalizadas a encontrar, inc.pantalla:etiqueta, empaque etiqueta, y crear su propio.Sin embargo, es obvio que no se tratan en el nivel de componente, ahora, tiene que tratar con una etiqueta que determina lo que está en la página / enviados hacia o desde el servidor.

Procesamiento de datos (primitivo o tipos de referencia) en el formato correcto:Cada componente permite especificar un convertidor para transformar los datos en ambos sentidos (para procesar y enviar al servidor).Converter es, como de costumbre, una clase simple con 2 pequeños métodos.

Rayas tiene muchos construidos en los convertidores, y es fácil crear convertidores personalizados para sus tipos de datos más complejos.Rayas soporta muy complejas estructuras de datos se asignan con poca molestia.Combinado con Stripersist, por ejemplo, puedo poner mi modelo de objeto directamente en la ActionBean, poner algunos de los campos en el formulario, y Stripersist se hidratan el modelo de la base de datos (basado en su PK) y lo actualice con los campos que poner en el formulario - todos antes de soltar el control a mí en el ActionBean.

La navegación del sitio:Puedo especificar un conjunto de navegación de los casos en faces-config.xml.A continuación, especifique la acción-el atributo de un enlace (o un botón) que debe coincidir con uno o más de navegación de los casos.El mejor partido es elegido por el JSF.

La navegación en las franjas se basa en lo que el nombre de la ActionBeans, inicialmente.No hay ninguna xml.Además, las urls amigables son una anotación en el ActionBean nivel en Rayas de 1.5, por lo que usted puede hacer cosas como @UrlBinding("/{$event}/{model}") donde /view/5 los llevaría al "view"controlador de eventos para el Modelo de objeto con el ID/PK de 5.

La aplicación de flujo (multiforme asistentes por ejemplo):Estoy usando JSF 1.2, así que uso Apache Orquesta para el flujo (conversación) ámbito de aplicación.

Mientras que yo sólo soy vagamente familiarizado con el concepto de ámbito de conversación, Rayas tiene Asistente De Formulario funcionalidad, pero yo lo he usado y estoy realmente incapaces de ampliar.Creo que es una idea similar, aunque.

El procesamiento del formulario:Tengo una bastante estándar en java bean (backing bean en JSF términos) con algunos alcance.I 'mapa' de los campos de formulario en este bean propiedades.Si todo va bien (sin excepciones y validación se pasa), a continuación, todas estas propiedades se establecen con los valores de los campos del formulario.Luego puedo llamar a un método (especificado en el botón de acción del atributo) para la ejecución de cierta lógica y devuelve la cadena que debe mucho a uno de mis navegación de los casos para ir a la siguiente pantalla.

No drásticamente diferentes.En lugar de componentes en su [acción] bean, ahora tiene Java o tipos personalizados.ActionBeans son creados por solicitud y tirar, a menos que haga algo como lo puso en la sesión, o asistente, o lo que sea.Esto es bueno, porque todas las variables de instancia se correlacionan con los datos del formulario, se utiliza, a continuación, tira a la basura, y no tener que lidiar con cualquier problemas de sincronización como struts hizo.Después de hacer su cosa con los datos, las Rayas, le permite enviar un ForwardResolution (estado OK), Redirigir, o Streaming (JSON, archivo, etc).La Redirección después de la POST patrón se implementa muy bien con la idea de flash alcance (3/4 hacia abajo en la página).

Validación de formularios:Puedo crear validador personalizado (o elegir de entre las existentes) y agregar a casi cada componente.3ra parte de las bibliotecas tienen conjuntos de personalizado ajax-validadores.Estándar de validadores de trabajo sólo después de que se envíe.En realidad, no me gusta cómo validación en JSF obras.Demasiada magia allí.Muchos componentes estándar (o quizás todos) han predefinido de validación y es imposible desactivarlo (tal vez no siempre, pero me encontré con muchos problemas con ella).

Rayas permite la validación en anotaciones en las variables de instancia en el ActionBean.Permiten algunos valores, requiere, maxlength, etc.o siempre puedes crear tu propio.El valor predeterminado es fácil añadir y flexible, aunque siempre existe la posibilidad de hacer algo completamente personalizado.

Soporte de Ajax:muchas bibliotecas 3rd-party (MyFaces, IceFaces, OpenFaces, AnotherPrefixFaces...) tienen un fuerte soporte de ajax y funciona bastante bien.Hasta que te encuentras con un problema.Demasiado magia de allí.Es muy difícil hacer que funcione, si no funciona pero te has hecho a la derecha como se describe en el manual.

Este fue mi gran problema con el JSF manera de hacer las cosas.Incluso si conseguiste el widget de la derecha, aún estás atascado con ESE widget.Con Rayas, usted puede usar lo que sea más reciente y más grande de Jquery tiene para ofrecer, y como siempre que envíe el derecho a GET o POST al servidor, rayas sabe qué hacer con ella y se pueden enviar fácilmente JSON de la espalda.Creo que el componente de ajuste de los marcos de un nicho de hace un par de años mucho mejor cuando el AJAX fue duro, pero JQ hace que sea tan fácil ahora.

User-friendly URLs:la gente dice que hay algunas bibliotecas que existen.Y se puede hacer con filtros.Pero yo nunca lo he probado.Parece demasiado complejo para la primera mirada.

@UrlBinding, es tan fácil como eso.

Otros consejos

Mi respuesta no es la que uno desea escuchar:No cambiar de Componente de Marco a marco de acción

Me pasa al revés, después de muchos años de marco de acción para el desarrollo y yo nunca voy a volver.

De los 8 casos de uso que usted ha mencionado, sólo uno viene a la mente, donde la Acción de los marcos son obviamente mejor, y que es la URL de diseño / URLs amigables.Se puede hacer en marcos de componentes así, pero mucho más fácil en Acción Marcos (especialmente en las Franjas donde se acaba de anotar su ActionBean con la url).

Yo le aconsejo que trate de la peatonal, es muy fácil de aprender (mucho más fácil que JSF) y vamos a volver a utilizar muchos de los actuales componentes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top