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 !
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
Pierre Couzy
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 %
8. • 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
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 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
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
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 ê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
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’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
22. • 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>
23. • 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
24. • Environnement de dev
• Processus de publication
• Débogage
Node.js avec Webmatrix et Visual Studio
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
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
Hinweis der Redaktion
Notation
Intro code / dev
Notation
Exemple de page de code pour le secteur dev
Les blocs de couleurs sont éditables et peuvent reprendre la couleur du type de session qui est donnée.