Nodejs vs SignalR: por que precisamos de javascript do lado do servidor?


90

Desde que conheço o Node.js, sempre fui fã dele. Mas hoje eu descobri sobre SignalR , que fornece um modelo alternativo assíncrono - escalonável - em tempo real para ASP.NET.

Pelo que eu sei, a principal vantagem do Node.js sobre o SignalR é compartilhar código entre cliente-servidor (outra vantagem deve ser que ele é multiplataforma), e a principal vantagem do SignalR é uma estrutura muito mais madura e muito melhor suporte de ferramenta (IDE). Então eu me pergunto: se SignalR estiver aqui, precisamos mais do Node.js no Windows? Há alguma vantagem do Node.js que eu não conheço?


27
Parece haver alguma confusão aqui. Node.js é uma plataforma de desenvolvimento enquanto SignalR é uma biblioteca para ASP.NET. Uma comparação melhor seria node.js + socket.io vs ASP.NET + SignalR. Esta pergunta poderia ser atualizada para esclarecimento?
leggetter

6
Verdadeiro e falso, SignalR é uma biblioteca para .NET.
davidfowl

Respostas:


107

SignalR é uma alternativa viável para Socket.IO e Node.js. No entanto, existem outras razões para usar javascript no servidor.

  1. Isso nivela a pilha. Quase qualquer site hoje em dia precisa ter javascript no navegador e, se você usá-lo no servidor também, pode cortar um idioma do lote no qual terá que ser proficiente.

  2. A passagem de mensagens é muito natural. JSON em todos os lugares! Combinado especialmente com um banco de dados de documentos que usa JSON, toda a passagem de mensagens se torna apenas objetos JSON. Isso reduz a quantidade de corretagem de mensagens que precisa acontecer em todo o sistema.

  3. Não é a Microsoft. Pessoalmente, adoro o que a Microsoft fez pela comunidade de desenvolvimento. Eles são ferramentas fantásticas e um dos melhores frameworks e linguagens existentes. Dito isso, algumas pessoas simplesmente adoram odiar a Microsoft.

  4. Custo. Existem muitas maneiras boas de obter ferramentas da Microsoft gratuitamente ou muito baratas (edições Express e Biz Spark). Ainda há um custo mais alto associado ao trabalho com ferramentas Microsoft. Acredito que esse custo compensa os ganhos de produtividade na maioria dos casos, mas nem todos concordam.

Além do que foi dito acima, ainda existe a história de que você não pode dimensionar solicitações de sondagem longas no IIS devido ao modelo de threading. Isso tem alguma verdade, mas com um bom design de código e alguns ajustes de servidor, você pode contornar esses problemas.


6
Eu li a entrada do blog do Hanselman em hanselman.com/blog/… que um aplicativo de bate-papo ASP.NET/SignalR pode servir dezenas ou centenas de milhares de clientes, o que é realmente incrível. Eu não cavei mais para ver como eles fazem isso, mas é próximo de como os Nodejs "escaláveis" podem fazer ...
Quan Mai

7
Se você estiver usando algo como ASP.NET MVC, você precisa saber JavaScript, HTML, CSS, C # e Visual Studio. Com o JavaScript no lado do servidor, você pode reduzi-lo a JavaScript, HTML, CSS.
Daniel Lidström

4
asp.net e .net em geral não são, na verdade, apenas uma coisa da MS. Verifique sharpdevelop e monodevelop para IDEs e mono para um tempo de execução .net alternativo. Isso remove os pontos 3 e 4. Além disso, não acredito no paradigma de uma linguagem. Não é difícil aprender vários idiomas, a menos que você esteja apenas começando. Quanto ao 2, criar um objeto .net a partir de JSON não é tão difícil. Além disso, verifique SignalR para uma longa sondagem e substituição de comunicação em tempo real
bbqchickenrobot

7
@ruffrey Você estava dizendo? asp.net/open-source Você também pode hospedar SignalR usando OWIN.
Timothy Strimple

4
@cbmeeks Diferentes ferramentas para diferentes trabalhos. Garanto a você que o Walmart tem uma configuração de banco de dados muito séria (e cara) nos bastidores, mas isso não os impediu de otimizar seu site móvel com Node.js. Você provavelmente descobrirá que isso é verdade para todas as grandes empresas que implantam Node.js. Duvido que muitos deles tenham algo armazenado no Mongo.
Timothy Strimple
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.