Hoy, veremos 8 marcos poderosos para Scala. Discutiremos un poco sobre cada uno y enumeraremos algunos pros y contras. Tenga en cuenta que la mejor opción de marco siempre será la que coincida con los requisitos específicos de su proyecto; en consecuencia, considere estas señales, pero decida en función de los requisitos de su propio proyecto qué funciona mejor para usted.
1. Play Framework
El framework web de alta velocidad para Java y Scala
Beneficios
- Íntimamente relacionado con JVM , y como tal, los desarrolladores de Java lo encontrarán familiar y fácil de usar.
- Amplio soporte para una variedad de conjuntos de herramientas y sistemas IDE .
- Se basa completamente en conceptos de programación funcional y promueve las prácticas de diseño RESTful que dan prioridad a las API .
- Play 2 es reactivo , lo que permite realizar llamadas remotas en paralelo. Esto significa que funciona bien con WebSockets y otros enfoques centrados en el servidor relacionados.
- Ofrece una amplia gama de estructuras de soporte de marcos para la compilación de activos, manejo de formatos, integraciones de bases de datos, etc.
- Play es de código abierto , lo que beneficia a los adoptados con mayor seguridad y una base de código revisada constantemente.
Inconvenientes
- Hay muchos complementos geniales en la comunidad, claro, pero su estabilidad y utilidad no siempre están garantizadas.
- Play 2 utiliza el sistema de construcción SBT. Si bien es muy poderoso, algunos han expresado su preocupación por el uso de implícitos, importaciones de comodines y otras excentricidades que hacen que el desarrollo y la integración de la infraestructura sean extremadamente difíciles.
2. Finch
Biblioteca de combinador de Scala para construir servicios HTTP de Finagle
Beneficios
- Finch utiliza bloques funcionales para formar su marco y, como tal, es extremadamente modular .
- Dicho esto, ofrece algunas primitivas HTTP bastante robustas , lo que lo hace ideal para un desarrollo y pruebas rápidos . Por esta razón, Finch es ideal para proyectos pequeños y nuevas empresas.
- Debido a la naturaleza de su estructura, es muy rápido y altamente funcional para una variedad de sistemas.
Inconvenientes
- El principal inconveniente es simplemente el hecho de que está estructurado más para ser una implementación mínima que permite una mayor implementación e iteración del desarrollo.
- No se considera una solución de pila completa.
3. Akka HTTP
Los módulos HTTP de Akka implementan una pila HTTP completa del lado del servidor y del cliente sobre akka-actor y akka-stream.
Beneficios
- El mayor beneficio de Akka HTTP es el hecho de que está integrado con la funcionalidad de Akka . Al igual que Akka, admite una gran cantidad de sistemas que pueden ejecutar comandos paralelos y procesamiento de cálculo avanzado.
- Akka HTTP tiene una gran base de soporte de desarrolladores y colaboradores, todos alineados bajo Lightbend . Además, tiene una excelente documentación y un centro de soporte fácil de entender .
Inconvenientes
- Akka HTTP es más lento que otras implementaciones en esta lista y, como tal, aunque escala de manera eficiente, ya está comenzando detrás del paquete, por así decirlo.
- Lightbend es una gran organización, pero quedarse atascado en un solo proveedor puede ser preocupante para muchas organizaciones. El bloqueo del proveedor puede ser costoso y difícil de romper, por lo que debe considerarse antes de adoptar la solución.
4. Caos
Un marco ligero para escribir servicios REST en Scala
El caos es un marco de Mesosphere . Fue diseñado específicamente para el desarrollo RESTful como una respuesta a las experiencias previas del desarrollador con Dropwizard y Twitter Commons en el espacio de Java Framework. Diseñaron Chaos para que fuera una respuesta más ágil a marcos como Play, afirmando que evitaban Play porque "hace muchas cosas además de REST, lo que agrega un equipaje innecesario".
Caos (griego χάος, khaos) se refiere al estado sin forma o vacío que precede a la creación del universo o cosmos en los mitos griegos de la creación. De manera similar, el Caos (el marco) precede a la creación de un universo de servicios.
Beneficios
- Chaos fue diseñado para ser fácil de usar y familiarizado con los usuarios que utilizan Scala.
- Todas las bibliotecas que utiliza están bien probadas y respaldadas , y ofrecen una gran cantidad de documentación y bases de conocimiento desde las que probar, iterar y desarrollar.
Inconvenientes
- Desafortunadamente, Chaos es esencialmente otro marco liviano que une las bibliotecas y lo llama un día ( Jersey , Guava , Jetty , Jackson y Coda Hale's Metrics ). Si bien hace algunas cosas interesantes, está fundamentalmente limitado por ese enfoque.
- Como dicen los creadores, hace una cosa realmente bien: DESCANSAR . Si no está creando un servicio RESTful, o si está creando un servicio que por diseño tiene que integrar algunas excentricidades, las bibliotecas predeterminadas en Chaos podrían no ser las mejores integraciones que podría pedir.
5. Levante
Un marco web potente y seguro
Beneficios
- El ascensor está diseñado en torno a la seguridad desde su nivel más básico. La ofuscación de valores de forma y el uso de declaraciones preparadas, además de otras técnicas, Lift promueve la seguridad de todo el código en implementaciones estándar.
- La elevación es bastante rápida , hasta el punto de que suele ser su principal atractivo de venta. Las consultas de la base de datos son concisas, las llamadas se manejan muy rápidamente y su compatibilidad con enfoques REST para el manejo de contenido es útil.
Inconvenientes
- La comunidad de Lift es algo pequeña en comparación con las opciones más grandes de esta lista, pero ha existido durante mucho tiempo, por lo que hay una amplia documentación.
- Esa documentación , sin embargo, a menudo está desactualizada y, si no está desactualizada, no siempre es la mejor. Eso no quiere decir que no haya buena documentación, hay tanto bien como mal, lo cual es parte del problema.
- Lift, por su naturaleza, comenzó con bastante estado , y esto todavía está presente en la base de código actual.En consecuencia, escalar el lift es algo complicado y, al pasar a REST, puede causar algunos problemas en los datos que se transfieren, que se serializan y comparten, y cómo se enrutan las solicitudes.
6. BlueEyes
Un marco ligero Web 3.0 para Scala, con arquitectura asincrónica, alto rendimiento, escalabilidad, alta usabilidad y un diseño funcional y componible.
Beneficios
- BlueEyes es altamente escalable y está diseñado específicamente para aplicaciones de alto rendimiento que requieren modularidad.
- BlueEyes se beneficia de ser puramente asincrónico ; en tales situaciones, es una solución sólida, casi construida para tal fin.
- Al ser construida alrededor del concepto de modularidad y del composability , Blueeyes es una gran opción para cualquier aplicación que pudiera tener requisitos y normas específicas para satisfacer.
Inconvenientes
- Por diseño, BlueEyes no tiene soporte para la generación de HTML, CSS o JavaScript en el lado del servidor . Tampoco sirve archivos estáticos. Todo su propósito es simplemente construir servicios RESTful consumidos por los clientes. Si bien esto suena muy bien, si necesita ese tipo de funcionalidad, deberá usar un complemento o una solución externos.
- BlueEyes es completamente asincrónico : si su aplicación requiere una funcionalidad sincrónica, BlueEyes no es una buena opción.
7. Slick
Una moderna biblioteca de consultas y acceso a bases de datos para Scala.
Beneficios
- Slick está diseñado para conectarse fácilmente a bases de datos y fuentes y, como tal, tiene una serie de estructuras de soporte altamente extensibles . Esto lo hace ideal para aplicaciones que se vinculan a muchos puntos de datos de fuentes dispares .
- Asimismo, Slick también ofrece un compilador de consultas altamente extensible, que une las aplicaciones basadas en Slick en una amplia gama de sistemas backend.
Inconvenientes
- Slick tiene muchos beneficios que lo distinguen de otras opciones, pero se centra en un espíritu de diseño asincrónico , que no es necesario en algunas aplicaciones.
- Si bien admite una amplia gama de bases de datos, se ha observado un bajo rendimiento en las implementaciones de MySQL debido a excentricidades en el sistema de base de datos MySQL.
- El gran enfoque en DBIO que permite una amplia integración de bases de datos también es un aspecto negativo importante, ya que genera una curva de aprendizaje sustancial . Como tal, puede que no sea la mejor solución para desarrolladores principiantes o ajustados.
8. Scalatra
Un micro-framework web simple, accesible y gratuito.
Beneficios
- Scalatra es muy eficiente para aplicaciones RESTful y, como tal, es una excelente opción para cualquiera que intente diseñar una aplicación sin estado ligera asíncrona.
- La base de usuarios de Scalatra lo ha empujado a ser bastante popular . Muchos lo consideran un marco de elección casi predeterminado.
- Todo su propósito se enmarca en Sinatra y JVM y, como tal, está preparado para la construcción rápida de servicios web de alto rendimiento .
Inconvenientes
- Scalatra no es muy útil para aplicaciones síncronas y, como otros en esta lista, si ese es su espíritu de elección, Scalatra es una mala opción.
- Scalatra está diseñado para ser un servicio básico , no uno completamente completo, y como tal, funciona muy bien como núcleo, pero sufre un poco como implementación de pila completa.
También hemos compilado listas de marcos web en otros idiomas:
- Vamos
- Node.js
- PHP
- Clojure
Conclusión
Hay tantos frameworks Scala en el ecosistema que es difícil elegir solo 8 para discutir. Independientemente de cuáles sean los requisitos de su proyecto, es muy probable que exista un marco para su situación dada. Si no es así, existe la posibilidad de que exista un marco que le permita formar un soporte modular para esos requisitos; ese es el poder detrás de la extensibilidad en los marcos, lo que permite una mayor manipulación y extensión.
¿Qué piensas? ¿Cuál es tu marco de Scala favorito? Si nos perdimos uno en esta lista, avísenos a continuación, ¡podríamos presentarlo en el futuro!
0 Comentarios
Dejanos tu comentario para seguir mejorando!