web-dev-qa-db-fra.com

Pouvons-nous dire que node.js est un serveur Web?

J'ai trouvé que je confondais entre framework web et serveur web.

Apache is a web server.

Tornado is a web server written in Python.

Nginx is a web server written in C

Zend is a web framework in php

Flask/Bottle is a web framework in Python

RoR is a web framework written in Ruby

Express is a web framework written in JS under Node.JS

Pouvons-nous dire que node.js est un serveur Web ??? Je suis tellement confus entre serveur web/framework.

Si en quelque sorte, node.js est une sorte de serveur Web et non de cadre Web (Express le fait), pourquoi devons-nous placer tout le fichier node.js au-dessus du serveur Nginx dans la pratique? ?? Question on SO

Qui peut aider???

Trousse

58
Kit Ho

Serveur Web

Le serveur Web peut faire référence au matériel (l'ordinateur) ou au logiciel (l’application informatique) qui permet de fournir un contenu qui peut être consulté via Internet. 1

La fonction principale d’un serveur Web est de fournir des pages Web sur le demande aux clients. Cela signifie la livraison de documents HTML et de tout contenu supplémentaire pouvant être inclus dans un document, tel que des images, feuilles de style et scripts.

Un serveur Web est la base de la livraison des demandes/pagess aux clients/utilisateurs sur Internet

Cadre Web

Un framework d'application Web est un framework logiciel conçu soutenir le développement de sites Web dynamiques, d'applications Web et de services Web. Le cadre vise à réduire les frais généraux associés avec des activités communes réalisées dans le développement Web. Par exemple, beaucoup les frameworks fournissent des bibliothèques pour l'accès à la base de données, en utilisant des modèles cadres et la gestion de session, et ils favorisent souvent la réutilisation du code.

Une infrastructure Web utilise un serveur Web pour transmettre les demandes au client, mais ce n'est pas le serveur Web.

Node.js

Node.js est une plate-forme construite sur le runtime JavaScript de Chrome pour facilement construire des applications réseau rapides et évolutives. Node.js utilise un modèle d'E/S non bloquant et basé sur les événements qui le rend léger et efficace, parfait pour les applications temps réel gourmandes en données qui fonctionnent à travers les appareils distribués.

Mais encore une fois, vous pouvez également créer des applications CLI, donc vous devriez le voir plutôt comme une plate-forme pour écrire des programmes javascript à exécuter sur votre serveur (ordinateur) en utilisant Javascriptlangage de programmation au lieu de simplement dans le navigateur. comme au début. Je pense que vous pourriez le voir comme Javascript++ ??

Vous pouvez également écrire un serveur Web avec node.js, comme vous pouvez le constater sur la page d'accueil de node.js. Au début, Ryan avait dit que vous pourriez placer Nginx devant node.js en raison de la stabilité du projet. Le projet était et est toujours assez jeune. Nginx est un serveur Web éprouvé qui continuera à fonctionner pendant que node.js peut se bloquer. Là encore, beaucoup d'utilisateurs n'utilisent que node.js pour cela.

40
Alfred

Je dirais que Node.js est un environnement d'exécution ou un moteur d'exécution.

La meilleure définition que j’ai trouvée jusqu’à présent provient probablement d’un article de Rob Gravelle intitulé "An Intro to Node.js" :

Node.js fait partie de l'environnement d'exécution et de la bibliothèque de composants permettant de créer des applications réseau à l'aide de JavaScript côté serveur. Il utilise le moteur d'exécution JavaScript de Chrome pour exécuter le code JS directement sans avoir besoin du sandbox du navigateur.

L’Encyclopédie PCMAG.COM fournit également la définition suivante de "moteur d’exécution":

Logiciels dont certaines applications dépendent pour s'exécuter sur l'ordinateur. Le moteur d'exécution doit être en cours d'exécution sur l'ordinateur pour que l'application puisse s'exécuter. Il fournit les routines et les fonctions courantes requises par les applications et convertit généralement le programme, qui se trouve dans un langage intermédiaire et intermédiaire, en langage machine.

De même, le article Wikipedia intitulé "Système d’exécution" déclare:

Un système d'exécution (également appelé système d'exécution, environnement d'exécution ou simplement runtime) implémente le comportement de base d'un langage informatique, qu'il s'agisse d'un langage compilé, d'un langage interprété, d'un langage incorporé spécifique à un domaine ou invoqué via une API. comme c'est pthreads.

... Un système d'exécution peut implémenter le comportement de tâches telles que dessiner du texte à l'écran ou établir une connexion Internet. Il agit également généralement en tant que couche d'abstraction qui masque la complexité ou les variations des services offerts par le système d'exploitation.

Existe-t-il des environnements d’exécution (ou même des plates-formes logicielles) comme Node.js? Je suppose que JRE est un bon exemple d'un tel environnement. Node.js et JRE - ils ont beaucoup en commun. Ils ont tous (une sorte de) machine virtuelle, une bibliothèque de classes et un framework pour implémenter de nombreux types d’applications, y compris celles de la CLI.

Donc, pour en revenir à votre question, pouvons-nous dire que Node.js est un serveur Web? Changeons "Node.js" pour "JRE" et répondons si JRE est un serveur Web. La réponse est non.

Tout ce que nous pouvons dire, c'est que Node.js est un environnement d'exécution que l'on peut utiliser pour implémenter un serveur Web. Eh bien, c'est mon avis.

18
ezpresso

Dire node est un serveur Web, c'est comme dire que javacript ne peut s'exécuter que dans un navigateur. Vous pouvez le dire, mais il peut également faire beaucoup d'autres choses.

NodeJS

  1. [Environnement d'exécution Javascript (moteur Chrome v8) + nœud Bibliothèque/APIs] 
  2. Peut créer un serveur Web, peut également être décrit comme un Serveur d'application

Express

  1. Cadre Web (utilise le serveur Web de nodejs pour servir les fichiers)

Nginx

  1. Serveur Web

En production, la plupart des gens utilisent Nginx devant le serveur de noeud en tant que serveur proxy pour gérer les fichiers statiques et divers autres éléments tels que la mise en cache, le routage, etc.

12
Esakki Krishnan

Je classerais node.js en tant que structure de serveur, avec des packages disponibles qui pourraient l’utiliser en tant que serveur HTTP, WebSocket ou votre propre protocole personnalisé, etc.

La raison pour laquelle vous pourriez placer nginx devant votre serveur node.js est liée à l'équilibrage de la charge HTTP et au proxy inverse sur plusieurs ordinateurs exécutant votre application serveur.

11
cmv

Le serveur Web est quelque chose qui sert ses clients via Internet via des protocoles et Web Framework est ce qu'on appelle un compilateur. Il comprend toutes les bibliothèques requises, les règles de syntaxe, etc.

Et node.js est un framework !!

1
Mad coder.

Non, c'est un environnement d'exécution ... ce n'est donc pas un serveur Web, mais il n'en a pas besoin pour fonctionner. Donc probablement c'est pourquoi cela pourrait être déroutant. Il peut fonctionner de manière autonome sans nécessiter de serveur Web, car il s'agit d'un environnement d'exécution lui-même mais, encore une fois, ce n'est pas un serveur Web.

0
stuckedoverflow

Comment je ressens ta douleur! 

Comme beaucoup, j’ai eu du mal à comprendre l’essence de Node.js parce que la plupart des gens n’écrivent/ne parlent que de la partie de Node qu’ils trouvent utile - et la partie qu’ils trouvent intéressante est généralement un avantage secondaire de Node plutôt que sa principale. objectif. Je dois dire que je pense que c'est fou pour les gens de dire que Node n'est qu'un runtime JavaScript. L'utilisation de JavaScript par Node - et sa sélection du moteur d'exécution de la V8 - sont simplement signifie pour finir}, les meilleurs outils pour résoudre le problème que les développeurs de Node voulaient résoudre.

Le principal objectif de Node était de rendre la gestion des événements utilisateur dans une application Web plus efficace. Donc, Node est massivement utilisé sur le back-end d'une application web. La gestion des événements exige que quelque chose écoute sur la machine serveur pour ces événements. Un serveur http doit donc être configuré pour acheminer chaque événement vers son script de gestionnaire approprié. Le nœud utilise JavaScript pour la gestion des événements car JavaScript comporte des fonctions de rappel: cela permet de suspendre une tâche jusqu'à ce que le résultat d'une tâche dépendante soit renvoyé. Très peu de langues disposent de cette fonctionnalité et celles qui en disposent ne disposent peut-être pas d'un interprète aussi efficace que le moteur d'exécution V8 de Google. La plupart des développeurs Web connaissent JavaScript, il n'y a donc pas d'apprentissage linguistique supplémentaire avec Node. De plus, les fonctions de rappel permettent de placer toutes les tâches utilisateur sur un seul thread sans appliquer de blocage explicite aux tâches nécessitant un accès à la base de données ou au système de fichiers. Et c’est ce qui conduit à une efficacité d’exécution supérieure de Node sous une utilisation concurrente intensive - ce qui était le but principal de son développement.

Pour aider les utilisateurs de Node à écrire rapidement le code final, les développeurs de Node ont également organisé le référentiel NPM (Node Package Manager): il s'agit d'un ensemble de packages de script open source, pilotés par l'utilisateur, destinés à diverses fonctions standard et personnalisées. Tous les projets de nœuds permettent l'importation de packages NPM dans un projet via la commandeinstallation npmétablie. 

Les demandes des utilisateurs gérées par le nœud seront des choses telles que la validation des champs d’inscription/connexion/déconnexion/formulaire et diverses requêtes de base de données requises par l’application Web seront envoyées au port du nœud. Autres types de requêtes utilisateur, par exemple pour afficher une autre page Web, téléchargez CSS/JS/images, etc., pourrait également être envoyé à Node. Mais ils ne sont normalement pas envoyés au port du nœud, mais le navigateur continue à les envoyer au (x) port (s) par défaut sur la machine du serveur sur laquelle le serveur Web les traitera. 

Ainsi, en pratique, Node est normalement un serveur mais ne remplace que quelques-uns des fonctions du programme du serveur Web . D'autres utilisations de Node exploitent simplement l'une ou l'autre des ses caractéristiques, par exemple le moteur V8. Mais ce ne sont vraiment que des utilisations de Node par produits.

0
Trunk

Je pense que le problème est que la terminologie de "serveur Web" ou "serveur d'applications Web" est dominée par le monde JEE et par des produits qui ne sont pas aussi modulaires que le monde Javascript actuel, qui peuvent être combinés plus ou moins. librement.

Je ne vois pas pourquoi une technologie capable de servir des applications complexes sur le Web devrait être appelée {not} _ _ serveur Web ou serveur d'applications Web!

Si vous combinez, disons Nuxt en tant qu'interface utilisateur, avec Feathers en tant que serveur - vous aurez un serveur servant une API REST et une interface utilisateur restituée côté serveur!

Bien sûr, vous pourriez (mal) utiliser cela pour servir du contenu statique - je l'appellerais alors un serveur Web, ou vous pourriez l'utiliser pour créer et servir une application complète - puis je l'appellerais un serveur d'applications Web.

Ce sont les caractéristiques ou les qualités combinées qui résument pour servir un but - non? - Des fonctionnalités telles que la stabilité, l’évolutivité et autres sont un élément à mon humble avis qui sera ajouté à ces technologies, au fil du temps. Pour le moment, ils sont encore assez neufs.

0
cslotty