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
Pierre CouzyResp. relations développeurs
Microsoft
Guillaume LeborgneArchitecte .Net
MCNEXT
[email protected]://www.mcnext.com
180 collaborateurs Depuis 2007 à Paris - Lyon - Genève
Stand 97 – Zone bleu foncé
BusinessIntelligence Talk
Biz
NETDot Share
Point
Microsoft
100 %
La mode et l’informatique sont cycliques…
Les langages « has been » il y a 5 ans
• Ruby / Python• C++• Javascript• …
Node.js est un environnement d’exécution JavaScript
Basé sur V8 (le moteur JavaScript de Chrome)
Node.js
demoNODE.EXE
• 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
• Multi plateforme (Unix, Mac, Windows, …)
• Scalable et monothread• Basé sur une boucle d’événements • I/O non bloquantes
Caractéristiques
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
• 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 ?
• Liste non exhaustive disponible ici :– https://github.com/joyent/node/wiki/Projects
,-Applications,-and-Companies-Using-Node
• Azure mobile services !
Exemples d’applications réalisées avec Node
demoHELLO WORLD, SAUCE NODEMon premier serveur web
$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
Source: http://blog.csdn.net/tianyue168/article/details/6656370
Gestion des IO bloquantes par l’OS
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
• 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
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 »
• 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
https://npmjs.org/
• Express• Socket.io• Underscore• Jade• Async• …
Modules courants
demoAZURE CLIENT
• 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>
• 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
• Environnement de dev• Processus de publication• Débogage
Node.js avec Webmatrix et Visual Studio
demoCRÉER, DEBUGGER, PUBLIER UNE APPLICATION NODE
Questions / Réponses
Merci !
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
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