2009-09-15 14 views
7

Hace poco me senté para portar una sencilla aplicación de Rails que tengo a JSF (usando Seam) para tener una idea de por qué sería más productivo. La aplicación Rails es RESTful, lo que me gusta. Al comenzar en JSF, me sorprendió saber, quizás incorrectamente, que JSF solo admite POST, lo que lo hace inherentemente no RESTful.¿Es RESTful JSF posible?

He buscado un poco pero no puedo encontrar una respuesta satisfactoria. JSF/Seam parece ser muy popular, pero no tiene sentido para mí que prohíba todos los métodos HTTP, pero POST. ¿Es cierto que JSF no permite una arquitectura RESTful, o estoy equivocado y RESTful JSF es posible (inherentemente o mediante un complemento)?

Respuesta

4

Aquí hay un blog post that works through this question, aunque no llega a ninguna conclusión sólida.

En mi experiencia personal, JSF/Seam no son muy populares, debido en gran parte a este tipo de problemas. Parece que es muy difícil abstraerse de la naturaleza subyacente de la web, y luego rompe cosas como GET. La solución (para cualquier problema que tenga) siempre "viene en la próxima versión" o "no es realmente un problema si tiene buenas herramientas". YMMV, pero probablemente vería una pila diferente.

He oído cosas buenas sobre Restlet, y veo que Struts 2 tiene un REST plugin. Con Spring 3, Spring MVC tiene added support for REST. He trabajado con Grails, y ha hecho las cosas RESTful bastante simples. Tiene la ventaja añadida de que debería ser muy familiar para usted, ya que tiene experiencia con Rails.

+0

Gracias. Su enlace tiene un comentario sobre Seam apoyando REST, así que también echaré un vistazo a eso. Rails hasta ahora parece ser el más elegante, pero quiero asegurarme de que eche un vistazo a otros contendientes principales (incluido Grails). – SingleShot

+4

Ese artículo no es del todo exacto sobre Seam y REST. Compara los controladores RoR con el soporte de Seam para JAX-RS. Cosas diferentes. Una comparación más precisa es RoR Controllers to Seam Page Actions. – Damo

3

JSF con costura puede hacer GET bien. Solo depende de lo que quieras hacer con eso. JSF usualmente usa publicaciones para obtener los datos de su campo en el back-end. Muchas cosas de JSF funcionan con publicaciones. Pero ciertamente puede usar GET usando los parámetros de Seam Page o simplemente llegando al objeto HTTPRequest subyacente.

Ahora, el mayor architektre RESTful, sí, no funciona bien con JSF. Sin embargo, puede usar JSF para su interfaz de usuario y JAX-RS para su API RESTful. Ambos pueden vivir felices uno al lado del otro.

2

Dependiendo de sus requisitos exactos (REST como API o más como un medio para obtener URLs marcables), Seam está más avanzado que el plomo. Un artículo de los desarrolladores de Seam está en http://relation.to/Bloggers/RESTSupportInLatestSeam21 donde muestra las nuevas características de REST. Entre otros, cómo puede exponer el acceso completo a una entidad a través de una API RESTful con solo cuatro líneas de XML.

Si va por bookmarkable, debe diseñar cuidadosamente la forma de vincular cosas (juntas) en sus páginas y flujos JSF, aunque Seam 2.2 agregó algunas características para hacerlo más fácil.