Segreti e virtù di Node.js

Segreti e virtù di Node.js

La tecnologia Node.js introduce delle innovazioni enormi nel campo della tecnologia web, soprattutto perchè riduce la quantità di codice da scrivere e perchè sovverte uno dei dettami delle comunicazioni client-server, ovvero il fatto che Javascript possa eseguirsi solo sui client. Con Node.js, è infatti consentito l’utilizzo server-side del linguaggio in questione, con enormi possibilità sul piano applicativo e pratico.

Fammi capire meglio…

Di base, Node.js permette di costruire applicazioni basate su un framework asincrono e event-driven, cioè guidato dagli eventi: questo significa che può ad esempio essere aperta una o più connessioni su una porta, e lasciarla in sospeso (cioè senza consumare risorse del server) finchè non avverrà effettivamente la chiamata al servizio – con un click, con una chiamata a funzione o con qualsiasi altro avvenimento, o event, equivalente.

Il vantaggio principale di questo approccio, contrapposto a quello basato su eventi concorrenti o multi-thread (Apache), sta nel fatto che permette di gestire in modo più snello grosse quantità di traffico in arrivo su un sito, un’app o un servizio. In pratica chi ha inventato questa tecnologia aveva in mente di snellire le grosse quantità di richieste che arrivano a grossi picchi periodici, ad esempio, che sono tipicamente difficili da gestire con server classici e che portano a blocchi, errori o rallentamenti di vari ordini e grado.

Tra l’altro, il suo utilizzo non impone l’uso di un singolo processo alla volta: mediante Node.js si possono gestire veri e propri cluster e bilanciare così al meglio le risorse hardware che si hanno a disposizione.

Facciamo un esempio

L’esempio classico di Node.js riguarda la facilità con cui si può aprire una connessione HTTP sulla porta 1337, e lasciarla in ascolto per un tempo indeterminato.

const http = require('http');
const hostname = '127.0.0.1';
const port = 1337;

http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
}).listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

A differenza di quanto avviene in PHP, che è un interprete di comando classico (al massimo multi-thread), Node.js permette di sfruttare la compilazione Just-In-Time asincrona basata sugli eventi I/O, con l’ausilio dell’engine V8 di Chrome.

Hosting per Node.js: ancora non troppo diffusi ma…

Tale innovazione pone – al di là della curva di apprendimento del modello, neanche troppo ripida – un problema di ordine pratico, qualora ci servisse su un servizio di hosting: gli ambienti condivisi ordinari non vanno bene per lo scopo, e quelli più avanzati vanno comunque configurati a dovere. In molti casi le soluzioni di hosting di questo tipo non hanno avuto molto successo e sono sparite dalla circolazione, e soltanto poche (purtroppo) ad oggi sono sopravvissute.

Nonostate tutto, alcuni hosting che danno la possibilità di disporre di Node.js, per la cronaca, sono ad esempio Google Cloud (a pagamento) e Cloudno.de (free).


Ti piace questo articolo?

0 voti

Su Trovalost.it puntiamo sulla qualità dei contenuti da quando siamo nati: la tua sincera valutazione può aiutarci a migliorare ogni giorno.