tutorial play framework descargar scala playframework-2.0 lift web-frameworks

scala - framework - Comparando Lift con Play2



play framework vs spring (2)

Para ver qué se puede hacer con Play (puede ser genial), eche un vistazo a la consola de TypeSafe

Para ponerse en marcha rápidamente con Lift, utilice un proyecto de plantilla .

Para ver una muestra del uso de Mongo con Play, mira Factile .

En resumen, no creo que te equivoques con Lift o Play. Ambos son proyectos activos, con buenas comunidades y buen respaldo de los autores. Realmente depende de su problema de negocio. Si el soporte de la herramienta es importante para usted, es posible que desee ver el uso de Play (es compatible con IntelliJ Idea).

Tenga en cuenta que Play, que forma parte de la pila de tecnología TypeSafe, tendrá las versiones más recientes de Scala, por lo que si usa las funciones de Scala 2.10 es importante para usted, entonces debería tenerlo en cuenta. Lift actualmente está utilizando Scala 2.9.2, lo cual también está bien.

Para mi proyecto actual, uso lift-mapper para ORM (es genial y sólido), con Spray para REST (que es simplemente increíble). Este enfoque evita los marcos por completo, pero depende de lo que quieras hacer. Los marcos son a menudo el camino a seguir.

Utilicé play2 antes con java. Se sentía un poco como repetitivo, especialmente si usabas akka con java. Pero eso no es culpa del marco.

Ayer leí "Scala para los impacientes" y disfruto mucho del idioma.

Ahora miré ambos frameworks Lift 2.5 y Play 2.0.3. Creo que lift tiene una curva de aprendizaje más alta y no podría simplemente hacer algo con lift. Esto no es una estafa para mí. Por lo que vi, Lift tiene un diseño muy agradable y limpio.

Pero para mí es difícil decir cuáles son las principales diferencias. Creo que ambos marcos son geniales.

  • El enfoque de Views First no le permite codificar en sus plantillas, en lugar de eso, tiene que codificar en fragmentos. Me gusta mucho esto porque me parece más organizado. También te permite usar un editor html normal. (No tengo mucha experiencia, esta es solo mi primera impresión)

  • Por la seguridad no creo que ese sea el trabajo del framework.

  • Sin estado / con estado: es difícil decir dónde están las principales diferencias. Solo sé que el juego también tiene un estado si usas sockets web.

  • Ambos marcos pueden compilarse después de presionar F5. Me gusta mucho esta característica.

  • Ambos frameworks están usando sbt

  • Lift viene con autorización, pero creo que hay un plugin de play2 scala que hace lo mismo

  • Lift tiene un mapeador ORM para mongoDB. Como quiero usar noSQL, esto me parece más limpio. (De nuevo, no hay mucha experiencia) Editar Hay un mapeador ORM para scala mongodb en play2 https://github.com/leon/play-salat

  • Async - Play 2 usa Akka. No sé qué utiliza el ascensor, pero también tienen algo similar.

  • Levantar naves con soporte CSRF. Play2 tiene un módulo para CSRF, pero esto agrega una placa de repetición a su código.

  • La autenticación sin estado parece tener algunas vulnerabilidades de seguridad. Ambos marcos tienen la autenticación de estado. (Play2 stateful / stateless, lift stateful)

  • ¿Cuáles son las fortalezas de cada marco?

Publicar esto después de pasar una semana o dos con Lift realmente no sirve a los intereses de nadie. Sin embargo, quiero pasar algún tiempo corrigiendo algunos errores y percepciones erróneas.

  • Por la seguridad no creo que ese sea el trabajo del framework.

Estás muerto mal. La seguridad es el trabajo del marco. Es fundamental que la seguridad se realice de forma predeterminada en lugar de confiar en cada desarrollador para comprender cada vulnerabilidad de seguridad y asegurarse de que cada línea de código tenga eso en cuenta.

Todo lo que tenemos que hacer es mirar lo que le sucedió a GitHub para comprender que incluso los mejores programadores que utilizan tecnología bien conocida pueden cometer un error crítico.

