¿Cómo elijo entre frameworks web asíncronos? Mi grupo de tecnología es bastante independiente del lenguaje y estamos tratando de estandarizar algunas tecnologías.

Hay 10 categorías principales que debe considerar al comparar marcos web:

  1. Aprender : comenzar, aumentar, curva de aprendizaje general.
  2. Desarrollar : enrutamiento, plantillas, i18n, formularios, json, xml, acceso al almacén de datos, web en tiempo real.
  3. Prueba : pruebas unitarias, pruebas funcionales, pruebas de integración, cobertura de prueba.
  4. Seguro : CSRF, XSS, inyección de código, encabezados, autenticación, avisos de seguridad.
  5. Compilación : compilar, ejecutar pruebas, preprocesar contenido estático (sass / less / CoffeScript), paquete.
  6. Implementación : hosting, monitoreo, configuración.
  7. Depuración : depurador paso a paso, perfiladores, registro,
  8. Escala : rendimiento, latencia, concurrencia.
  9. Mantener : reutilización de código, estabilidad, madurez, tipo de seguridad, IDEs.
  10. Compartir : actividad de código abierto, listas de correo, popularidad, complementos, soporte comercial, trabajos.

Echa un vistazo a mi charla Node.js vs Play Framework para obtener un desglose detallado de cómo estos dos marcos se comparan en estas 10 dimensiones:

Cuanto más grande sea el proyecto, más antigua será la base del código, más preferirá la escritura estática.
Al hacer algo rápido y sucio, puedes disfrutar tanto de Python como de Node. Pero para proyectos más grandes o más antiguos, la ayuda y protección adicionales de los sistemas tipo se vuelven muy significativas.
Incluso el IDE de Python más avanzado no le brindará tanta ayuda como la que obtiene de un IDE de Scala. y cuando se trata de refactorizar la verificación del tipo de compilador es realmente esencial, especialmente porque ninguno de nosotros escribe tantas (tan buenas) pruebas como probablemente deberíamos.
Scala tiene menos desarrolladores disponibles, pero en realidad puede ser una ventaja cuando se atraen desarrolladores de primer nivel.
A corto plazo, hace poca diferencia, todas son buenas opciones, a largo plazo claramente voto por Scala.

Los he usado todos y honestamente puedo decir que no importa mucho. Si tuviera que hacerlo hoy, podría elegir Play + Scala. Me encanta Python y lo he usado durante muchos años, pero las aplicaciones JVM son las más fáciles de implementar y administrar y tienen el rendimiento más predecible, los principales dolores que tendrá a medio plazo. Scala también tiene simultaneidad incorporada * sin * sacrificar flexibilidad como la VM de un solo hilo de Node (la JVM también es décadas más madura).

Dicho esto, aunque considero que estos son argumentos relativamente buenos para Scala, no hay diferencia de órdenes de magnitud entre las tres opciones con respecto a ninguno de los puntos que mencioné.

Escribir código asincrónico es difícil, pero .Net 4.5 ha creado una manera fácil de escribir lógica asincrónica. Con solo dos palabras clave, parece síncrono pero funciona de forma asíncrona.

Para los desarrolladores que no son .Net es un poco difícil entrar, pero tiene muchas características avanzadas. Y Entity Framework 6 con funcionalidad asíncrona es una gran ventaja.

Como todos están bastante cerca el uno del otro y parece que las habilidades de su grupo tecnológico apoyarían a cualquiera de ellos, sugeriría que su tranvía construya un prototipo simple en los tres para que pueda compararlos para su propio equipo y situación particular.