¿Cuándo son mejores los marcos con subprocesos que los marcos basados ​​en eventos? (es decir, ¿cuándo Rails es mejor que node.js?)

Entiendo lo que es un marco de subprocesos (Rails, Django, Symfony2, …). Y entiendo lo que es un marco basado en eventos (Node.js, EventMachine, Twisted,...) y por qué es excelente para vivir, chatear, acelerar... Además, no parecen causar problemas en los casos de uso normal. Entonces:

  • ¿Cuáles son los inconvenientes de los marcos basados ​​en eventos?
  • ¿Cuándo debo preferir Rails a Node.js?
  • ¿Por qué no se escriben todos los servidores web nuevos con EventMachine, Twisted o Node.js?
  • ¿Frameworks famosos como Django o Rails se volverán impulsados ​​por eventos o morirán?

preguntado el 22 de mayo de 12 a las 21:05

Ahhh, entonces, en ese caso, necesitamos que el moderador limpie los comentarios obsoletos. -

1 Respuestas

Entonces, ¿dónde están los inconvenientes de los marcos basados ​​en eventos?

  1. Familiaridad. Debido a que la programación web basada en eventos es tan diferente, pasará un tiempo antes de que los programadores se sientan cómodos con ella. Cuando está trabajando en una fecha límite, es más fácil usar lo que sabe, eso funciona.
  2. apoyo bibliotecario. Node tiene una cantidad asombrosa de módulos, pero tiene un largo camino por recorrer para ponerse al día con Ruby y Python. Actualizar: Node ahora tiene más módulos publicados disponibles que Python o Ruby.
  3. Despliegue. El personal de TI está acostumbrado a los marcos de subprocesos. Para aprovechar los marcos basados ​​en eventos, querrá ser asincrónico de arriba a abajo. En este momento puede desarrollar en Node.js, pero ¿podrá implementarlo de manera efectiva o tendrá que administrar sus propios servidores?
  4. Preocupaciones infundadas. Cosas que parecen problemas, pero en realidad no lo son:
    • La programación basada en eventos es mala para las aplicaciones que hacen un uso intensivo de la CPU: La razón es que un cálculo intensivo de la CPU bloquearía el servidor. Esto es estrictamente cierto, pero en la práctica se soluciona generando otro proceso y tratándolo como E/S, por ejemplo, mediante el uso de Node. child_process.exec.
    • La programación basada en eventos es solo para aplicaciones que necesitan alta concurrencia: La razón aquí es que la programación basada en eventos es "más difícil" que la programación de aplicaciones web tradicionales, por lo que no vale la pena hacerlo a menos que tenga una buena razón para hacerlo. Personalmente, no creo que este sea el caso: la programación dirigida por eventos no es más difícil, pero es diferente. En algún momento, una masa crítica de programadores estará familiarizado con el enfoque basado en eventos y esta preocupación desaparecerá.
    • La programación basada en eventos es un lío de devoluciones de llamadas anidadas. Esto puede ser cierto cuando lo aprende por primera vez, pero eventualmente descubrirá cómo estructurar su código de una manera legible.
  5. Documentación. La documentación de Node y sus bibliotecas de terceros es terrible, por lo general consiste en nada más que un README.md. Viniendo del mundo de Python, donde estamos acostumbrados a una excelente documentación, este es un gran inconveniente. Esto está mejorando lentamente (necesitamos más documentación como este).

¿Cuándo debo preferir Rails a Node.js?

  • Cuando usted o su equipo prefieren Ruby a JavaScript.
  • Cuando usted o su equipo no están familiarizados con Node y necesitan hacer el trabajo.
  • Cuando necesite usar la funcionalidad que está en Rails que Node aún no tiene.
  • Cuando necesite implementar en una infraestructura existente basada en Rails.
  • Cuando tiene que convencer a la gerencia de que debe usar Node.js, pero no quiere ser el culpable si el proyecto falla.

¿Por qué todos los servidores web nuevos no están escritos con EventMachine, Twisted o Node.js?

Véase más arriba.

¿Framework famoso como Django o Rails se volverá impulsado por eventos o morirá?

Django y Rails existirán por mucho tiempo. Hay muchas aplicaciones en esos marcos y no hay razón para reescribirlas. Y hay un gran grupo de talentos, que a menudo es una consideración cuando se desarrolla una nueva aplicación web.

(Pero mira esta respuesta de Quora del desarrollador principal de Django, respaldando a Node).

Respondido el 05 de junio de 14 a las 18:06

Como desarrollador de Rails, me gustaría agregar que, en muchos casos, los paquetes npm actualmente son mejores que Ruby Gems, con una tendencia al alza. - Maximiliano Stroh

Un pensamiento sobre el enlace de quora: hay otra característica clave del nodo, que es incluso una ventaja injusta. "Un idioma para gobernarlos a todos". Una vez que esté familiarizado con node.js y js, podrá: escribir aplicaciones frontend/cliente, código del lado del servidor, aplicaciones móviles (p. ej., con phonegap), aplicaciones de escritorio (p. ej., con node-webkit), consultas su base de datos (lenguaje de consulta mongoDBs is javascript) y diviértase con los servicios web y JSON, ya que esto es casi una obviedad cuando usa JS de arriba a abajo. - Maximiliano Stroh

Esta es una muy buena respuesta. Debería repetirse en todos los hilos :) - Richard

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.