5 alternatives à Node.js - et est-ce que cela a du sens





Node.js n'est pas un produit parfait, il a des inconvénients (en utilisant JS?), Certains d'entre eux traînaient depuis un stade précoce de développement en raison de décisions erronées prises par Ryan Dahl, qui ont été brièvement rappelées dans l'article node.js en est frustré . Comme c'est souvent le cas, dans certains cas, il est difficile voire impossible de trouver une alternative à ce système, en particulier dans le secteur des entreprises. Mais si vous n'avez pas besoin de prendre en charge un code hérité volumineux, qui fournira aux programmeurs du travail pendant de nombreuses années, vous pouvez alors rechercher d'autres solutions. Vous pouvez lire sur le "tueur Node.js" dans l'article mentionné ci-dessus, certains autres seront abordés dans cet article.



ASP.NET







"Un vieil ami vaut mieux que deux nouveaux". ASP.NET a une longue histoire. La technologie Active Server Pages, qui constituait la base des services ASP.NET, a été développée à la fin du siècle dernier. Bien sûr, le temps de développement n'est pas toujours une bonne chose, mais la longue durée de vie du produit en dit long. Bien qu'ASP.NET ait un principe de fonctionnement complètement différent, ce n'est pas seulement un environnement pour exécuter du code de programme et connecter des modules, c'est une plate-forme pour créer des services Web; il est souvent utilisé pour résoudre des problèmes similaires à Node.js.



Si Node.js est le fruit d'une petite équipe et dans sa forme la plus élémentaire est un environnement pour lancer des programmes JS en dehors du navigateur avec accès aux E / S, alors ASP.NET est un produit typique d'une grande entreprise. Il contient initialement un grand nombre de bibliothèques par défaut qui vous permettent immédiatement de commencer à développer. Node se développe grâce à la communauté des développeurs, et donc le système doit d'abord être équipé de tous les modules nécessaires, qui sont tout simplement incroyables. Le plus simple "Hello world!" on Node fera glisser plusieurs milliers de fichiers dans le système. De plus, la quantité ne se transforme pas toujours en qualité, parfois il semble que les développeurs soient même prêts à entasser «i ++» dans un module séparé, qui sera ensuite téléchargé un million de fois, et une mise à jour ou une suppression soudaine de ce paquet causera de sérieux problèmes de compatibilité ou plantera npm.Dans ASP, la sécurité et les mises à jour sont surveillées par l'écosystème Microsoft, les bibliothèques écrites par lui et d'autres grandes entreprises sont soigneusement vérifiées pour les erreurs et les problèmes de compatibilité ...



Malgré de nombreuses différences, l'une des principales est une approche différente de la distribution des calculs. Dans Node.js, tout était fait dans un seul thread, mais en utilisant des E / S asynchrones.In Node.js, all was done in a single thread, but using asynchronous I / O. ASP fonctionnait à l'origine dans le multithreading et les E / S synchrones. La première option montre de grandes performances lorsque les services nécessitent un échange très intensif, mais au prix d'une certaine complication du code. Dans les dernières versions des produits, ces différences sont corrigées, dans Node.js et ASP.NET, le modèle async \ await est utilisé.



JS a beaucoup grandi au cours de son développement, mais il reste un langage sans typage fort et perd face au C #, qui a été développé à l'origine sous l'influence directe du C ++, qui, dès les premiers jours, avait un typage fort et une POO. La conséquence en est que C # est plus puissant et plus cohérent, et ne nécessite pas de modules complémentaires comme TS. Mais d'un autre côté, JS, en raison de sa simplicité, est plus demandé lors de la programmation de microservices, ce qui ne nécessite pas de capacités C # complexes.



Outre les différences dans les langages de programmation utilisés, ces plates-formes ont des idéologies différentes. Dans ASP.NET, beaucoup est prédéfini, il offre tout prêt à l'emploi, à commencer par la structure des fichiers, tout en commençant à travailler avec Node.js, il faut tout choisir soi-même, ce qui donne beaucoup de flexibilité, mais complique le développement. Mais ASP.NET dispose de puissants outils de débogage, de test et de refactorisation.



