lundi 8 avril 2019

Node.js

Node.js


Node.js est un environnement d’exécution JavaScript libre et événementielle fonctionne sur différentes plateformes (Windows, Linux, Unix, Mac OS X, etc).
 Le gestionnaire de paquets pour JavaScript utilisé par node.js, npm, est le plus grand registre software open source au monde.
Node.js installé sur notre ordinateur, va servir d’interface réseau entre la page web de supervision et de contrôle et la cartes Arduino que nous souhaitons piloter donc node.js permet de développer une interface web dans un serveur qui commande directement Arduino.
node.js est utilisé dans les applications (temp réel) c’est-à-dire plusieurs connexions peuvent être gérées de manière concurrente, Le protocole WebSocket est ici en image.
Le protocole WebSocket vise à développer un canal de communication full-duplex sur un socket TCP pour les navigateurs et les serveur web.

Dans notre cas en utilise Node pour transformer les données générer par les capteurs vers l’utilisateur final de notre site web de supervision, et pour savoir l’état des machines.
Il prend les demandes des utilisateurs au même temp, pour cette raison il est très vite, ce serveur est asynchrone c.à.d. il n'attende rien, il n'attende pas l'API du data base pour répondre aux demandes, de plus, n'utilise pas les buffers qui consomment un espace important du mémoire de stockage.

Programmation synchrone
Synchrone : Lorsqu’une tâche est exécutée de manière synchrone, vous attendez la fin d’une tâche avant de passer à une autre.
Exemple :
Une tâche courante pour un serveur Web peut être d'ouvrir un fichier sur le serveur et de renvoyer le contenu au client.
Voici comment PHP ou ASP gère une requête de fichier :
ü  Envoie la tâche au système de fichiers de l'ordinateur.
ü  Attend que le système de fichiers s'ouvre et lit le fichier.
ü  Renvoie le contenu au client.
ü  Prêt à gérer la prochaine requête.

Programmation asynchrone
Node.js utilise la programmation asynchrone.
Asynchrone : Lorsqu’une tâche est exécutée de manière asynchrone, vous pouvez directement passer à une autre tâche avant qu’elle ne soit terminé.
Exemple :
Voici comment Node.js gère une requête de fichier :
ü  Envoie la tâche au système de fichiers de l'ordinateur.
ü  Prêt à gérer la prochaine requête.
ü  Lorsque le système de fichiers s'est ouvert et a lu le fichier, le serveur renvoie le contenu au client.
ü  Node.js élimine l'attente et continue simplement avec la requête suivante.
Node.js exécute une programmation asynchrone, non bloquante, à un seul thread (fil d’exécution), qui est très efficace en termes de mémoire.
Que peut faire Node.js ?
ü  Node.js peut générer du contenu de page dynamique
ü  Node.js peut créer, ouvrir, lire, écrire, supprimer et fermer des fichiers sur le serveur
ü  Node.js peut collecter des données de formulaire
ü  Node.js peut ajouter, supprimer, modifier des données dans notre base de données
Qu'est-ce qu'un fichier Node.js ?
ü  Les fichiers Node.js contiennent des tâches qui seront exécutées sur certains événements
ü  Un événement typique est quelqu'un qui tente d'accéder à un port sur le serveur
ü  Les fichiers Node.js doivent être lancés sur le serveur avant d'avoir un effet
ü  Les fichiers Node.js ont l'extension ".js"

Définition du concept de Socket :
Dans le contexte des logiciels, on peut le traduire par « connecteur réseau » ou « interface de connexion », Il s’agit d’une interface logicielle avec les services du système d’exploitation, grâce à laquelle un développeur exploitera facilement et de manière uniforme les services d’un protocole réseau.
La communication par socket est souvent comparée aux communications humaines. On distingue ainsi deux modes de communication :
Le mode connecté (comparable à une communication téléphonique), utilisant le protocole TCP. Dans ce mode de communication, une connexion durable est établie entre les deux processus, de telle façon que l’adresse de destination n’est pas nécessaire à chaque envoi de données.
Le mode non connecté (analogue à une communication par Gmail), utilisant le protocole UDP. Ce mode nécessite l’adresse de destination à chaque envoi, et aucun accusé de réception n’est donné. 


EmoticonEmoticon