Что так ли отличается управляемость от событий в Node.js? Разве мы не можем сделать это в HttpAsyncHandler ASP.Net?

Я не очень разбираюсь в веб-программировании, и я на самом деле еще ничего не кодировал в Node.js, просто интересно узнать о подходе, управляемом событиями . Это действительно кажется хорошим.

В статье объясняются некоторые плохие вещи, которые могут произойти, когда мы используем потоковый подход для обработки запросов, и вместо этого нам следует выбрать подход, управляемый событиями. В потоковом режиме кассир / поток остается с нами до тех пор, пока наша еда / ресурс не будут готовы. В то время как в событийном режиме кассир отправляет нам куда-то из очереди запросов, чтобы мы не блокировали другие запросы во время ожидания нашей еды. Чтобы масштабировать блокировку на основе потоков, вам нужно увеличить количество потоков. Мне это кажется плохим оправданием того, что потоки / пулы потоков не используются должным образом.

А нельзя ли это правильно обработать с помощью IHttpAsyncHandler? ASP.Net получает запрос, использует ThreadPool и запускает обработчик (BeginProcessRequest), а затем внутри него мы загружаем файл / базу данных с помощью обратного вызова. Затем этот поток должен быть свободен для обработки других запросов. Как только чтение файла завершено, ThreadPool снова запускается и выполняет оставшийся ответ. Для меня это не так уж и отличается, так почему же это не так масштабируемо?

Один из недостатков потоковой передачи, о котором я знаю, заключается в том, что для использования потоков требуется больше памяти. Но только с ними вы сможете пользоваться преимуществами нескольких ядер. Я сомневаюсь, что Node.js вообще не использует какие-либо потоки / ядра.

Итак, на основе только событийно-ориентированного и потокового (не приводите аргумент "потому что это Javascript и каждый браузер ...") , может ли кто-нибудь указать мне, в чем реальная выгода от использования Node.js вместо существующей технологии?

Это был длинный вопрос. Спасибо :)

71
задан Daniel Serodio 23 July 2015 в 22:01
поделиться