Nodejs vs SignalR: perché abbiamo bisogno di javascript lato server?


90

Da quando conosco Node.js, ne sono sempre stato un fan. Ma oggi ho scoperto SignalR , che fornisce un modello alternativo asincrono - scalabile - in tempo reale per ASP.NET.

Per quanto ne so, il vantaggio principale di Node.js su SignalR è la condivisione del codice tra client-server (un altro vantaggio dovrebbe essere che è multipiattaforma), e il vantaggio principale di SignalR è un framework molto più maturo e di gran lunga migliore supporto dello strumento (IDE). Quindi mi chiedo: se SignalR è qui, abbiamo più bisogno di Node.js su Windows? Ci sono vantaggi di Node.js che non conosco?


27
Sembra esserci una certa confusione qui. Node.js è una piattaforma di sviluppo mentre SignalR è una libreria per ASP.NET. Un confronto migliore sarebbe node.js + socket.io vs ASP.NET + SignalR. Questa domanda potrebbe essere aggiornata per chiarire?
leggetter

6
Vero e falso, SignalR è una libreria per .NET.
davidfowl

Risposte:


107

SignalR è una valida alternativa a Socket.IO e Node.js. Tuttavia, ci sono altri motivi per utilizzare javascript sul server.

  1. Appiattisce la pila. Quasi tutti i siti web in questi giorni devono avere javascript nel browser e, se lo usi anche sul server, puoi tagliare una lingua dal batch in cui dovrai essere esperto.

  2. Il passaggio del messaggio è molto naturale. JSON ovunque! Soprattutto combinato con un database di documenti che utilizza JSON, tutti i messaggi che passano diventano solo oggetti JSON. Ciò riduce la quantità di intermediazione di messaggi che deve avvenire in tutto il sistema.

  3. Non è Microsoft. Personalmente adoro ciò che Microsoft ha fatto per la comunità di sviluppo. Fanno strumenti fantastici e uno dei migliori framework e linguaggi in circolazione. Detto questo, alcune persone adorano odiare Microsoft.

  4. Costo. Esistono molti buoni modi per ottenere strumenti Microsoft gratuitamente o molto economici (edizioni Express e Biz Spark). C'è ancora un costo maggiore associato al lavoro con gli strumenti Microsoft. Credo che questo costo valga i guadagni di produttività nella maggior parte dei casi, ma non tutti sono d'accordo.

Oltre a quanto sopra, c'è ancora la storia in giro che non è possibile ridimensionare le richieste di polling lunghe su IIS a causa del modello di threading. Questo ha un po 'di verità, ma con una buona progettazione del codice e alcune modifiche al server, puoi principalmente aggirare questi problemi.


6
Ho letto il post sul blog di Hanselman hanselman.com/blog/… che un'applicazione di chat ASP.NET/SignalR può servire decine o centinaia di migliaia di client, il che è davvero sorprendente. Non ho scavato più a fondo per vedere come lo fanno, ma è vicino a quanto "scalabile" possa fare Nodejs ...
Quan Mai

7
Se stai usando qualcosa come ASP.NET MVC devi conoscere JavaScript, HTML, CSS, C # e Visual Studio. Con JavaScript sul lato server puoi ridurlo a JavaScript, HTML, CSS.
Daniel Lidström

4
asp.net e .net in generale non sono solo una cosa di MS. Dai un'occhiata a sharpdevelop e monodevelop per IDE e mono per un runtime .net alternativo. Questo elimina i punti 3 e 4. Inoltre, non credo nell'unico paradigma linguistico. Non è difficile imparare più lingue a meno che tu non sia appena agli inizi. Per quanto riguarda 2, creare un oggetto .net da JSON non è davvero così difficile. Inoltre, controlla SignalR per un lungo polling e sostituzione della comunicazione in tempo reale
bbqchickenrobot

7
@ruffrey Stavi dicendo? asp.net/open-source Puoi anche ospitare SignalR da solo usando OWIN.
Timothy Strimple

4
@cbmeeks Strumenti diversi per lavori diversi. Ti garantisco che Walmart ha una configurazione del database piuttosto seria (e costosa) dietro le quinte, ma ciò non ha impedito loro di ottimizzare il loro sito web mobile con Node.js. Probabilmente scoprirai che questo è vero per tutte le grandi imprese che distribuiscono con successo Node.js. Dubito che molti di loro abbiano qualcosa immagazzinato a Mongo.
Timothy Strimple
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.