Header Ads Widget

Ticker

6/recent/ticker-posts

8 marcos para construir una API web en Scala


 Scala es un lenguaje poderoso que rápidamente se ha convertido en el favorito de muchos desarrolladores. Sin embargo, un idioma es solo un punto de partida; no todas las funciones estarán cubiertas por el núcleo del idioma. En consecuencia, se han creado algunos marcos increíbles para hacer que Scala sea mucho mejor.

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

Play Framework es un marco Scala de código abierto que se lanzó por primera vez en 2007. Actualmente está desarrollado por Lightbend, Zengularity y su comunidad de desarrolladores de usuarios. La funcionalidad principal del marco se basa en aprovechar JVM y sus bibliotecas relacionadas para formar aplicaciones RESTful. Actualmente es utilizado por algunos sitios web de nombres bastante grandes, como LinkedIn, la plataforma IoT Artik de Samsung y el sitio educativo Coursera. En el momento de redactar este artículo, Play 2.6 es la versión actual de Play, y reemplazó a Play 1 en desarrollo.

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.
Relacionado: Construir una API REST en Java y Scala usando Play Framework

2. Finch

Biblioteca de combinador de Scala para construir servicios HTTP de Finagle

Finch es un sistema modular de primitivas HTTP que funcionan en conjunto para formar API HTTP. Todo el marco se centra en el concepto de componibilidad y, como tal, es un sistema altamente modular y personalizable. “Finch es una capa delgada de bloques básicos puramente funcionales encima de Finagle para crear API HTTP componibles. Su misión es proporcionar a los desarrolladores primitivas HTTP simples y robustas que se acerquen lo más posible a la API completa 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.

Akka HTTP es una implementación de Akka altamente modular y extremadamente poderosa para Scala. Fue creado con el concepto en mente de que el desarrollo ocurre dentro de un "marco", donde las opciones y funcionalidades preformadas guían el desarrollo. Akka HTTP fue creado como "no un marco", proporcionando muchas de las herramientas para el desarrollo sin forzar ninguna elección al desarrollador. Como describe la documentación, “ No es un marco web, sino más bien un conjunto de herramientas más general para proporcionar y consumir servicios basados ​​en HTTP. Si bien la interacción con un navegador, por supuesto, también está dentro del alcance, no es el enfoque principal de Akka HTTP ".

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

Lift es un marco altamente seguro y escalable . Desde el principio, Lift se diseñó específicamente para abordar una multitud de problemas de seguridad, incluida la creación de secuencias de comandos entre sitios y la inyección de código. Por esta razón, Lift ha llegado a ser conocido como una opción altamente segura para las API de Scala altamente seguras. Lift se describe a sí mismo como seguro, centrado en el desarrollador, amigable para el diseñador, escalable, modular e interactivo.

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.

BlueEyes se anuncia a sí mismo como un " marco Web 3.0 para Scala ", y se centra completamente en el rendimiento y la capacidad de composición . Se beneficia enormemente de ser liviano por naturaleza y se ha posicionado para un desarrollo rápido y servicios web ágiles.

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.

Slick es un marco moderno desarrollado en torno a las ideas de consulta y acceso a bases de datos. Fue diseñado para funcionar de manera similar al sistema básico de cobros de Scala, pero con mayor grado de control tanto sobre el acceso en general como sobre la forma en que se transfiere. Como describe Slick Documentation, “ Le permite trabajar con datos almacenados casi como si estuviera usando colecciones de Scala y al mismo tiempo le brinda control total sobre cuándo ocurre un acceso a la base de datos y qué datos se transfieren. Puede escribir las consultas de su base de datos en Scala en lugar de SQL , beneficiándose así de la comprobación estática, la seguridad en tiempo de compilación y la composición de Scala. Slick presenta un compilador de consultas extensible que puede generar código para diferentes backends. "

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.

Scalatra es un marco de código abierto que es funcionalmente un puerto de Sinatra de Ruby. Es un microframework que pretende ser la etapa inicial de una implementación, en lugar de una solución de pila completa. Se lanzó por primera vez en 2009, y grandes organizaciones como LinkedIn lo adoptaron para impulsar sus primeros sistemas API. Según la documentación de Scalatra , “ combina el poder de la JVM con la belleza y la brevedad de Scala, ayudándole a crear rápidamente sitios web y API de alto rendimiento. "

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!

Publicar un comentario

0 Comentarios