¿Cuáles son las ventajas y desventajas de usar Sinatra vs Express para un servicio web API?

He usado ambos en proyectos separados y juntos. Cada uno puede hacer el trabajo, pero diferentes herramientas son para diferentes tareas y es importante darse cuenta de que un destornillador es para tornillos mientras que un martillo es para clavos.

Ventajas de node.js

  • Las bibliotecas asíncronas permiten realizar operaciones simultáneas más fácilmente (muchas conexiones, escribir en el disco, llamar a apis externas, etc.)
  • puede compartir recursos entre solicitudes de un solo proceso porque express está dirigido por eventos en lugar de por hilos
  • Node.js puede ser más adecuado para procesos de daemon más largos porque el tiempo de ejecución es muy eficiente
  • NPM es un excelente administrador de paquetes

Desventajas

  • las bases de código JavaScript grandes pueden ser difíciles de mantener, pueden requerir personal más calificado para desarrollar y administrar
  • Las bibliotecas comunes de NPM pueden tener normas drásticamente diferentes (diferentes bibliotecas prometedoras, implementaciones de flujo, etc.)
  • Los procesos de múltiples nodos (multinúcleo) requieren un administrador de procesos como pm2, flota, etc.
  • Comunidad de desarrolladores más pequeña que Ruby
  • sigue siendo una plataforma relativamente inmadura

Ventajas de Sinatra

  • muy fácil para los programadores novatos y Ruby es divertido de escribir. Cualquiera que pueda escribir PHP puede escribir Ruby (opinión personal)
  • muchas gemas que ya resuelven la mayoría de los problemas (toneladas de motores de plantillas, ORM de bases de datos, complementos de rack, bibliotecas de autenticación, SDK, etc.)
  • a partir de Ruby 2 (1.9.2) el rendimiento del tiempo de ejecución ha mejorado mucho
  • gran comunidad de desarrollo (Rails tiene una comunidad más grande, pero los beneficios se transfieren a Sinatra)

Desventajas

  • requiere ejecutar Unicorn, Passenger, Thin o algún otro servidor compatible con Rack roscado (no es realmente un problema, pero cada uno tiene sus propias complejidades para experimentar)
  • no maneja cargas de trabajo asincrónicas tan simple como Node
  • no es adecuado para demonios de larga ejecución (rendimiento impredecible con el tiempo, pero se ha mejorado)

Conclusiones

Prefiero usar Sinatra para API de propósito general que realizan operaciones básicas de base de datos y mutación de estado. Cuando surge la necesidad de E / S asincrónicas (como cargas de archivos, sockets web u otras cargas de trabajo de alta concurrencia) prefiero escribir aplicaciones Express especializadas. Sinatra y Express se pueden mezclar a través de http, incluso si están bajo el mismo dominio público gracias a un proxy como nginx.

Use cada uno de manera que maximice lo positivo y minimice lo negativo.

En Launch Academy, creemos que apreciará Sinatra como un marco web ligero que puede realizar tareas de programación esenciales y hacerlas muy bien.

… Continúa aquí: ¿Por qué Sinatra es una herramienta esencial para el desarrollador aspirante de Ruby?