Introduction à node.js

Post on 27-May-2015

373 views 0 download

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 !

Transcript of 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

Introduction à node.js

Pierre CouzyResp. relations développeurs

Microsoft

Guillaume LeborgneArchitecte .Net

MCNEXT

gleborgne@mcnext.comhttp://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 ?

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