Node.js Або сервлети? [зачинено]


10

Я багато чув і читав про бічну мову сервера Javascript, тобто Node.js, і побачив багато порівнянь на користь Node.

Я не розумію, що робить це краще чи швидше, або як це навіть стосується чогось такого зрілого, як Java Servlets.

Але сервлети побудовані на основі багатопотокової мови програмування на відміну від Node.js. Тоді як node.js може бути швидшим?

Якщо припустимо, що 1000K користувачі запитують записи баз даних, то Node.js не повинен бути повільнішим за сервлетів.

Також чи не мають сервлетів кращу безпеку порівняно з Node.js?


І процеси, і потоки можуть бути використані для масштабування будь-якої програми для багатоядерного використання. Вам не потрібно обоє.
Райнос

@Raynos Чи не можна також пов'язати функціональний зв'язок C? Я щойно взяв на себе роль JS як не блокуючий посланник автоматичної черги, щоб передати речі на речі нижчого рівня, але я досі не дістав лапи на Node.
Ерік Реппен

Відповіді:


12

Ви змішуєте яблука та апельсини, начебто.

Сервлети (або успадковуючи їх від HttpServlet) дозволяють отримувати доступ до параметрів запиту HTTP та відповідати чимось через (або поверх) наявну реалізацію HTTP-сервера.

Хоча використання Javascript як мови, Node.js знаходиться на нижчому рівні, ніж це. Це починається з фактичної реалізації HTTP-сервера. Тим не менш, можна продовжувати робити більше речей на високому рівні, як-от веб-додатки.

Про багатопотоковість це не обов’язково. Сервери Node.js не швидші через багатопотоковість, вони швидші, оскільки вони не блокують запити вводу-виводу, тому вони можуть продовжувати перекачувати їх у черзі, роблячи інші дії. Вони працюють лише тоді, коли треба виконати роботу - її не чекають - і це спричиняє серйозне підвищення ефективності, як виявилося.

Що стосується запитів до баз даних, то це справді більше обмежень у моделі бази даних та API, ніж про клієнта.

Що стосується безпеки - це справді інша тема, і в кінцевому підсумку знаходиться в руках будь-якого розробника, а не стільки в бібліотеці.


3
Servlet 3 підтримує асинхронний IO так само, як Node
jiggy

3
джиггі - Існує велика різниця між підтримкою чогось і створенням з нуля чогось. Вузольна асинхронність є останньою.
Джек

1
@Yam Marcovic Я досі не розумію, що ви маєте на увазі під "вони не блокують запити вводу- виводу" Навіть у JEE нитка запуститься незалежно, що не зупинить подання іншого запиту. Як новий потік створюється на запит. Я маю сенс?
Олівер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.