Node.js ou servlets? [fermé]

10

J'ai beaucoup entendu parler du langage côté serveur Javascript, c'est-à-dire Node.js, et j'ai vu de nombreuses comparaisons en faveur de Node.

Je ne comprends pas ce qui le rend meilleur ou plus rapide, ni comment il se rapporte même à quelque chose d'aussi mature que les servlets Java.

Mais les servlets sont construits sur un langage de programmation multithread par opposition à Node.js. Alors, comment node.js peut-il être plus rapide?

Si supposons que les utilisateurs de 1000 Ko demandent des enregistrements de base de données, Node.js ne devrait pas être plus lent que les servlets.

Les servlets n'ont-ils pas une meilleure sécurité que Node.js?

log N
la source
Les processus et les threads peuvent être utilisés pour mettre à l'échelle n'importe quelle application pour une utilisation multicœur. Vous n'avez pas besoin des deux.
Raynos
@Raynos La fonctionnalité C liée ne peut-elle pas également être enfilée? J'ai juste pris le rôle de JS comme messager non bloquant de mise en file d'attente automatique pour remettre les choses à des choses de niveau inférieur, mais je n'ai toujours pas encore mis les pattes sur Node.
Erik Reppen

Réponses:

12

Vous mélangez des pommes et des oranges, en quelque sorte.

Les servlets (ou héritant de HttpServlet) vous permettent d'accéder aux paramètres de demande HTTP et de répondre avec quelque chose, via (ou par-dessus) une implémentation de serveur HTTP existante.

Bien qu'utilisant Javascript comme langue, Node.js est à un niveau inférieur à cela. Cela commence par l' implémentation effective du serveur HTTP. Vous pouvez néanmoins continuer à y faire plus de choses de haut niveau, telles que des applications Web.

À propos du multi-threading, ce n'est pas nécessaire. Les serveurs Node.js ne sont pas plus rapides en raison du multithread, ils sont plus rapides car ils ne bloquent pas les demandes d'E / S, ils peuvent donc continuer à les pomper dans la file d'attente, tout en faisant d'autres choses. Ils ne fonctionnent que lorsqu'il y a du travail à faire - ils ne l'attendent pas - et cela entraîne une sérieuse amélioration des performances, comme il s'est avéré.

En ce qui concerne les requêtes de base de données, il s'agit vraiment plus de contraintes dans le modèle de base de données et l'API que de client.

En ce qui concerne la sécurité - c'est vraiment un sujet différent, et est finalement entre les mains de tout développeur, pas tellement dans la bibliothèque.

Yam Marcovic
la source
3
Servlet 3 prend en charge Asynch IO comme Node
jiggy
3
jiggy - Il y a une grande différence entre soutenir quelque chose et être conçu à partir de rien pour quelque chose. L'asynchronie des nœuds est la dernière.
Jack
1
@Yam Marcovic Je ne comprends toujours pas ce que vous entendez par « ils ne bloquent pas sur les demandes IO » Même dans le JEE un fil serait géré de manière indépendante qui ne serait pas arrêter une autre demande à être servi. Comme un nouveau thread est créé par demande. Suis-je logique?
Oliver