javascript côté serveur : la révolution node.js
DESCRIPTION
Présentation donnée lors du salon Solutions Linux 2011.Animée par Simon Courtois, Architecte logicielTRANSCRIPT
WWW.LINAGORA.COMWWW.LINAGORA.COM
Javascript côté serveur : la révolution Node.jsSimon CourtoisArchitecte logiciel
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
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
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
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
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 World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
7
Exemple de code : un chat en 14 lignes de code
8
Performances : 100 000 requêtes, 1000 concurrentes
9
Performances : 1 000 000 requêtes, 20 000 concurrentes
WWW.LINAGORA.COMWWW.LINAGORA.COM
Merci de votre attention
Contact : LINAGORA – Siège social80, rue Roque de Fillol
92800 PUTEAUXFRANCE
Tél. : 0 810 251 251 (tarif local)Fax : +33 (0)1 46 96 63 64Mail : [email protected]
Web : www.linagora.com