Nodejs проти SignalR: навіщо нам серверний javascript?


90

Оскільки я знаю про Node.js, я завжди був його шанувальником. Але сьогодні я дізнався про SignalR , який забезпечує альтернативну асинхронну - масштабовану - модель реального часу для ASP.NET.

Наскільки мені відомо, головною перевагою Node.js над SignalR є спільне використання коду між клієнт-сервером (ще однією перевагою має бути те, що він є міжплатформеним), а головною перевагою SignalR є набагато більш зрілий фреймворк і набагато кращий підтримка інструменту (IDE). Тому мені цікаво: якщо SignalR тут, чи нам більше потрібен Node.js у Windows? Чи є якісь переваги Node.js, яких я не знаю?


27
Здається, тут є певна плутанина. Node.js - це платформа для розробки, тоді як SignalR - це бібліотека для ASP.NET. Кращим порівнянням буде node.js + socket.io проти ASP.NET + SignalR. Чи можете це питання оновити для уточнення?
leggetter

6
Правда та хибність, SignalR - це бібліотека для .NET.
davidfowl

Відповіді:


107

SignalR - життєздатна альтернатива Socket.IO та Node.js. Однак існують інші причини використовувати javascript на сервері.

  1. Це розрівнює стос. Сьогодні майже на будь-якому веб-сайті має бути javascript у браузері, і якщо ви також використовуєте його на сервері, ви можете вирізати з пакета одну мову, якою вам доведеться володіти.

  2. Передача повідомлень є дуже природною. JSON скрізь! Особливо в поєднанні з базою даних документів, яка використовує JSON, усі передані повідомлення просто стають об'єктами JSON. Це дозволяє зменшити кількість посередницьких повідомлень, що має відбуватися в системі.

  3. Це не Microsoft. Мені особисто подобається те, що Microsoft зробила для спільноти розробників. Вони роблять фантастичні інструменти та один із найкращих фреймворків та мов навколо. З огляду на це, деякі люди просто люблять ненавидіти Microsoft.

  4. Вартість. Є багато хороших способів отримати інструменти Microsoft безкоштовно або дуже дешево (версії Express та Biz Spark). Все ще є вища вартість, пов’язана з роботою з інструментами Microsoft. Я вважаю, що ці витрати варті зростання продуктивності в більшості випадків, але не всі погоджуються.

На додаток до вищесказаного, все ще існує історія про те, що ви не можете масштабувати довгі запити на опитування в IIS через модель потоків. У цьому є певна правда, але, маючи хороший дизайн коду та деякі налаштування сервера, ви в основному можете обійти ці проблеми.


6
Я прочитав запис у блозі Hanselman hanselman.com/blog/…, що додаток для чату ASP.NET/SignalR може обслуговувати десятки або сотні тисяч клієнтів, що справді дивно. Я не копався глибше, щоб побачити, як вони це роблять, але це наближається до того, наскільки "масштабовані" можуть Nodejs ...
Quan Mai

7
Якщо ви використовуєте щось на зразок ASP.NET MVC, вам потрібно знати JavaScript, HTML, CSS, C # та Visual Studio. За допомогою JavaScript на стороні сервера ви можете зменшити його до JavaScript, HTML, CSS.
Даніель Лідстрем

4
asp.net та .net загалом насправді не є єдиною справою для MS. Перевірте SharpDevelop та Monodevelop для IDE та Mono для альтернативного середовища виконання .net. Це вилучає пункти 3 та 4. Крім того, я не вірю в єдину мовну парадигму. Неважко вивчити кілька мов, якщо ви тільки починаєте. Що стосується 2, створити .net-об'єкт з JSON насправді не так складно. Крім того, замовте SignalR на тривале опитування та заміну зв'язку в режимі реального часу
bbqchickenrobot

7
@ruffrey Ви говорили? asp.net/open-source Ви також можете самостійно розмістити SignalR, використовуючи OWIN.
Тімоті Стрімпл

4
@cbmeeks Різні інструменти для різних робіт. Я гарантую вам, що Walmart має досить серйозну (і дорогу) настройку бази даних за кадром, але це не завадило їм оптимізувати свій мобільний веб-сайт за допомогою Node.js. Ви, мабуть, переконаєтесь, що це справедливо для всіх великих підприємств, які успішно розгортають Node.js. Сумніваюсь, що багато хто з них що-небудь зберігає в Монго.
Тімоті Стрімпл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.