28
Donnez votre avis ! Depuis votre smartphone, sur : http://notes.mstechdays.fr De nombreux lots à gagner toutes les heures !!! Claviers, souris et jeux Microsoft… Merci de nous aider à améliorer les TechDays http://notes.mstechdays.fr

Introduction à node.js

Embed Size (px)

DESCRIPTION

Microsoft a mis node.js au premier plan en l'intégrant dans Windows Azure. Quelles sont les forces de ce langage ? Comment fonctionne-t-il ? Quelles sont les alternatives ? Session 100% technique !

Citation preview

Page 1: Introduction à node.js

Donnez votre avis !Depuis votre smartphone, sur : http://notes.mstechdays.fr

De nombreux lots à gagner toutes les heures !!!

Claviers, souris et jeux Microsoft…

Merci de nous aider à améliorer les TechDays

http://notes.mstechdays.fr

Page 2: Introduction à node.js

Introduction à node.js

Pierre CouzyResp. relations développeurs

Microsoft

Guillaume LeborgneArchitecte .Net

MCNEXT

[email protected]://www.mcnext.com

Page 3: Introduction à node.js

180 collaborateurs Depuis 2007 à Paris - Lyon - Genève

Stand 97 – Zone bleu foncé

BusinessIntelligence Talk

Biz

NETDot Share

Point

Microsoft

100 %

Page 4: Introduction à node.js

La mode et l’informatique sont cycliques…

Page 5: Introduction à node.js

Les langages « has been » il y a 5 ans

• Ruby / Python• C++• Javascript• …

Page 6: Introduction à node.js

Node.js est un environnement d’exécution JavaScript

Basé sur V8 (le moteur JavaScript de Chrome)

Node.js

Page 7: Introduction à node.js

demoNODE.EXE

Page 8: Introduction à node.js

• L’objectif de Node.js est de proposer un moyen simple de réaliser des applications réseau capables de monter en charge

Buts de conception

Page 9: Introduction à node.js

• Multi plateforme (Unix, Mac, Windows, …)

• Scalable et monothread• Basé sur une boucle d’événements • I/O non bloquantes

Caractéristiques

Page 10: Introduction à node.js

Excellent pour :• Communications

temps réel (sockets, polling, …)

• Services réseaux sur mesure (proxies, …)

• API web (services json)

• Sites web

Inadapté pour :• Usage intensif du CPU

(transcodage vidéo, calculs mathématiques, …)

Usages

Page 11: Introduction à node.js

• Applications réseau (et donc web) hautement scalable– Gère plusieurs centaines de milliers de

connexions simultanées avec un CPU et quelques Mo de RAM

• Même langage de programmation côté client et côté serveur– Mêmes formats & types pour la donnée

Pourquoi tout ce buzz ?

Page 13: Introduction à node.js

demoHELLO WORLD, SAUCE NODEMon premier serveur web

Page 14: Introduction à node.js

$query = 'SELECT * FROM users WHERE id = ?';$users = query($query, array($id)); //on fait attendre le thread X ms…Console.log($users); $query = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50';$activities = query($query); // on fait attendre le thread X ms…Console.log($activities); $query = 'SELECT count(points) as total, user_id FROM activities LIMIT 50';$leader_board = query($query); // on fait attendre le thread X ms…Console.log($ leader_board );

I/O Bloquantes

Page 15: Introduction à node.js

Source: http://blog.csdn.net/tianyue168/article/details/6656370

Gestion des IO bloquantes par l’OS

Page 16: Introduction à node.js

var query = 'SELECT * FROM users WHERE id = ?';db.query(query, [userId], function (err, results) {  console.log(results);}); var query = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50';db.query(query, function (err, results) {  console.log(results);}); var query = 'SELECT count(points) as total, user_id FROM activities LIMIT 50';db.query(query, function (err, results) {  console.log(results);});

I/O non bloquantes

Page 17: Introduction à node.js

• Peut être déroutant si on n’est pas habitué à ces mécanismes

• Attention au « callbackhell »

• Modèle de callbacks de Node :

maFonction(arguments, function (erreur, donnees) {   if (erreur) {      // Gestion des cas d’erreur   }      // traitement des données.});

Asynchronie gérée par des callbacks

Page 18: Introduction à node.js

var userQuery = 'SELECT * FROM users WHERE id = ?';var activityQuery = 'SELECT * FROM activities ORDER BY timestamp LIMIT 50';var leaderBoardQuery = 'SELECT count(points) as total, user_id FROM activities LIMIT 50'; db.query(userQuery, [id], function (userErr, userResults) {   db.query(activityQuery, function (activityErr, activityResults) {      db.query(leaderBoardQuery, function (leaderBoardErr, leaderBoardResults) {          // Do something here       });   });});

Attention au « callbackhell »

Page 19: Introduction à node.js

• Points d’extension de Node• Basés sur CommonJS• Gérés avec l’utilitaire npm• Plusieurs dizaines de milliers de

module existants !• Dépendances gérées à travers le

fichier package.json

Les modules

Page 20: Introduction à node.js

https://npmjs.org/

• Express• Socket.io• Underscore• Jade• Async• …

Modules courants

Page 21: Introduction à node.js

demoAZURE CLIENT

Page 22: Introduction à node.js

• Node.exe• Intégration dans IIS avec le module

IISNode

Node pour Windows

<configuration><system.webServer>

<handlers><add name="iisnode"

path="server.js"verb="*"modules="iisnode" />

</handlers> </system.webServer></configuration>

Page 23: Introduction à node.js

• Dans Azure Web Sites– Repose également sur IISnode– Points de personnalisation : • Package.json• Web.config

– Changer sa version de node

Node.js et Windows Azure

Page 24: Introduction à node.js

• Environnement de dev• Processus de publication• Débogage

Node.js avec Webmatrix et Visual Studio

Page 25: Introduction à node.js

demoCRÉER, DEBUGGER, PUBLIER UNE APPLICATION NODE

Page 26: Introduction à node.js

Questions / Réponses

Merci !

Page 27: Introduction à node.js

Donnez votre avis !Depuis votre smartphone, sur : http://notes.mstechdays.fr

De nombreux lots à gagner toutes les heures !!!

Claviers, souris et jeux Microsoft…

Merci de nous aider à améliorer les TechDays

http://notes.mstechdays.fr

Page 28: Introduction à node.js

Formez-vous en ligne

Retrouvez nos évènements

Faites-vous accompagner gratuitement

Essayer gratuitement nos solutions IT

Retrouver nos experts Microsoft

Pros de l’ITDéveloppeurs

www.microsoftvirtualacademy.com

http://aka.ms/generation-app

http://aka.ms/evenements-developpeurs

http://aka.ms/itcamps-france

Les accélérateursWindows Azure, Windows Phone,

Windows 8

http://aka.ms/telechargements

La Dev’Team sur MSDNhttp://aka.ms/devteam

L’IT Team sur TechNethttp://aka.ms/itteam