2011-07-08 5 views
20

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

  • Modularidad, en caso (por ejemplo) No deseo utilizar el lenguaje de plantillas particular o la interfaz de DB que el marco por defecto es.
  • Evite decisiones de diseño "mágicas" o desagradables (con preferencia general por el estilo funcional de Unfiltered) - cosas como objetos de solicitud/respuesta locales, reflexión (consulte la convención de nombre de función de Bowler), etc.
  • Interfaces de base de datos . Cualquiera que soporte el mismo grado de flexibilidad que SQLAlchemy (soporte ORM y SQL con interoperabilidad suave y escotillas de escape).
  • Lenguajes de programación/visualización. Aquí es bastante flexible, aunque me interesan los enfoques basados ​​en componentes.
  • Rendimiento, escalabilidad (soporte Comet).

¿Cuál es el mejor microframework web de Scala que se ajusta a la ley? Algunos marcos de referencia que he estado buscando en:

  • Scalatra
  • Bowler (se basa en Scalatra)
  • Play (la interfaz Scala)
  • circunfleja
  • sin filtrar (mínimo manejo de peticiones HTTP, sin DB interfaz/lenguaje de plantillas)

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

+1

Para que sea más Stackoverflow apropiado, tal vez podría reformular su pregunta a "condición dada X, Y y Z, ¿cuál es el mejor marco web?". De lo contrario, su respuesta aceptada en "¿Puede la gente comentar ...?" No será útil. –

+0

@Eugene Gracias por el consejo. He revisado mi pregunta. – Yang

Respuesta

11

Bowler es más o menos Scalatra + Scalate, con un poco reforzando/empuje de los desarrolladores hacia las buenas prácticas REST, como el uso adecuado de Content-Type y Aceptar Encabezados HTTP para responder y emitir HTML y JSON y tratar con GET, POST, DELETE y PUT de manera apropiada (y hacer un mal uso de GET y DELETE más difícil).

Si eres curioso acerca de la interfaz de usuario orientada a componentes, Bowler qué support Scalate's Scuery style, lo que combinado con Bowler da un estilo de interfaz de usuario muy componibles fuertemente influenciado por Apache Wicket.

En términos de interfaz frente a servidor, Bowler takes quite a strong view that client-side code (JavaScript/CSS) es el código del lado del cliente, y el código del servidor es el lado del servidor. No hay una desagradable "integración" de JavaScript con el código Scala en el servidor, sino que 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.

6

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

Pero me gusta el marco porque es muy liviano, 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 guarde sus archivos fuente de Scala y actualice su navegador web. El marco compila automáticamente los archivos fuente y muestra mensajes informativos de error del compilador directamente en el navegador. También tiene una buena integración con marcos de prueba, incluido Selenium.

Play Framework utiliza un marco de servidor de alto rendimiento (Netty) que está construido con una arquitectura basada en eventos y esto puede proporcionar un mejor rendimiento en aplicaciones cometa que los servidores basados ​​en subprocesos como los contenedores tradicionales Java Servlet.

+0

Gracias por la honesta entrada. – Yang

6

No estoy seguro si califica como un "microframework", pero me gusta Lift. En realidad no he mirado a los demás que usted sugiere, pero aquí hay algunos comentarios sobre Ascensor:

  • Es grande, pero se puede escoger y elegir qué partes desea utilizar
    • nunca he molestado con grandes porciones de ella: por ejemplo Interfaz (es) DB, formas mágicas, Pantallas, Asistentes, ...
  • Los puntos de vista de diseño amigable/plantillas son muy agradables
  • me gustan las reglas de manera reescritura se hacen
  • El rendimiento es muy bueno en mi experiencia
  • Box es grande
  • Grande, comunidad muy útil

El ascensor tiene variables de ámbito de solicitud y sesión. Me gustan, pero pueden caer en su descripción del 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 en progreso y documentos here.

+0

Es bueno saber sobre la modularidad en Lift. Echaré otro vistazo al proyecto. – Yang

4

Las mejores son jugar y levantar. El ascensor es tan complejo y un marco de estado. Jugar 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 es casi un código Java/scala sin formato (mucho mejor que lift o jsp). Interfaz de base de datos Anorm en juego es mucho más simple y eficaz que orms como hibernate, también fácil de debbieble. El sistema de plantillas en play/scala es casi lo mismo con asp.net mvc 3 sistema de plantillas de afeitar, es estado de arte, lo mejor en jvm world IMO, también puedes usar otras como scalate (con play scalate module) pero razor es mucho mejor .

cordiales, Serdar Irmak

+0

¡No sabía que Typesafe.com usa Play! – Yang