image

Si vous suivez le petit monde du JavaScript, vous avez forcément entendu parler de Node.JS, un projet qui surfe sur la vague du renouveau de JavaScript en tant que langage de programmation.

Si vous ne connaissez pas Node, en quelques mots, c’est un framework de développement d’applications serveur développé par un monsieur Ryan Dahl chez Joyent. Ce framework a la particularité de prendre une approche complètement asynchrone pour la gestion des entrées-sorties, partant du principe que ce modèle est plus performant et plus efficace que le classique modèle multithreadé pour gérer de forts volumes. Encore plus original, le framework s’appuie sur le moteur V8 et se programme donc entièrement en JavaScript.

Historiquement développé sur Linux, Node est actuellement activement en cours de portage sur Windows, par Ryan Dahl lui-même et une aide active de Microsoft. Là où il fallait auparavant déployer tout un outillage d’émulation des API POSIX, comme Cygwin, la version “native” de Node est constitué d’un simple exécutable, node.exe! Le portage est aujourd’hui à l’égal de la version Linux en termes de performances:

image

Et qui dit Windows, dit bien entendu Windows Azure, il est donc désormais très simple de déployer Node.JS sur Windows Azure!

Nous allons créer une petite application toute simple dans Visual Studio:

image

J’ai donc créé une solution de type Cloud, avec un seul Worker Role à l’intérieur. J’ai copié l’exécutable node.exe dans un sous-dossier (histoire de ranger), et j’ai ajouté deux autres fichiers: app.js, qui contient notre application Node, et runNode.cmd qui va nous permettre de lancer le serveur.

Voyons tout d’abord l’application, il s’agit du classique “Hello World'” de Node, tel que vous pouvez le trouver sur nodejs.org:

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('NodeJS.exe running on Windows Azure!');
}).listen(8080);

Et maintenant, le fichier CMD, d’une très grande complexité!

cd /d "%~dp0"
node\node.exe app.js

Et voilà, c’est globalement tout ce que l’on a à faire. N’oublions quand même pas d’ouvrir le port à l’extérieur, dans les propriétés du Worker Role:

image

… et vous voilà avec un superbe serveur Node.JS dans Windows Azure!

Vous pouvez lancer la solution dans l’émulateur local, et la déployer telle quelle en production.