0% ont trouvé ce document utile (0 vote)
5 vues75 pages

Ecosystème NodeJS

Le document présente l'écosystème NodeJS pour l'année universitaire 2024-2025, en se concentrant sur le traitement asynchrone, le modèle I/O non-bloquant, et le modèle guidé par les événements. Il explique comment NodeJS utilise un modèle mono-thread avec des techniques comme setTimeout, setImmediate, et EventEmitter pour gérer les événements. Enfin, il aborde la création de serveurs web et les composants nécessaires pour leur fonctionnement.

Transféré par

belhadjessghaiertaha
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
0% ont trouvé ce document utile (0 vote)
5 vues75 pages

Ecosystème NodeJS

Le document présente l'écosystème NodeJS pour l'année universitaire 2024-2025, en se concentrant sur le traitement asynchrone, le modèle I/O non-bloquant, et le modèle guidé par les événements. Il explique comment NodeJS utilise un modèle mono-thread avec des techniques comme setTimeout, setImmediate, et EventEmitter pour gérer les événements. Enfin, il aborde la création de serveurs web et les composants nécessaires pour leur fonctionnement.

Transféré par

belhadjessghaiertaha
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.

UP WEB

2. Ecosystème NodeJS

Année universitaire
2024-2025
Plan
1. Traitement Asynchrone
2. Modèle I/O non-bloquant (Non-blocking I/O model)
3. Modèle guidé par les événements (Event-driven Model)
4. Call Stack et Event loop
5. Création de serveurs en Node JS

2
1. Traitement Asynchrone

Exemple visualisé : [Link]

4
1. Traitement Asynchrone
▪ setTimeout() est la fonction la plus utilisé lorsqu’on
cherche à exécuter du code asynchrone sans bloquer les
autres fonctions en cours d’exécution.
▪ Cette fonction accepte 2 paramètres
• La fonction à exécuter de manière asynchrone (qui sera
ajoutée à la file d'attente de l'event loop) ;
• Le délai, avant d’exécuter la fonction (en millisecondes).

5
1. Traitement Asynchrone
▪ Il existe d'autres méthodes un peu moins répandues par rapport à la
fonction setTimeout().
▪ setImmediate: Prend un seul paramètre (la fonction à exécuter) et
permet d’exécuter ce paramètre en mode synchrone.
▪ setInterval : elle fonctionne exactement comme setTimeout, elle
exécute la fonction passé en paramètre en boucle pour une période.
Pour arrêter l'exécution en boucle il suffit de passer le retour de cette
fonction à la fonction « clearInterval »
▪ clearInterval: Permet d'arrêter l’exécution de la fonction setInterval.
▪ clearTimeout: Permet d’annuler l'exécution asynchrone de la fonction
setTimeout().

6
2. Non-blocking I/O model
● Node JS est Monothread, mais il utilise un modèle Non bloquant

7
2. Non-blocking I/O model
[Link] :Single Thread
•Apache est multithread • [Link] est mono-thread

8
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Synchrone

9
2. Non-blocking I/O model
Simulation: Handling Requests

Server
Mode Synchrone

DB

Client 1

Client 2

10
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Synchrone

DB
Server
Client 1

Client 2

11
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Synchrone

DB R1
Server
Client 1

Client 2

12
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests

Server
Mode Synchrone

DB

Client 1

Client 2

13
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Synchrone

DB

Client 1
Server

Client 2

14
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Synchrone

DB
Server
Client 1

Client 2

15
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Synchrone

DB R2
Server
Client 1

Client 2

16
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Synchrone

DB

Client 1
Server

Client 2

17
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

18
2. Non-blocking I/O model
Simulation: Handling Requests

Server
Mode Asynchrone

DB

Client 1

Client 2

19
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

DB R1
Server
Client 1

Client 2

20
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

DB R1
Server
Client 1

Client 2

21
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

DB R1
Client 1
Server

Client 2

22
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

DB R1
Server
Client 1
R2

Client 2

23
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

DB R1
Client 1
R2

Client 2
Server

24
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

DB R1
Server
Client 1
R2

R3
Client 2

25
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

DB
Server
Client 1
R2

R3
Client 2

26
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone
Server

DB

Client 1
R2

R3
Client 2

27
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

DB
Server
Client 1

R3
Client 2

28
Client 3
2. Non-blocking I/O model
Simulation: Handling Requests
Mode Asynchrone

DB

Client 1
Server

R3
Client 2

29
Client 3
2. Non-blocking I/O model

30
2. Non-blocking I/O model

31
2. Non-blocking I/O model

32
2. Non-blocking I/O model
Simulation : Asynchrone-Mode non-bloquant

33
2. Non-blocking I/O model
Simulation : Asynchrone-Mode non-bloquant

34
2. Non-blocking I/O model
Simulation : Asynchrone-Mode non-bloquant

