1. Javascript côté serveur : la révolution Node.js
Simon Courtois
Architecte logiciel
scourtois@linagora.com
WWW.LINAGORA.COM
2. Programmation classique
var data = file.read('file.txt')
var data = doSomething(data)
file.write('file2.txt', data)
Fil 1
Fil 2
Fil 3
Fil 4
Fil 5
Fil 6
Fil 7
Fil 8
2
3. Programmation classique
Fil 1
Fil 2
Fil 3
Fil 4
Fil 5
Fil 6
Fil 7
Fil 8
● Threads / processes perpétuellement en attente
● Coût (performances et mémoire) de création d'un thread / process
● Effondrement des performances lorsque la concurrence est forte
3
4. Programmation asynchrone
var data = file.read('file.txt'), function(data) {
var data = doSomething(data)
file.write('file2.txt', data)
}
● Appels de fonction non bloquants : rendent la main immédiatement puis
appellent une fonction de callback une fois leur tâche terminée.
● Multi-process / multi-thread inutile : tout se gère depuis une boucle
événementielle
● Pas de lock à gérer, ni de parallélisme à gérer explicitement : tout est fait
dans le dos du développeur
● Effondrement du dispositif si un ou plusieurs appels sont bloquants
Node.js apporte une couche de gestion des entrées / sorties entièrement
non bloquante
4
5. Javascript côté serveur
● Le meilleur langage pour
bien appréhender la
programmation
asynchrone : méthodologie
identique à celle des
appels AJAX.
● Maturité du langage :
CommonJS, ECMAScript 5,
etc.
● Hautes performances
5
6. Exemple de code : un serveur web simple
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
6