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 Couzy
Resp. relations développeurs
Microsoft
Guillaume Leborgne
Architecte .Net
MCNEXT
gleborgne@mcnext.com
http://www.mcnext.com
180 collaborateurs
Depuis 2007 à Paris - Lyon - Genève
Stand 97 – Zone bleu
foncé
Business
Intelligence
Talk
Biz
NET
Dot 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
NODE.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
HELLO WORLD, SAUCE NODE
Mon 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
AZURE 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
CRÉ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.comhttp://aka.ms/generation-app
http://aka.ms/evenements-
developpeurs
http://aka.ms/itcamps-france
Les accélérateurs
Windows Azure, Windows Phone,
Windows 8
http://aka.ms/telechargements
La Dev’Team sur MSDN
http://aka.ms/devteam
L’IT Team sur TechNet
http://aka.ms/itteam

Introduction à node.js

  • 1.
    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
  • 2.
    Introduction à node.js PierreCouzy Resp. relations développeurs Microsoft Guillaume Leborgne Architecte .Net MCNEXT gleborgne@mcnext.com http://www.mcnext.com
  • 3.
    180 collaborateurs Depuis 2007à Paris - Lyon - Genève Stand 97 – Zone bleu foncé Business Intelligence Talk Biz NET Dot Share Point Microsoft 100 %
  • 4.
    La mode etl’informatique sont cycliques…
  • 5.
    Les langages «has been » il y a 5 ans • Ruby / Python • C++ • Javascript • …
  • 6.
    Node.js est un environnement d’exécutionJavaScript Basé sur V8 (le moteur JavaScript de Chrome) Node.js
  • 7.
  • 8.
    • L’objectif deNode.js est de proposer un moyen simple de réaliser des applications réseau capables de monter en charge Buts de conception
  • 9.
    • Multi plateforme(Unix, Mac, Windows, …) • Scalable et monothread • Basé sur une boucle d’événements • I/O non bloquantes Caractéristiques
  • 10.
    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
  • 11.
    • 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 ?
  • 12.
    • Liste nonexhaustive 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
  • 13.
    HELLO WORLD, SAUCENODE Mon premier serveur web
  • 14.
    $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
  • 15.
  • 16.
    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
  • 17.
    • Peut êtredé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
  • 18.
    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 »
  • 19.
    • Points d’extensionde 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
  • 20.
    https://npmjs.org/ • Express • Socket.io •Underscore • Jade • Async • … Modules courants
  • 21.
  • 22.
    • Node.exe • Intégrationdans 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>
  • 23.
    • Dans AzureWeb Sites – Repose également sur IISnode – Points de personnalisation : • Package.json • Web.config – Changer sa version de node Node.js et Windows Azure
  • 24.
    • Environnement dedev • Processus de publication • Débogage Node.js avec Webmatrix et Visual Studio
  • 25.
  • 26.
  • 27.
    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
  • 28.
    Formez-vous en ligne Retrouveznos évènements Faites-vous accompagner gratuitement Essayer gratuitement nos solutions IT Retrouver nos experts Microsoft Pros de l’ITDéveloppeurs www.microsoftvirtualacademy.comhttp://aka.ms/generation-app http://aka.ms/evenements- developpeurs http://aka.ms/itcamps-france Les accélérateurs Windows Azure, Windows Phone, Windows 8 http://aka.ms/telechargements La Dev’Team sur MSDN http://aka.ms/devteam L’IT Team sur TechNet http://aka.ms/itteam

Notes de l'éditeur

  • #2 Notation
  • #3 Intro code / dev
  • #28 Notation
  • #29 Exemple de page de code pour le secteur dev
  • #30 Les blocs de couleurs sont éditables et peuvent reprendre la couleur du type de session qui est donnée.