Я не очень разбираюсь в веб-программировании, и я на самом деле ничего не закодировал в Node.js, просто интересуюсь ориентированным на события подходом. Кажется, это хорошо.
В статье объясняются некоторые плохие вещи, которые могут возникнуть, когда мы используем потоковый подход для обработки запросов и должны выбрать подход, основанный на событиях. В потоковом режиме кассир/поток застрял с нами, пока наша еда/ресурс не будет готова. В то время как в случае событий кассир отправляет нас куда-то из очереди запросов, поэтому мы не блокируем другие запросы, ожидая нашей пищи. Чтобы масштабировать блокировку потоковых потоков, вам необходимо увеличить количество потоков. Для меня это кажется плохим предлогом для правильного использования потоков/потоков.
Нельзя ли это правильно обработать с помощью IHttpAsyncHandler? ASP.Net получает запрос, использует ThreadPool и запускает обработчик (BeginProcessRequest), а затем внутри него мы загружаем файл/базу данных обратным вызовом. Затем этот поток может свободно обращаться с другими запросами. Как только чтение файла завершено, ThreadPool снова запускается в действие и выполняет оставшийся ответ. Для меня это не так уж и отличается, так почему же это не так масштабируемо?
Один из недостатков потоковой системы, который я знаю, - использование потоков требует большего объема памяти. Но только с ними вы можете наслаждаться преимуществами нескольких ядер. Я сомневаюсь, что Node.js вообще не использует нити/ядра.
Итак, основываясь только на управляемых событиями потоках на основе потоков (не привносите аргумент "потому что это Javascript и каждый браузер..." ), может кто-то указать мне, что является фактическим преимуществом использования Node.js вместо существующей технологии?
Это был длинный вопрос. Спасибо:)