Я почав займатися HTTP-сервером Node.js і дуже люблю писати сервер на Javascript, але щось не заважає мені починати використовувати Node.js для мого веб-додатку.
Я розумію всю концепцію асинхронного вводу-виводу, але мене дещо турбують кращі випадки, коли процедурний код дуже інтенсивний процесором, наприклад, маніпулювання зображеннями або сортування великих наборів даних.
Як я розумію, сервер буде дуже швидким для простих запитів веб-сторінок, таких як перегляд списку користувачів або перегляд публікації в блозі. Однак, якщо я хочу написати дуже інтенсивний код процесора (наприклад, у зворотній частині адміністратора), який генерує графіку або змінює розміри тисяч зображень, запит буде дуже повільним (кілька секунд). Оскільки цей код не є асинхронним, усі запити, що надходять на сервер протягом цих декількох секунд, будуть заблоковані до мого повільного запиту.
Одна з пропозицій полягала в тому, щоб використовувати Web Workers для завдань, що потребують процесора. Однак я боюся, що веб-працівникам буде складно написати чистий код, оскільки він працює, включивши окремий файл JS. Що робити, якщо інтенсивний код CPU знаходиться в методі об'єкта? Це відстійно, щоб написати файл JS для кожного методу, який є інтенсивним процесором.
Ще одна пропозиція полягала в тому, щоб породити дочірній процес, але це робить код ще менш ретельним.
Будь-які пропозиції подолати цю (сприйняту) перешкоду? Як ви пишете чистий об'єктно-орієнтований код з Node.js, переконуючись, що важкі завдання процесора виконуються асинхронізовано?