35
2. Non-blocking I/O model
Simulation 2 : Asynchrone-Mode non-bloquant

36
3. Event-driven Model
▪ Plusieurs traitements en NodeJS sont basés sur les
événements
▪ Les événements proviennent généralement des
processus, opérations réseau, fichiers…
▪ La classe EventEmitter est au cœur de
l'architecture événementielle asynchrone en
NodeJS

37
3. Event-driven Model
Exemple 1
const EventEmitter = require ('events');
const emitter= new EventEmitter();

//register a listener
[Link]('messageLogged', function(){
[Link]('Listener called');
});
//raise an event
[Link]('messageLogged');

38
3. Event-driven Model
Exemple 1
const EventEmitter = require ('events');
event
const emitter= new EventEmitter();
emitter

//register a listener
[Link]('messageLogged', function(){
[Link]('Listener called');
});
//raise an event
[Link]('messageLogged');
register
callback
event event
function
listener 39
3. Event-driven Model
▪ Plusieurs classes dans NodeJS sont des ‘Event Emitter’ : [Link],
[Link] ...
event
emitter
Exemple 2
[Link]('connection', (stream) => {

[Link]('someone connected!');

});

register event
callback
event
function
listener
40
4. Call Stack et Event loop
Exemple 1

41
4. Call Stack et Event loop
Exemple 1

42
4. Call Stack et Event loop
Exemple 1

43
4. Call Stack et Event loop
Exemple 1

44
4. Call Stack et Event loop
Exemple 1

45
4. Call Stack et Event loop
Exemple 2

46
4. Call Stack et Event loop
Exemple 2

47
4. Call Stack et Event loop
Exemple 2

48
4. Call Stack et Event loop
Exemple 2

49
4. Call Stack et Event loop
Exemple 2

50
4. Call Stack et Event loop
Exemple 2

51
4. Call Stack et Event loop
Exemple 2

52
4. Call Stack et Event loop
Exemple 2

53
4. Call Stack et Event loop
Exemple 3

54
4. Call Stack et Event loop
Exemple 3

55
4. Call Stack et Event loop
Exemple 3

56
4. Call Stack et Event loop
Exemple 3

57
4. Call Stack et Event loop
Exemple 3

58
4. Call Stack et Event loop
Exemple 3

59
4. Call Stack et Event loop
Exemple 3

60
4. Call Stack et Event loop
Exemple 3

61
4. Call Stack et Event loop
Exemple 3

62
4. Call Stack et Event loop
Exemple 3

63
4. Call Stack et Event loop
Exemple 3

64
4. Call Stack et Event loop
Exemple 3

65
4. Call Stack et Event loop
Exemple 3

66
4. Call Stack et Event loop
Exemple 3

67
4. Call Stack et Event loop
Exemple 3

68
4. Call Stack et Event loop
Exemple 3

69
4. Call Stack et Event loop
Exemple 3

70
4. Call Stack et Event loop
Exemple 3

71
4. Call Stack et Event loop
Exemple 3

72
Exemples
▪ La boucle d'événements(Event Loop) commence à exécuter des
appels asynchrones une fois que la pile d'appels(Call Stack) est
vide. Le mélange de code sync et async a un ordre d'évaluation
distinct, le code synchrone est toujours exécuté avant l'async.

Donner l’ordre d'exécution de résultat (sans tapper ou exècuter le code):


1.
[Link]("X")
setTimeout(_ => [Link]("Y"), 0)
setImmediate(_ => [Link]("Z"))
[Link]("W")

2. [Link]("1")
setTimeout(_ => [Link]("2"), 0)
setTimeout(_ => [Link]("3"), 0)
[Link]("4")
73
Exemples
3. [Link]("P")

const timeout1 = setTimeout(_ => [Link]("Q"), 100)


const timeout2 = setTimeout(_ => [Link]("R"), 0)

clearTimeout(timeout1)

setImmediate(_ => [Link]("S"))

[Link]("T")

74
5. Création de serveurs en NodeJS
Objectif: Créer un serveur Web
● Au niveau des composants matériels: un serveur web est un
ordinateur qui stocke les fichiers qui composent un site web (par
exemple les documents HTML, les images, les feuilles de style CSS,
les fichiers JavaScript) .
● Cet ordinateur est connecté à Internet et est généralement

accessible via un nom de domaine tel que [Link]

● Au niveau des composants logiciels: un serveur web contient


différents fragments qui contrôlent la façon dont les utilisateurs
peuvent accéder aux fichiers hébergés. On trouvera a minima un
serveur HTTP. Un serveur HTTP est un logiciel qui comprend les URL
et le protocole HTTP(GET ,POST). 75
Références
1. [Link]
2. [Link]
3. [Link]
single-threaded-non-blocking-async-have-callback-queue-and-
event-loop-7f0051ca322a
4. [Link]
event-driven-architecture-223292fcbc2d/

Vous aimerez peut-être aussi