Ich habe angefangen, an Node.js HTTP-Server zu basteln und schreibe wirklich gerne serverseitiges Javascript, aber etwas hindert mich daran, Node.js für meine Webanwendung zu verwenden.
Ich verstehe das gesamte asynchrone E / A-Konzept, bin jedoch etwas besorgt über die Randfälle, in denen prozeduraler Code sehr CPU-intensiv ist, z. B. Bildmanipulation oder Sortieren großer Datenmengen.
Soweit ich weiß, ist der Server für einfache Webseitenanforderungen wie das Anzeigen einer Benutzerliste oder das Anzeigen eines Blogposts sehr schnell. Wenn ich jedoch sehr CPU-intensiven Code schreiben möchte (z. B. im Admin-Backend), der Grafiken generiert oder die Größe von Tausenden von Bildern ändert, ist die Anforderung sehr langsam (einige Sekunden). Da dieser Code nicht asynchron ist, werden alle Anforderungen, die während dieser wenigen Sekunden an den Server gesendet werden, blockiert, bis meine langsame Anforderung abgeschlossen ist.
Ein Vorschlag war, Web Worker für CPU-intensive Aufgaben zu verwenden. Ich befürchte jedoch, dass Web-Worker das Schreiben von sauberem Code erschweren werden, da dies durch das Einfügen einer separaten JS-Datei funktioniert. Was ist, wenn sich der CPU-intensive Code in der Methode eines Objekts befindet? Es ist schade, eine JS-Datei für jede Methode zu schreiben, die CPU-intensiv ist.
Ein weiterer Vorschlag war, einen untergeordneten Prozess zu erzeugen, aber das macht den Code noch weniger wartbar.
Irgendwelche Vorschläge, um dieses (wahrgenommene) Hindernis zu überwinden? Wie schreibt man mit Node.js sauberen objektorientierten Code, während sichergestellt wird, dass CPU-schwere Aufgaben asynchron ausgeführt werden?