Node.js – Empezando a trabajar

En el primer articulo sobre NodeJs, utilizaba comparaciones para presentar esta herramienta, y aunque sigo creyendo que era una forma de explicarlo; si vamos a empezar a trabajar con el, deberemos ser mas concretos; sobre todo teniendo en cuenta que es algo mucho mas sencillo que lo que la gente piensa.

Que es NodeJs

NodeJs es un comando que nos permite interpretar javascript, y que le aporta una gran cantidad de funciones.

Solo es eso. Entonces, la mayor parte de cosas que debemos aprender para trabajar con NodeJS, son las funciones(o librerías) que aporta….y a programar bien con Javascript.

Realmente, el problema viene que hemos utilizado Javascript en el cliente, para realizar pequeños desarrollos, y hemos pensado que ahí acababa todo… y no es así. Javascript nos permite trabajar con una orientación a objetos bastante buena.

A partir de este articulo, iré presentando las posibilidades de NodeJS, a la vez que comentando como programar con Javascript, como crear objetos, (¿clases?), siempre recordando que todo lo que aprendamos de Javascript lo podemos llevar al cliente; a nuestro navegador.

Javascript en navegadores y en NodeJs

Entonces: Que diferencia hay entre el javascript de nuestro navegador y el de nodeJS?: Todo es Javascript, lo único que cuando programas para el servidor, no tienes acceso a las funciones de manejo del DOM, que implementa normalmente el navegador, ni aquellas otras funciones típicas de navegador o de cliente. Por otra parte, si luego vas a correr tu programa con NodeJS, tienes disponible todas sus librerías…

Ya se que hasta ahora todo es bastante vago, pero quiero presentar el trabajo que vamos a desarrollar en los siguientes artículos, y para eso tengo que establecer lo que se puede hacer, lo que no se puede hacer y el porqué, así como recordaros que vamos a ver una forma de programar Javascript bastante mas completa a que estamos habituados los que solo hacemos “chapuzas” en el lado cliente

NodeJs y las comunicaciones

Y dentro de esta “aclaración” de conceptos, aquí va otro. En el servidor, con NodeJs y javascript podemos programar cualquier cosa. Cierto es que NodeJs nos proporciona un conjunto de librerías que nos ayudan a gestionar la red de una forma altamente eficiente, y,como consecuencia, la tentación de desarrollar un servidor web aparece de forma predominante, pero no es lo único que podemos hacer, cualquier sistema que tenga que gestionar comunicaciones,lo podemos desarrollar con esta herramienta, y cualquier proceso que tengamos que hacer correr en servidor, también queda al alcance de nuestros desarrollos.

Tenemos librerías que nos permiten acceso a Base de datos, a ficheros y directorios locales, acceso remoto a otros sistemas por medio de distintos protocolos, con lo que podemos afirmar que estamos ante una nueva forma de programas (o por lo menos, una nueva visión)

La orientación a eventos

Supongo que ya os estáis haciendo la pregunta de

¿para que necesito NodeJs y javascript?

¿Porqué no utilizar Java o PHP?

Y la respuesta no puede ser taxativa, pero si que puedo deciros que debéis considerarlo. Debéis considerar NodeJs porque está demostrando algunas caracteristicas que lo hacen unico.

Quizas la mas destacada es su orientación a eventos y su gestión de los “callbacks”. Ahora me explico.

Toda la filosofía de NodeJs esta bajo la idea de trabajar de forma asíncrona, de tal forma que cada vez que se requiere un acceso a un periférico lento, se hace la petición, se deja una función esperando su finalización, y el programa continua ejecutándose. Cuando ese periférico lento tenga la información disponible, el sistema llama a la función (callback) que se había dejado preparada para que lo procese.

Voy a intentar plantearlo con un ejemplo. Supongamos que tenemos una aplicación que solicita datos a tres servidores, y cuando los tiene, genera la salida.

Si lo hacemos de forma síncrona:

  1. Inicio
  2. Lanza la petición a servidor 1
  3. Espera finalización de servidor 1
  4. Procesa información de servidor 1
  5. lanza la petición a servidor 2
  6. Espera finalización de servidor 2
  7. Procesa información de servidor 2
  8. Lanza la petición a servidor 3
  9. Espera finalización de servidor 3
  10. Procesa información de servidor 3
  11. Finaliza

Hasta que no consigue los resultados de un servidor, no pasa a la siguiente etapa; si las comunicaciones son lentas, el rendimiento de la aplicacion no sera bueno.

Veamos como cambia esto, si se utiliza la filosofía asíncrona

  1. InicioNodeJs
  2. Lanza la petición a servidor 1
  3. Lanza la petición a servidor 2
  4. Lanza la petición a servidor 3
  5. Espera que lleguen respuesta
  6. Procesa la respuesta recibida
  7. Finaliza

 

 

Como veis, en el primer caso hemos de ir sumando los tiempos que nos cuesta recuperar cada información, mientras que en el segundo caso, podemos realizarlo todo en el tiempo en que tarde la comunicación mas lenta.

Y eso es todo lo que quería explicar acerca de NodeJs; en los siguientes artículos iremos utilizandolo y viendo sus posibilidades, por ejemplo, como crear un miniservidor web;  …quizás entonces quede todo mas claro

Acerca de Miguel Garcia

Programador, Desarrollador web, Formador en distintas areas de informatica y director de equipos multidisciplinares.
Esta entrada fue publicada en Formacion, Javascript, NodeJs y etiquetada . Guarda el enlace permanente.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.