permalink

0

Que es Node.js? #nodejs

Veamos de que se trata Node.js donde nace y como esta cambiando el mundo de los servidores básados en una arquitectura orientada a eventos.

Logo Node.js

Node.js Hispano

Node.js creado por Ryan Dahl en febrero de 2009, este servidor trabaja con el lenguaje de programación JavaScript y como núcleo en su arquitectura cuenta con el motor JavaScript V8 ( recordemos que V8 fue creado por Google para su navegador Chrome ).

Ryan Dahl - Creador de Node.js

Ryan Dahl - Creador de Node.js

Como sabemos JavaScript fue creado para funcionar en los navegadores pero su rendimiento y características únicas lo llevaron del lado cliente hacia el servidor, con esto Node.js se convierte en un entorno de ejecución y una librería, para hacer uso de estas opciones debemos instalar Node.js y lo tenemos disponible para las plataformas Linux, OS X y Windows. Node.js posee influencias de varios sistemas entre los principales tenemos Even Machine creado en Ruby y Twisted creado en Phyton.

Servidor HTTP y Net de Ejemplo

var http = require('http');

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
}).listen(8000);

console.log('Server running at http://127.0.0.1:8000/');
var net = require('net');

net.createServer(function (stream) {
    stream.write('hello\r\n');

    stream.on('end', function () {
        stream.end('goodbye\r\n');
    });

    stream.pipe(stream);
}).listen(7000);

La arquitectura de Node.js tiene como base a V8, las librerias libeio & libev ademas de DNS y OpenSSL, como capa superior tenemos a node bindings. Las capas 1 y 2 estan desarrolladas enteramente en C/C++ ( ~8000 lineas de código ), como capa superior cuenta con las librerias estandar de node desarrollada con JavaScript ( 2000 lineas de código ).

Arquitectura de Node.js

Arquitectura de Node.js

En su diseño Node.js tiene como objetivos ser Single Threaded (Un único Thread), Event Loop ( Basado en eventos esto lo vuelve asincrónico ) y Non blocking I/O ( elimina lo tiempos de espera generados al esperar la respuesta en las tareas de entrada y salida en el procesador ).

Todos las novedades y nuevas versiones podemos obtenerlas en nodejs.org.