Lift proporciona una capa de seguridad sólida en la parte superior, por lo que, de forma predeterminada, no hay XSS, CSRF, etc., pero el desarrollador puede profundizar tanto como quiera a la solicitud HTTP y lidiar con los bytes en el cable.

  • Sin estado / con estado: es difícil decir dónde están las principales diferencias. Solo sé que el juego también tiene un estado si usas sockets web.

Lift es muy claro sobre dónde necesitas el estado y dónde no. Lift puede admitir aplicaciones sin estado, parcialmente con estado y completamente con estado. Página por página y solicitud por solicitud, la aplicación Lift puede ser sin estado o sin estado (por ejemplo, en Foursquare , las páginas del sitio no tienen estado para los rastreos de los motores de búsqueda, pero sí para los navegadores que han iniciado sesión). Para obtener más información sobre las decisiones de diseño en torno al estado, consulte Elevación, Estado y Escala .

  • Ambos frameworks están usando sbt

Lift usa Maven, sbt, Buildr, e incluso Ant. Lift desconoce el entorno de compilación y el entorno de despliegue (contenedor Java EE, Netty, lo que sea). Esto es importante porque hace que Lift sea más fácil de integrar con el resto de su entorno.

  • Lift viene con autorización, pero creo que hay un plugin de play2 scala que hace lo mismo

Lift ha existido por más de 5 años y tiene muchos módulos y cosas para ello. El marco web de Lift (a diferencia de los módulos) es independiente de la persistencia, la autenticación, etc., por lo que puede usar cualquier cosa con Lift.

  • Async - Play 2 usa Akka. No sé qué utiliza el ascensor, pero también tienen algo similar.

Lift ha tenido soporte de Async por más de 5 años. Está cocido en el marco. El soporte Comet de Lift es el mejor de cualquier marco web porque, entre otras cosas, multiplexa todas las solicitudes "push" en una página a través de una única solicitud al servidor, lo que evita el hambre de conexión. Cómo Lift async es mucho menos importante porque una de las filosofías centrales de Lift es que eliminamos la plomería del desarrollador para que el desarrollador pueda centrarse en la lógica empresarial.

Pero para aquellos que se preocupan, Lift tiene los mejores y más ligeros actores de cualquier marco en Scala-land. Fuimos los primeros en separarnos de la biblioteca del actor Scala y trabajamos para abrir el camino para diferentes bibliotecas de actores que permitieron que los actores Akka y ScalaZ florecieran.

  • Levantar naves con soporte CSRF. Play2 tiene un módulo para CSRF, pero esto agrega una placa de repetición a su código.

Esto es parte del compromiso de Lift con la seguridad. Es important

  • La autenticación sin estado parece tener algunas vulnerabilidades de seguridad. Ambos marcos tienen la autenticación de estado. (Play2 stateful / stateless, lift stateful)

Las aplicaciones de elevación pueden ser tan completas o sin estado como quieras. Es su elección y Lift deja muy claro cómo tomar la decisión.

Además, como señalé en la publicación Lift, State y Scaling, el desarrollador debe descubrir cómo serializar el estado de una manera segura, escalable y de alto rendimiento (porque prácticamente todas las solicitudes en una aplicación web que reconoce a usuarios específicos tienen estado). se puede hacer de una manera predecible y segura por el marco con reemplazos razonables para los desarrolladores.

Nota de despedida

El juego se parece mucho a Rails: es rápido que un sitio se convierta en un sitio y está basado en MVC, por lo que muchos desarrolladores lo entienden. Pero Play carece de la profundidad y la amplitud de Rails (comunidad, complementos, experiencia, talento, etc.) Si desea un MVC rápido y fácil, vaya con Rails y JRuby y escriba su back end en Scala (trabajan muy bien juntos).

Lift es una bestia diferente. Hay una curva de desaprendizaje significativa (deje de pensar en MVC y comience a pensar primero en la experiencia del usuario que fluye hacia la lógica de negocios). Pero una vez que está en la curva de desaprendizaje, los sitios de Lift son más seguros, altamente escalables, súper interactivos y mucho más fáciles de Mantener en el tiempo.