2010-01-30 9 views
15

JAX-RS has some MVC support, pero me pregunto si JAX-RS es realmente una buena opción para crear una aplicación web para uso humano.¿Es JAX-RS adecuado como marco MVC?

Si un usuario ingresa información incorrecta o incompleta en un formulario, se debe mostrar de nuevo como con Grails o Wicket. ¿Hay alguna manera cómoda de hacer esto con JAX-RS?

Hasta donde yo sé, la asignación URI no funciona correctamente, si no se dan todos los parámetros necesarios o hay problemas de conversión (por ejemplo, con la fecha). ¿Es eso correcto?

¿Hay soporte para plantillas internacionalizadas?

Aquí hay un example for a simple JAX-RS based GUI application. Pero es realmente simple y no se discute la i18n y la validación.

Respuesta

2

JAX-RS es el marco RESTful de Java EE. JavaServer Faces (JSF) es el framework Java EE MVC. Es compatible con todo lo que ha mencionado en su pregunta: devolución a la misma forma de error, i8n/l10n y más más. Para obtener más información sobre JSF, vaya a Java EE 6 tutorial part II chapters 4-9.

Puede hacer un poco de MVC con JAX-RS, pero no es un framework MVC completo. La misma historia dice que puede hacer un poco de RESTful con JSF, pero no es un marco RESTful completo.

Si quieres lo mejor de ambos mundos, creo que realmente necesitas dirigirte a Ruby on Rails o Groovy on Rails.

+0

Gracias. Conozco JSF, pero estoy buscando algo RESTful para crear aplicaciones GUI. – deamon

+0

Eche un vistazo a Ruby o Groovy on Rails. – BalusC

+0

Grails está inspirado en Ruby on Rails, pero no es un clon. Mis dos centavos, BalusC :) – oligofren

1

Hay muchas preguntas en este caso, daré mi opinión sobre dos de ellas.

"Me pregunto si JAX-RS es realmente una buena opción para crear una aplicación web para uso humano."

Los servicios web suelen ser para que las máquinas interactúen, aunque yo diría que generalmente los humanos tienen que programar las interacciones, esto tiene que ser comparado con SOAP donde, por el momento, hay mucho más margen para la máquina generada código de WSDLs.

"Si un usuario introduce información incorrecta o incompleta en una forma"

  • entonces en un servicio web HTTP REST que acepta una representación formulario HTML que debe devolver el error HTTP 400 porque el cliente ha proporcionado una representación que no se ajusta a la representación que espera su servicio: le corresponde al cliente resolver el error.
+1

Estoy de acuerdo con devolver un estado de 400 cuando el envío de datos incorrectos. Pero eso solo no sería útil cuando los datos se ingresaron en un formulario. Sería mucho mejor resaltar campos de formulario. – deamon

+0

Dios, ¿qué crees que está sucediendo detrás de las escenas en los rieles? ha declarado varias veces que quiere una forma RESTANTE de hacer las cosas. Creo que debe leer lo que significa: http://en.wikipedia.org/wiki/Representational_State_Transfer#Guiding_principles_of_the_interface – oligofren

5

Sí se puede, pero hay que despejar la cabeza del modelo de página-post viejo y empezar a pensar en su aplicación como una interfaz de usuario desconectado que se comunica con una SOA RESTful. Cuando se ingresan los datos del formulario, se publican en un punto final del servicio si los datos no son correctos, luego se responde con un error y la UI maneja el problema. No publica formularios en el servidor en el modelo tradicional de publicación de página, sino que realiza llamadas similares a RPC a su sistema de fondo.Tu vista queda completamente separada del resto de la pila de MVC. Esto hace que reemplazar la vista con un sistema móvil o IVR personalizado sea extremadamente simple.

Si un usuario ingresa información incorrecta o incompleta en un formulario, se debe mostrar de nuevo como con Grails o Wicket. ¿Hay alguna manera cómoda de hacer esto con JAX-RS?

Con una aplicación de Internet enriquecida no tiene que volver a llenar los datos porque nunca salió de la página, se realiza una llamada XHR al servidor y se devuelve un éxito de 200 o un error. La IU luego decide qué hacer en función de esa respuesta, pero la página sigue intacta porque la llamada estaba fuera de banda desde el hilo principal de la IU.

+1

Eso implica el uso de JavaScript para casi todas las comunicaciones con el servidor, ¿verdad? – deamon

+0

Sí, ese es uno de los conceptos básicos, el servidor consta de dos partes, el servidor web que proporciona HTML estático y el servidor de aplicaciones, que es una serie de puntos finales REST para datos y lógica comercial. Desde un navegador, realiza llamadas XHR para obtener datos y para el procesamiento de formularios, lógica comercial. Lo bueno es que esto te da un control muy fino. Por ejemplo, es posible que desee validar un formulario después de ingresar toda la información, pero también puede verificar si se toma un nombre de usuario en el momento en que lo ingresan. Al hacer ambas cosas en las llamadas XHR/JAX-RS, tiene una arquitectura común. – kls

+0

Para aclarar, aunque el servidor consta de dos partes, físicamente puede ser el mismo servidor, solo ayuda a visualizarlas como dos entidades distintas. Además, uso un CMS personal que puede exportar HTML estático al servidor web. Esto proporciona plantillas sin dependencias de tiempo de ejecución. No uso JSP, sino que construyo la interfaz con HTML puro, CSS y JavaScript. – kls

1

Eche un vistazo a ReXSL - es un marco MVC, además de JAX-RS. Por lo tanto, la respuesta es - sí, JAX-RS es perfectamente adecuado para el diseño de MVC.

0

Respuesta corta: .

sirve como la base para implementar MVC (MVC 1,0-JSR 371) para Java EE 8. El Controller será un bean JAX-RS con @Controller anotación (en clase o métodos).

Para obtener información mor ver: MVC 1.0 (JSR 371)

Si tomó ese camino a la hora que usted ha hecho una muy buena decisión, debería hacer más fácil para que usted pueda actualizar y utilizar el nuevo Java EE 8 arquitectura MVC.

Cuestiones relacionadas