![Page 1: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/1.jpg)
WWW.LINAGORA.COMWWW.LINAGORA.COM
Javascript côté serveur : la révolution Node.jsSimon CourtoisArchitecte logiciel
![Page 2: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/2.jpg)
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
![Page 3: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/3.jpg)
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
![Page 4: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/4.jpg)
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
![Page 5: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/5.jpg)
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
![Page 6: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/6.jpg)
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/');
![Page 7: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/7.jpg)
7
Exemple de code : un chat en 14 lignes de code
![Page 8: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/8.jpg)
8
Performances : 100 000 requêtes, 1000 concurrentes
![Page 9: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/9.jpg)
9
Performances : 1 000 000 requêtes, 20 000 concurrentes
![Page 10: Javascript côté serveur : la révolution Node.js](https://reader035.vdocuments.mx/reader035/viewer/2022073101/5478b25fb4af9fc3158b45f4/html5/thumbnails/10.jpg)
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