La seule chose qu'ASP.NET est sérieusement inférieure à Node.js est la facilité de déploiement. Node n'a besoin que d'un moteur et d'un proxy ou Docker. La plate-forme peut être configurée par vous-même ou vous pouvez prendre une image VPS prête à l'emploi, disponible auprès de presque tous les fournisseurs d'hébergement. Pour ASP, malgré la multiplateforme, tout n'est pas si simple, et les images prêtes à l'emploi pour les serveurs ne sont disponibles que pour les plus grands acteurs du niveau Azure.



JavaScript est-il vraiment nécessaire?



Node.js a été créé en tant que runtime pour JS car il s'agit d'un langage de programmation simple et accessible qui peut facilement implémenter plusieurs scripts simultanés pour une communication d'application Web bidirectionnelle entre un navigateur et un serveur. ASP.NET a également été créé pour écrire des applications Web, en utilisant uniquement d'autres méthodes. Le même Deno se compose de plusieurs couches au-dessus de la machine virtuelle, qui fonctionne directement avec les ressources du serveur. Mais il n'est pas nécessaire d'utiliser des wrappers complexes issus de langages de programmation qui ne s'exécutent pas directement sur le serveur et nécessitent des machines virtuelles.



Aller







En 2007, les ingénieurs de l'entreprise ont décidé que le C ++ ne répondait pas aux réalités actuelles de la technologie informatique. Des outils de parallélisation efficaces étaient nécessaires, exploitant les capacités des processeurs multicœurs et des systèmes distribués, un garbage collector automatique et quelques simplifications étaient nécessaires pour une meilleure lisibilité du code et une facilité de travail avec les types.



L'objectif des développeurs n'était pas de créer une «meilleure version de C ++», mais de rendre le nouveau langage plus compréhensible en fonction de leur expérience de programmation. Go a été annoncé publiquement en 2009 et s'est rapidement hissé à presque le top 10 des langages de programmation (13e début 2012). Raymond Dahl lui-même l'a loué dans des expressions comme: "Pourquoi Node.js, s'il y a un si beau langage comme Go?". Mais la nouveauté est passée et le langage a été presque oublié jusqu'à ce qu'il se soit avéré que ses outils de parallélisation étaient bien adaptés au développement de microservices dans des applications Web. Cela a rendu la langue à son ancienne popularité.



Plusieurs frameworks Web ont été écrits pour Go, bien qu'il ne soit pas nécessaire de les utiliser, car prêt à l'emploi, il possède toutes les fonctionnalités nécessaires à la programmation d'applications Web. Deno a été initialement écrit en Go.



Rubis







Comparé au même Go, ce n'est pas la langue la plus récente, il est sorti en 1995. Contrairement à Go, il a été développé par un passionné solitaire, Yukihiro Matsumoto, désireux de créer un langage interprété orienté objet et meilleur que Pyton. La langue n'a pas gagné en popularité immédiatement, notamment parce que pendant les deux premières années, sa documentation était uniquement en japonais. Les livres en anglais n'ont été publiés qu'au début des années 2000, et la reconnaissance est venue avec la sortie du framework Web Ruby on Rails en 2005, qui est rapidement devenu populaire, en particulier lorsque Apple a annoncé en 2007 qu'il serait livré avec Mac OS X 10.5. .. .



Comme pour tous les langages interprétés, la vitesse de Ruby était relativement lente, ce qui affectait considérablement les performances des applications Web écrites en Ruby on Rails. Connaissant ce problème, l'auteur a commencé à développer une version du langage qui perdrait la compatibilité ascendante, mais qui fonctionnerait beaucoup plus rapidement, ce qu'il a fait en 2009. La vitesse a considérablement augmenté et est égale à celle des applications Web exécutées sous .NET et JVM. Grâce à cela, la popularité du framework a explosé. En 2018, l'auteur de Ruby a publié la version 2.6, qui implémente la compilation dynamique, ce qui accélère encore les performances des applications.

Jusqu'à présent, le langage Ruby est étroitement associé au framework Ruby on Rails.



Élixir







