Developpez.com

Le Club des Développeurs et IT Pro

Node.js : enfin une intégration native sous Windows

Le framework événementiel en JavaScript arrive sur le Cloud d'Azure

Le 2011-06-23 23:46:51, par danielhagnoul, Rédacteur
Mise à jour du 9 novembre 2011 par Idelways

Microsoft a manifesté en juin dernier son soutien au projet Node.js, le framework JavaScript événementiel et open source (lire ci-devant).
La collaboration de l'entreprise avec Joycent, qui parraine son équipe de développeurs, vient d'aboutir à la version 0.6.0 de Node, qui bénéficie d'un support natif et complet sur la plateforme Windows.

Cette troisième édition stable de Node.js exploite l'API Windows « I/O Completion Ports », pour un traitement optimal des requêtes multiples, asynchrones et non-bloquantes d'entrée/sortie.
Node.js pouvait jusque-là tourner sous Windows, mais était tributaire des API Unix à travers l'environnement Cygwin.

L'architecture du noyau Node a dû être retravaillée pour le rendre compatible avec Windows tout en prenant en compte les performances sur les autres plateformes. Le temps de démarrage des applications sous Linux a été amélioré aux frais d'une légère régression de la vitesse d'écriture, qui devrait être compensée sur le prochain patch.

En faisant l’impasse sur l'émulateur Unix, l'amélioration de la vitesse est sans appel sur ce « premier build de Node.js sous Windows », comme le décrit Microsoft sur son blog d'interopérabilité.

L'équipe de Windows Azure travaille sur le projet « iisnode » qui permettra d'héberger des applications Node sur la plateforme Cloud de Microsoft, dans un futur proche.

Node 0.6 introduit d'autres capacités, comme l'intégration du balancement de charges entre plusieurs processus, un meilleur support de la communication interprocessus entre instances Node, un débogueur en ligne de commande amélioré et l'intégration d'un binding de zlib pour la compression.

Le framework met en outre son moteur JavaScript V8 de la version 3.1 à la 3.6.

Cette version est disponible en téléchargement sur cette page

Source : le blog d'interropérabilité de Microsoft, site officiel de Node

Microsoft soutient Node.js
Et participe au développement de la bibliothèque JavaScript client / serveur

Sur le blog interoperability Claudio Caldato (Principal Program Manager of Interoperability Srategy Team) annonce que Microsoft va participer au développement d'une version Windows de Node.js

Le premier objectif consistera à ajouter à Node une API IOCP Windows performante. Cette phase initiale achevée, un programme exécutable (node.exe) sera disponible sur le site nodejs.org et Node.js fonctionnera alors sur Windows Azure, Windows 2008 R2, Windows 2008 et Windows 2003.

Node est une bibliothèque JavaScript gérant les événements I/0, elle permet l'écriture de programmes de réseau tels que les serveurs web. Node a été créé par Ryan Dahl en 2009, et sa croissance est parrainée par Joyent.

IOCP est un protocole de communication basé sur l'architecture client-serveur, il supporte les sockets, les pipes et les fichiers réguliers. Il offre des capacités asynchrones étendues.

Dahl dit que le support de Windows ne devrait provoquer que des perturbations minimes à l'API de Node.

Sources :
  Discussion forum
