play microframework framework for scala playframework lift scalatra

microframework - Elegir un marco web de Scala



playframework scala (2)

Aunque ya dio algunos candidatos, le recomiendo esta charla de Tim Perrett (autor de Lift in Action, en la que compara scala webframeworks: http://skillsmatter.com/podcast/scala/scalable-language-web).

Estoy a punto de comenzar un proyecto para una aplicación web que se debe ejecutar en un servidor Tomcat. Decidí ir por Scala, la otra alternativa donde trabajo siendo Groovy, esencialmente para seguridad de tipo. Ahora me enfrento a la tarea de elegir las herramientas adecuadas para el trabajo.

Se accederá al proyecto que necesitaré desarrollar solo a través de una API JSON. Interactuará con su propia base de datos y con dos servicios externos, que exponen, respectivamente, una API JSON y XML. También necesitaré poder programar trabajos periódicos donde mi aplicación ejecutará varias tareas de sincronización con estos servicios externos.

Para la base de datos, me gustaría poder definir mis modelos en Scala y generar automáticamente el esquema. Si surge la necesidad de cambiar mis modelos, me gustaría tener migraciones para manejarlo.

Para esta aplicación, estoy tratando de evaluar Lift, Play! 2 y Scalatra.

  • El ascensor fue mi primera opción. Es el más maduro de los tres proyectos, y parece ser considerado altamente seguro (no quiero comprometer la seguridad). Además, presenta lo que parece ser la mejor biblioteca de manejo JSON en Scala. Aún así, después de incursionar un poco en ello, no estoy seguro de que esta sea la elección correcta. La documentación no es exactamente la mejor que he visto. Además, Record + Squeryl me parece una mejor abstracción que Mapper, pero la documentación para este uso es aún más escasa. Finalmente, aunque Lift ciertamente puede usarse para crear un servicio web, parece que su verdadera fortaleza radica en el manejo del estado, por lo que no estoy convencido de que la complejidad adicional sea necesaria para mi proyecto.

  • ¡Jugar! 2 parece tener una mejor documentación, y me parece más familiar (vengo de un pasado de Django). De nuevo, su abstracción de base de datos predeterminada no me apacigua: ANORM depende de SQL, lo que no ayuda con la verificación de tipos. Tendría que usar Squeryl de todos modos, y no estoy seguro de si la documentación de este caso de uso es tan buena. Además, implementando Play! 2 aplicaciones es en este momento más complicado de lo que me gustaría. Uno tiene que instalar Play! en el servidor de producción, y no estoy seguro de que esta sea una opción donde trabajo. De lo contrario, hay un complemento para que funcione con los contenedores de servlets, pero es muy nuevo y no estoy seguro de cuán estable / confiable sea.

  • Finalmente, existe la opción de usar Scalatra . Scalatra parece muy fácil de configurar, y está diseñado exactamente para crear servicios web. El compromiso es que Scalatra no ofrece mucha funcionalidad. No se integra con los ORM existentes ni sugiere cómo organizar la parte modelo de la aplicación, y no ayuda a diseñar tareas cron o de línea de comando. Tampoco estoy seguro del futuro a largo plazo del proyecto.

¿Cuál crees que sería la mejor opción para mi tarea?


Si vienes de un fondo MVC, Play se sentirá más familiar. El levantamiento no es MVC y lleva algo de tiempo rodearlo con la cabeza.

No hay ninguna razón por la que no pueda usar Scala con un framework basado en Java como Jersey, Spring MVC, Dropwizard , Restlet, RESTEasy, etc. O podría usar Scala con Grails del mismo modo que puede usar Java con Grails. Nota: Groovy tiene seguridad de tipo que comienza con la versión 2.0, así que eso es algo a tener en cuenta.

Si estás pensando en Scalatra, entonces no olvides Spray , Unfiltered , BlueEyes ...

Asegúrese de consultar la completa comparación de frameworks web de Matt Raible. Y estas otras preguntas de SO: Marco de Scala para un servidor API Rest? , ¿Cómo implementar un servicio web REST usando Akka?