Erlang est un autre langage de programmation créé par une grande entreprise. Cette fois, les Suédois d'Ericsson ont fait de leur mieux. En 1986, personne n'a pensé à développer des applications Web, Internet était toujours dans le projet et le langage a été créé pour faire fonctionner les systèmes en temps réel. Pendant longtemps, Erlang était pratiquement inconnu en dehors de l'entreprise, qui l'utilisait pour ses besoins internes, jusqu'à ce qu'en 1998, la direction décide de cesser de supporter son propre langage et interdit son utilisation, obligeant les développeurs à passer à Java. Cela a conduit le langage à être publié sous une licence ouverte et distribué en dehors de la société qui l'a développé. Pendant longtemps, il n'intéressait qu'un petit cercle de scientifiques, jusqu'à ce qu'il se révèle que son concept est bien adapté au développement d'une architecture multiprocesseur.



En 2012, Jose Walim, l'un des développeurs de Ruby on Rails, a eu l'idée de créer un langage de programmation pour les systèmes à forte charge et les grands sites Web. En conséquence, Elixir a été développé , un langage de programmation fonctionnel compilé en bytecode pour la machine virtuelle Erlang (BEAM). En raison du fait que le langage est basé sur Erlang, qui a été développé pour la programmation d'équipements de communication, Elixir a reçu des propriétés uniques: tolérance aux pannes, remplacement de code à chaud(modifier ou restaurer le code d'un programme en cours d'exécution, sans le redémarrer) et la possibilité de travailler en temps réel. Ces propriétés vous permettent de créer des systèmes fiables à forte charge qui prennent en charge la mise à l'échelle horizontale et verticale, fonctionnant 5 à 10 fois plus rapidement que des applications similaires écrites dans des langages interprétés (PHP, Ruby, Python). Le lieu de travail du créateur a influencé le fait que le langage utilise une syntaxe de type Ruby, et il est facile à apprendre pour ceux qui utilisent Ruby on Rails.



Elixir est actuellement utilisé par des sociétés bien connues telles que Discord, Square Enix, PepsiCo et Sketch.



Et si, après tout, JavaScript?



Mais s'il n'est pas pratique de maîtriser un nouveau langage de programmation, comment faire glisser tout le Node sur le serveur? Vous pouvez consulter d'autres environnements d'exécution JS.







RingoJS est une plate-forme multithread basée sur la JVM et optimisée pour s'exécuter sur des serveurs. Le moteur Mozilla Rhino, qui a une histoire impressionnante, est utilisé pour interpréter le code JS. Il a commencé à être développé en 1997, à l'époque de Netscape, plus tard, le projet a été transféré à la Fondation Mozilla et publié en open source.



Les applications RingoJS peuvent être déployées sur n'importe quelle plate-forme Linux, jusqu'au Raspberry Pi, ou sur des plates-formes cloud comme Google App Engine. RingoJS est un système modulaire basé sur CommonJS, vous pouvez même utiliser certains modules de Node.js. De plus, le moteur Ringo vous permet d'intégrer des bibliothèques écrites en Java.







PurpleJS est un autre framework JS simple qui s'exécute sur la JVM. Nashorn (également un rhinocéros) développé par Oracle est utilisé comme moteur JS. Cela ne veut pas dire qu'il s'agit d'un remplacement à part entière de Node, car le framework n'utilise pas le mode asynchrone et Nashorn ne prend pas en charge CommonJS, mais il est très léger et ne nécessite pas de redémarrer le service après avoir modifié le code.







Vert.xN'est plus un framework, mais un ensemble d'outils multilingues qui vous permet de créer des applications Web réactives entièrement asynchrones, des microservices et des utilitaires réseau qui s'exécutent sur la JVM. Les langages pris en charge ne sont pas limités à Java et JS, sauf pour eux, vous pouvez écrire des applications dans Groovy, Ruby, Scala et Kotlin, un système modulaire avec un référentiel centralisé est pris en charge, Vert.x est facilement extensible et évolutif.



C'est drôle que le projet s'appelle d'abord Node.x, puis il a été renommé pour éviter les problèmes juridiques, car les objectifs lors de la création étaient les mêmes que ceux de Node.js, et Tim Fox (créateur de Vert.x) a dit qu'il était inspiré par le succès de Dali et «je voulais faire Node.js en JVM».



Si les alternatives ne sont pas impressionnantes et que node.js reste votre amour





node.js






All Articles