2010-06-04 21 views
7

Estoy tratando de entender las diferencias entre algunos de los nuevos frameworks de programación web que ahora existen, a saber, Node.js, Rails y Sinatra.Podría alguien darme un ejemplo de la aplicación node.js

¿Podría alguien darme un ejemplo de las aplicaciones que funcionarían mejor en cada uno de los marcos?

Es decir, ¿cuál es una aplicación que sería más adecuada para Node.js en comparación con Rails o Sinatra y qué aplicación es la más adecuada para Rails en comparación con Node.js y Sinatra, etc. ...

Respuesta

10

Sinatra y Rails son ambos frameworks web. Proporcionan abstracciones comunes de desarrollo web, como enrutamiento, creación de plantillas, servicio de archivos, etc.

node.js es muy diferente. En esencia, node.js es una combinación de V8 y bibliotecas de eventos, junto con una biblioteca estándar orientada a eventos. node.js es mejor en comparación con EventMachine para Ruby.

Por ejemplo, aquí es un servidor HTTP basado en eventos, utilizando EventMachine:

require 'eventmachine' 
require 'evma_httpserver' 

class MyHttpServer < EM::Connection 
    include EM::HttpServer 

    def post_init 
    super 
    no_environment_strings 
    end 

    def process_http_request 
    response = EM::DelegatedHttpResponse.new(self) 
    response.status = 200 
    response.content_type 'text/plain' 
    response.content = 'Hello world' 
    response.send_response 
    end 
end 

EM.run{ 
    EM.start_server '0.0.0.0', 8080, MyHttpServer 
} 

Y aquí es un ejemplo Node.js:

var http = require('http'); 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello world'); 
}).listen(8000); 

La ventaja de este enfoque es que el servidor doesn 'bloquear en cada solicitud (se pueden procesar en paralelo)!

node.js tiene todo su standard library built around the concept of events, lo que significa que es mucho más adecuado para cualquier problema relacionado con E/S. Un buen ejemplo sería un chat application.

Sinatra y Rails son marcos web muy refinados, estables y populares. node.js tiene algunos frameworks web pero ninguno de ellos tiene la calidad de ninguno de estos en este momento.

Fuera de las opciones, si necesitaba una aplicación web más estable, optaría por Sinatra o Rails. Si necesitaba algo más altamente escalable y/o diverso, me gustaría ir a node.js

Cuestiones relacionadas