tipos software servidor ejemplos descargar aplicaciones scala akka spray finagle

scala - software - middleware web



¿Cuáles son las diferencias entre las opciones de middleware de Scala? (2)

Personalmente comencé a usar spray hace mucho tiempo y probé todo lo demás que había para Scala. Si bien Scala, spray, akka, informe y scalaz ciertamente tienen un poco de curva de aprendizaje, una vez que comienzas a indagar y realmente aprendes cómo se supone que debes usar las tecnologías, tienen sentido y de inmediato vi los beneficios especialmente para el tipo del trabajo que estoy haciendo en este momento.

Personalmente, creo que no hay nada que se oponga a la pulverización para la creación de servidores, aplicaciones de reposo, clientes http y cualquier otra cosa que desee. Lo que me gusta del spray es que se construyeron con akka en mente. Pudo haber sido un proyecto muy temprano cuando comencé a usarlo, pero la arquitectura tenía sentido. Esos tipos sabían lo que estaban haciendo en términos de explotar los beneficios de usar un modelo de actor y no tener operaciones de bloqueo.

Mientras que los actores pueden tomar un tiempo para acostumbrarse, me gustan. Han hecho que mis sistemas sean muy escalables y baratos de usar, ya que no necesito hardware pesado como en el pasado. Además, el spray tiene ese DSL de enrutamiento por aspersión, por lo que hacer una api de descanso es relativamente simple, siempre y cuando sigas las reglas ... no bloquees. Eso, por supuesto, significa no ir y obtener el cliente HTTP de apache commons para hacer las solicitudes de los clientes de la API o los actores, ya que volverá a los modelos de bloqueo.

Hasta ahora estoy muy contento con el spray, typesafe y akka. Sus modelos simplemente se prestan para construir sistemas muy resistentes que vuelven por sí solos si algo sucede y adoptas un enfoque a prueba de fallas. La única carne que tengo con spray (y no es culpa de spray) es la maldita compatibilidad con IDE para el enrutamiento DSL. Desprecio absolutamente a Eclipse y siempre he sido un usuario de IDEA. Cuando comencé a usar el complemento Scala, todo parecía estar bien. Entonces mi enrutamiento dsl evolucionó naturalmente en bestias mucho más grandes. Algo sobre la forma en que IDEA analiza ese código hace que se cague en los pantalones cada vez que encuentra algo con enrutamiento o sin forma. Es hasta el punto en que es inutilizable (escribo 2-3 letras y tengo que esperar 5 minutos para recuperar el control).

Por lo tanto, para cualquier enrutamiento por aspersión o código sin formato pesado, enciendo emacs con ensime, ensime-sbt y scala-mode2. Ahora, si solo pudiera obtener una biblioteca de Cassandra con la calidad de astyanax y construirla con una arquitectura más no bloqueante.

Nota: Lamentablemente, esta pregunta se cerró, pero estoy tratando de mantenerla si alguien más viene con la misma pregunta.

He estado buscando una buena solución para desarrollar un servicio en Scala que se sitúe entre los dispositivos móviles y los servicios web existentes.

La lista actual de opciones viables son:

Probablemente haya más opciones por ahí. ¿Cómo decide uno cuál usar? ¿Cuáles son los rasgos (disculpe el juego de palabras ;-) de una buena elección de middleware de Scala? Por un lado, me gustaría ir a Akka, porque es parte de la pila TypeSafe Scala, pero por otro lado, algo como Finagle tiene un rico conjunto de bibliotecas y hace que la plomería sea tan fácil. El spray se ve agradable y simple de usar.

Cualquier consejo, conocimiento o experiencia sería muy apreciado. Estoy seguro de que alguien debe tener alguna experiencia con algunos de estos que no les importará compartir.

ACTUALIZAR:

Me encantaría que se volviera a abrir esta pregunta. Una buena respuesta a esta pregunta ayudará a los nuevos Scalateers a evitar las trampas relacionadas.

ACTUALIZACIÓN 2:

Estas son mis propias experiencias desde que hice esta pregunta:

Finagle : usé Finagle para un proyecto y es sólido como una roca.

Spray : en mi último proyecto, estoy usando Spray y estoy muy contento. Las últimas versiones se basan en Akka 2 y puede ejecutarlo directamente con la biblioteca Spray-can que elimina la necesidad de un servidor web. Spray es un conjunto de bibliotecas, en lugar de un marco y es muy modular. El Learn about Spray: REST on Akka video ofrece una excelente visión general, y este blog en Cakesolutions muestra un enfoque de desarrollo y una arquitectura realmente agradables.

ACTUALIZACIÓN 3:

La vida se mueve bastante rápido. Si no te paras a mirar de vez en cuando, podrías perderte. - Ferris Bueller

En estos días, la elección se ha simplificado. En mi humilde opinión, Spray ha ganado la batalla. Se está integrando en Akka para convertirse en el próximo Akka HTTP. He estado usando Spray ahora en múltiples proyectos y honestamente puedo decir que es el software mejor y más fantástico que he encontrado.

Esto no responde a la pregunta inicial, pero al menos da alguna indicación sobre por qué Spray parece ser la mejor opción en la mayoría de los casos. Es extremadamente flexible, no bloqueante y muy estable. Tiene bibliotecas del lado del cliente y del lado del servidor y un gran kit de prueba. Además, eche un vistazo a estas estadísticas para tener una idea sobre el rendimiento: Web Framework Benchmarks


Here puede encontrar una gran lista de recursos de Scala con una breve descripción de todas las alternativas que enumeró.

Desde mi propia experiencia, utilizo Scalatra y es pequeño, simple y efectivo para cosas como mapeo uri y llamadas a servicios web.