J'ai commencé à bricoler avec le serveur HTTP Node.js et j'aime vraiment écrire du Javascript côté serveur mais quelque chose m'empêche de commencer à utiliser Node.js pour mon application Web.
Je comprends tout le concept d'E / S asynchrone, mais je suis quelque peu préoccupé par les cas extrêmes où le code procédural est très consommateur d'UC, comme la manipulation d'images ou le tri de grands ensembles de données.
Si je comprends bien, le serveur sera très rapide pour les demandes de pages Web simples telles que l'affichage d'une liste d'utilisateurs ou l'affichage d'un article de blog. Cependant, si je veux écrire du code très gourmand en CPU (dans le back-end administrateur par exemple) qui génère des graphiques ou redimensionne des milliers d'images, la requête sera très lente (quelques secondes). Étant donné que ce code n'est pas asynchrone, toutes les demandes envoyées au serveur pendant ces quelques secondes seront bloquées jusqu'à ce que ma demande lente soit terminée.
Une suggestion était d'utiliser Web Workers pour des tâches gourmandes en CPU. Cependant, je crains que les travailleurs Web ne rendent difficile l'écriture de code propre car cela fonctionne en incluant un fichier JS distinct. Que faire si le code gourmand en CPU se trouve dans la méthode d'un objet? Cela craint d'écrire un fichier JS pour chaque méthode qui consomme beaucoup de CPU.
Une autre suggestion était de générer un processus enfant, mais cela rend le code encore moins maintenable.
Avez-vous des suggestions pour surmonter cet obstacle (perçu)? Comment écrivez-vous du code orienté objet propre avec Node.js tout en vous assurant que les tâches lourdes du processeur sont exécutées en mode asynchrone?