play framework scala web-frameworks

framework - scala orm



Scala web microframeworks (4)

Estoy buscando un marco web de Scala que tenga algunas de las siguientes propiedades.

  • Modularidad, en caso de que (digamos) no quiero utilizar el lenguaje de plantillas en particular o la interfaz de base de datos que el marco predeterminado utiliza.
  • Evite las decisiones de diseño "mágico" o asqueroso (con preferencia general por el estilo funcional de Unfiltered): objetos de solicitud / respuesta de subprocesos locales, reflexión (consulte la convención de nombres de funciones de Bowler), etc.
  • Interfaces DB. ¿Alguno que admita el mismo grado de flexibilidad que SQLAlchemy (tanto el soporte de ORM como el de SQL con interoperabilidad suave y escotillas de escape)?
  • Plantillas / ver idiomas. Bastante flexible aquí, aunque estoy interesado en los enfoques basados ​​en componentes.
  • Rendimiento, escalabilidad (soporte Comet).

¿Cuál es el mejor microframrabajo web de Scala que se ajusta a los requisitos? Algunos marcos que he estado mirando:

  • Scalatra
  • Jugador de bolos (se basa en Scalatra)
  • Jugar (la interfaz de Scala)
  • Circunflejo
  • Sin filtrar (manejo mínimo de solicitudes HTTP, sin interfaz DB / lenguaje de plantillas)

Pero sin perder tiempo jugando con todo esto, es difícil decir qué usar.


Los mejores son jugar y levantar. El ascensor es tan complejo y un marco con estado. El juego es muy fácil, ligero y sin estado, por lo que puede escalar muy fácilmente. Typesafe.com (scala home) está hecho con play / scala y también play y scala tienen una tendencia creciente. La modularidad y el rendimiento están en los esteroides en juego, hay muchos módulos para jugar y el rendimiento del sistema de plantillas está cerca del código java / scala sin procesar (mucho mejor que lift o jsp). Interfaz DB Anorm en juego es mucho más simple y eficaz que orms como hibernar, y también es fácil de depurar. El sistema de plantillas en play / scala es casi el mismo que el sistema de plantillas asp.net mvc 3 razor, es el estado del arte, el mejor IMM de jvm world, también puedes usar otros como scalate (con el módulo play scalate) pero la afeitadora es mucho mejor .

Saludos, Serdar Irmak


Me gusta Play Framework con Scala. Pero el módulo Scala todavía no tiene soporte para cosas asíncronas (por ejemplo, websockets). Y también la abstracción de la base de datos Anorm no está muy madura todavía.

Pero me gusta el marco porque es muy ligero, tiene buen rendimiento y es fácil de entender.

Play Framework está inspirado en Ruby on Rails y tiene un ciclo de desarrollo muy corto: solo guarda los archivos de origen de Scala y actualiza tu navegador web. El marco compila automáticamente los archivos de origen y muestra mensajes de error informativos del compilador directamente en el navegador. También tiene una buena integración con los marcos de prueba incluyendo Selenium.

Play Framework utiliza un marco de servidor de alto rendimiento ( Netty ) que se construye con una arquitectura dirigida por eventos, lo que puede proporcionar un mejor rendimiento en las aplicaciones de los cometas que los servidores basados ​​en subprocesos, como los contenedores tradicionales de Servlets de Java.


No estoy seguro de que califique como "microframework", pero me gusta Lift . Realmente no he mirado a los otros que sugieres, pero aquí hay algunos comentarios sobre Lift:

  • Es grande, pero puede elegir las partes que desea usar
    • Nunca me he molestado con grandes porciones: por ejemplo, interfaz (s) DB, formas mágicas, pantallas, asistentes, ...
  • Las vistas / plantillas amigables al diseñador son realmente agradables
  • Me gusta la forma en que se hacen las reglas de reescritura
  • El rendimiento es extremadamente bueno en mi experiencia
  • Box es genial
  • Comunidad grande y servicial

Lift tiene variables de ámbito de solicitud y sesión. Me gustan, pero pueden caer en tu descripción de diseño "asqueroso".

También incluye una implementación de cometa que se supone que es muy buena, aunque yo no la he usado.

Libro de trabajo en progreso y documentos here .


Bowler es más o menos Scalatra + Scalate , con algo de aplicación / empuje del desarrollador hacia buenas prácticas REST, como el uso adecuado de Content-Type y Accept HTTP Headers para responder y emitir HTML y JSON y tratar con GET, POST, DELETE y PUT de manera apropiada (y haciendo que los malos usos de GET y DELETE sean más difíciles).

Si tiene curiosidad acerca de las UI orientadas a los componentes, Bowler sí apoya el estilo Scuery de Scalate , que combinado con Bowler le da un estilo de IU muy composible fuertemente influenciado por Apache Wicket .

En términos de front-end frente a servidor, Bowler tiene una visión bastante clara de que el código del lado del cliente (JavaScript / CSS) es el código del lado del cliente y el código del lado del servidor es el lado del servidor. No hay una "integración" desagradable de JavaScript con el código Scala del servidor, en su lugar, debe usar lo mejor de su clase en el cliente y el servidor, integrado a través de un formato común y bien entendido, como JSON.