Nodejs vs SignalR: зачем нам серверный javascript?

92

С тех пор, как я знал о Node.js, я всегда был его поклонником. Но сегодня я узнал о SignalR , который предоставляет альтернативную асинхронную - масштабируемую - модель реального времени для ASP.NET.

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

Куан Май
источник
28
Кажется, здесь есть некоторая путаница. Node.js - это платформа разработки, а SignalR - это библиотека для ASP.NET. Лучшим сравнением было бы node.js + socket.io против ASP.NET + SignalR. Не могли бы вы обновить этот вопрос, чтобы уточнить?
leggetter
6
Верно и неверно, SignalR - это библиотека для .NET.
davidfowl

Ответы:

109

SignalR - жизнеспособная альтернатива Socket.IO и Node.js. Однако есть и другие причины использовать javascript на сервере.

  1. Он сглаживает стопку. Практически любой веб-сайт в наши дни должен иметь javascript в браузере, и если вы используете его и на сервере, вы можете вырезать один язык из пакета, которым вам нужно владеть.

  2. Передача сообщений очень естественна. JSON везде! Особенно в сочетании с базой данных документов, которая использует JSON, все передаваемые сообщения просто становятся объектами JSON. Это снижает количество брокеров сообщений, которые должны происходить во всей системе.

  3. Это не Microsoft. Мне лично нравится то, что Microsoft сделала для сообщества разработчиков. Они создают фантастические инструменты и одни из лучших фреймворков и языков. При этом некоторые люди просто любят ненавидеть Microsoft.

  4. Стоимость. Есть много хороших способов получить инструменты Microsoft бесплатно или очень дешево (Express editions и Biz Spark). Работа с инструментами Microsoft по-прежнему связана с более высокими затратами. Я считаю, что в большинстве случаев эта стоимость стоит повышения производительности, но не все согласны.

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

Тимоти Стримпл
источник
6
Я прочитал запись в блоге Хансельмана hanselman.com/blog/… о том, что чат-приложение ASP.NET/SignalR может обслуживать десятки или сотни тысяч клиентов, что действительно потрясающе. Я не стал копать глубже, чтобы увидеть, как они это делают, но это близко к тому, насколько «масштабируемые» Nodejs могут делать ...
Куан Май
7
Если вы используете что-то вроде ASP.NET MVC, вам необходимо знать JavaScript, HTML, CSS, C # и Visual Studio. С помощью JavaScript на стороне сервера вы можете сократить его до JavaScript, HTML, CSS.
Daniel Lidström
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. Я сомневаюсь, что у многих из них есть что-нибудь, хранящееся в Монго.
Тимоти Стримпл