Scala framework para un servidor Rest API? [cerrado]


Estamos pensando en mover nuestro servidor API Rest (está dentro del servicio web, en Symfony PHP) a Scala por varias razones: velocidad, sin sobrecarga, menos CPU, menos código, escalabilidad, etc. No sabía Scala hasta hace varios días, pero he estado disfrutando de lo que he estado aprendiendo estos días con el libro de Scala y todas las publicaciones y preguntas del blog (¡no es tan feo!)

Tengo las siguientes opciones:

  • construir el servidor API Rest desde cero
  • use una pequeña web de Scala framework like Scalatra
  • use Lift

Algunas cosas que tendré que usar: solicitudes HTTP, salida JSON, MySQL (datos), OAuth, Memcache (caché), Registros, Cargas de archivos, Estadísticas (tal vez Redis).

¿Qué recomendarías?

Author: Jim Ferrans, 2010-09-09

7 answers

En ningún orden particular:

 82
Author: oluies,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-28 10:12:35

Voy a recomendar Sin filtrar. Es un framework web idiomático que hace las cosas "a la manera de Scala" y es muy hermoso.

 22
Author: Max A.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-21 04:32:38

Echa un vistazo a Xitrum (soy su autor), proporciona todo lo que enumeraste. Su doc es bastante extenso. De README:

Xitrum es un framework web Scala asincrónico y clusterizado y servidor web sobre Netty y Hazelcast:

  • La anotación se usa para rutas URL, en el espíritu de JAX-RS. No tienes que declarar todas las rutas en un solo lugar.
  • Async, en el espíritu de Netty.
  • Las sesiones se pueden almacenar en cookies o agrupadas Hazelcast.
  • Caché en proceso y en clúster, no necesita servidores de caché separados.
  • Comet en proceso y agrupado, no necesita un servidor Comet separado.
 15
Author: Ngoc Dao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-22 01:46:37

Añadiría dos opciones más: akka con soporte JAX-RS incorporado, y simplemente usando JAX-RS directamente (probablemente la implementación de Jersey). Aunque podría decirse que es menos "Scala-y" que otros (confiando en anotaciones para enlazar parámetros y rutas), JAX-RS es una alegría de usar, resolviendo limpiamente todos los problemas de codificación de servicios web con una huella mínima. No lo he usado a través de akka, anticiparía que es excelente allí, obteniendo una escalabilidad impresionante a través de su implementación basada en la continuación.

 7
Author: Dave Griffith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-09 17:36:55

Eche un vistazo a Finch, una biblioteca combinadora de Scala para crear servicios HTTP Finagle. Finch le permite construir endpoints HTTP complejos a partir del número de bloques básicos predefinidos. Al igual que los combinadores de analizadores, los puntos finales de Finch son fáciles de reutilizar, componer, probar y razonar.

 4
Author: Vladimir Kostyukov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-01 18:10:54

Todas las buenas respuestas hasta ahora. Un punto a favor de Lift es su RestHelper , que puede hacer que sea bastante fácil escribir métodos API cortos y elegantes. Además, todas las otras cosas que desea hacer deben ser bastante sencillas de implementar en Lift. Dicho esto, Memcache podría no ser necesario.

 3
Author: pr1001,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-09-09 17:56:17

Un poco tarde en la escena, pero definitivamente recomendaría usar Bowler framework para la creación de REST API. It small, al punto y soporte automático de conversión de clase de caso!

 2
Author: cracked_all,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-28 11:10:04