Ho iniziato a armeggiare con il server HTTP Node.js e mi piace molto scrivere Javascript sul lato server, ma qualcosa mi impedisce di iniziare a utilizzare Node.js per la mia applicazione web.
Comprendo l'intero concetto di I / O asincrono ma sono in qualche modo preoccupato per i casi limite in cui il codice procedurale richiede molta CPU, come la manipolazione delle immagini o l'ordinamento di grandi set di dati.
A quanto ho capito, il server sarà molto veloce per le semplici richieste di pagine Web come la visualizzazione di un elenco di utenti o la visualizzazione di un post sul blog. Tuttavia, se voglio scrivere un codice molto intenso per la CPU (ad esempio nel back-end dell'amministratore) che genera grafici o ridimensiona migliaia di immagini, la richiesta sarà molto lenta (alcuni secondi). Poiché questo codice non è asincrono, tutte le richieste che arrivano al server durante quei pochi secondi verranno bloccate fino a quando la mia richiesta lenta non viene eseguita.
Un suggerimento era di utilizzare i Web Worker per attività ad alta intensità di CPU. Tuttavia, temo che gli operatori web renderanno difficile scrivere codice pulito poiché funziona includendo un file JS separato. Cosa succede se il codice intensivo della CPU si trova nel metodo di un oggetto? Fa schifo scrivere un file JS per ogni metodo che richiede molta CPU.
Un altro suggerimento era quello di generare un processo figlio, ma ciò rende il codice ancora meno gestibile.
Qualche suggerimento per superare questo (percepito) ostacolo? Come si scrive codice pulito orientato agli oggetti con Node.js assicurandosi che le attività pesanti della CPU vengano eseguite in modo asincrono?