Event Loop, Entrées, Sorties

  • La raison d'être de Node.js

  • Entrées / Sorties synchrones (bloquantes)

    puts("Enter your name: ");
    var name = gets();
    puts("Name: " + name);
  • Entrées / Sorties asynchrones (non bloquantes)

    puts("Enter your name: ");
    gets(function (name) {
      puts("Name: " + name);
    });
  • Argumentation ci-dessus empruntée à jsconf 2009

Application web

  • Avec attente

    var result = db.query("select..");
    // fais quelque chose avec le résultat
  • Méthode classique (ex: Java) pour limiter les effets de l'attente

    • Chaque programme est exécuté par un thread
    • Coût mémoire
    • Gestion de la concurrence ardue
  • Variante sans attente

    db.query("select..", function (result) {
      // fais quelque chose avec le résultat
    });

    Notion de continuation (ou de promesse)

Les Entrées / Sorties

  • Sont l'essence de la programmation web

  • Javascript dans le navigateur est conçu au dessus d'une boucle d'événements

  • Navigateur (client)

  • Événements utilisateurs

  • Node.js (serveur)

  • Réseau

  • Fichier

  • Processus

  • Node.js utilise une boucle d'événements pour supprimer l'attente

À suivre....

  • Ce module se poursuit avec les transparents suivants :

  • Boucle d'événements

  • EventEmitter

  • Exemple Canonique

  • Du EventEmitter au Stream

  • Synopsis (en 2 temps)

  • Stream requête

  • Stream réponse

  • Exercice 14