10 commentaires
  • dd_angel
    Membre à l'essai
    Pour les personnes qui suivent nodejs, la version exe pour windows est en ligne, d'après le dernier tweet de ryah, cette version est au même point que la version unix/linux
    Enjoy : http://twitter.com/#!/search?q=%23nodejs
  • Idelways
    Expert éminent sénior
    Node.js : enfin une intégration native et complète sous Windows
    Le framework événementiel en JavaScript arrive sur le Cloud d'Azure

    Mise à jour du 9 novembre 2011 par Idelways

    Microsoft a manifesté en juin dernier son soutien au projet Node.js, le framework JavaScript événementiel et open source (lire ci-devant).
    La collaboration de l'entreprise avec Joycent, qui parraine son équipe de développeurs, vient d'aboutir à la version 0.6.0 de Node, qui bénéficie d'un support natif et complet sur la plateforme Windows.

    Cette troisième édition stable de Node.js exploite l'API Windows « I/O Completion Ports », pour un traitement optimal des requêtes multiples, asynchrones et non-bloquantes d'entrée/sortie.
    Node.js pouvait jusque-là tourner sous Windows, mais était tributaire des API Unix à travers l'environnement Cygwin.

    L'architecture du noyau Node a dû être retravaillée pour le rendre compatible avec Windows tout en prenant en compte les performances sur les autres plateformes. Le temps de démarrage des applications sous Linux a été amélioré aux frais d'une légère régression de la vitesse d'écriture, qui devrait être compensée sur le prochain patch.

    En faisant l’impasse sur l'émulateur Unix, l'amélioration de la vitesse est sans appel sur ce « premier build de Node.js sous Windows », comme le décrit Microsoft sur son blog d'interopérabilité.

    L'équipe de Windows Azure travaille sur le projet « iisnode » qui permettra d'héberger des applications Node sur la plateforme Cloud de Microsoft, dans un futur proche.

    Node 0.6 introduit d'autres capacités, comme l'intégration du balancement de charges entre plusieurs processus, un meilleur support de la communication interprocessus entre instances Node, un débogueur en ligne de commande amélioré et l'intégration d'un binding de zlib pour la compression.

    Le framework met en outre son moteur JavaScript V8 de la version 3.1 à la 3.6.

    Cette version est disponible en téléchargement sur cette page

    Source : le blog d'interropérabilité de Microsoft, site officiel de Node
  • Gordon Fowler
    Expert éminent sénior
  • danielhagnoul
    Rédacteur
    Cette bibliothèque est déjà bien connue et elle a retenu l'attention de beaucoup de personnes, dont l'équipe de développement de jQuery.

    Une remarque que l'on rencontre souvent, la sécurité, mais Node.js est encore jeune (v0.48) et les progrès annoncés importants.

    Voir : http://nodejs.org/
  • SurferIX
    Membre chevronné
    Si t'as jamais programmé de serveur socket IOCP, je comprends que tu ne voies pas où est le problème.
    Si t'as déjà programmé - ou essayé - un serveur socket basé sur IOCP, je comprends que tu voies où est le problème.
  • sekaijin
    Expert éminent
    bonjour

    je suis déjà intervenu dans des discussions sur le sujet.

    je trouvais que node.js devais en plus de proposer une implémentation d'une plateforme js de normaliser la façon de faire.

    je n'ai pas suivis de près ce qu'il se faisait sur le projet depuis quelques temps mais j'espère que ça se rapproche toujours plus de http://www.commonjs.org/

    posséder plusieurs interprète natif amène une saine concurrence à partir du moment ou le code développé pour une est portable à peut de frais vers une autre. sinon on a à faire à une cacophonie et il n'en ressort généralement rien de fameux.

    voici la liste des implémentations qui respecte + ou - les spec Commonjs
    http://www.commonjs.org/impl/
    que M$ s'intéresse à ce projet et une bonne chose. M$ à déjà un moteur js natif mais ses objets embarques sont ceux de VB/C# l'approche et complètement différente.

    un oublie faites une recherche sur le net de "server-side javascript"
    A+JYT
  • student_php
    Membre habitué
    Bonjour,

    J'ai découvert récemment cette bibliothèque, j'ai vu qu'on pouvait créer un serveur http et faire quelques petits programmes sympas.

    J'ai pour projet de développer un équivalent à skype, en site web (pour le fun), j'aimerais que l'utilisateur n'ait aucun programme à installer sur son ordinateur, node.js vous semble t-il être une bonne solution ?

    J'ai vu qu'on pouvait transférer des fichiers audio, mais qu'en est t-il des performances ? J'ai vu qu'il était possible d'établir un protocole UDP, est-il possible de sélectionner un périphérique (le micro) et d'établir une connexion entre un client et un serveur avec node.js ?

    Merci !
  • kdmbella
    Expert éminent
    personnellement je connaissais pas cette bibliothèque c'est la première fois que j'en entend parlé mais une chose est certaine si Microsoft s'y met alors c'est qu'il y a du jus et du bon
  • SurferIX
    Membre chevronné
    Envoyé par danielhagnoul 
    [SIZE="4"]
    ...
    Le premier objectif consistera à ajouter à Node une API IOCP Windows performante.

    ...

    Waaaargh bonne chance au gars qui développe ça

    J'ai passé un an à réussir à développer un échange client serveur en socket non bloquante spécifique Windows via les ports de complétion (IOCP) et le code qui en sort est une monstruosité sans nom, pratiquement pas maintenable, à cause du principe non bloquant des attentes (il faut se faire sa propre liste d'octets reçus, qui est bien sûr globale), et euh bon j'arrête là, rien que la fonction qui est le coeur, WSARcv(), est affreuse. Tenez, amusez vous, lisez la documentation officielle de Microsoft. Rien que l'exemple qu'ils donnent est illisible et presque pas maintenable, alors imaginez si on veut faire du vrai code
    Ah ces bons sockets bloquants des familles, merci Linux

    Bonne chance aux développeurs donc
  • galien
    Membre averti
    @SurferIX
    Franchement je vois pas trop où est le problème.