Quali sono i vantaggi del Javascript sul lato server e quando lo utilizzeresti? [duplicare]

0

Ho visto tecnologie Javascript lato server come, Rhino e Node.js. Quali sono i vantaggi dell'utilizzo di Javascript lato server e dove nel lato server si adattano allo stack?

    
posta user86834 06.04.2013 - 13:32
fonte

1 risposta

2

Parlerò esclusivamente di Node.js in quanto non ho alcuna esperienza con Rhino. La differenza principale sarebbe l'ambiente in cui vengono eseguiti. Rhino gira su JVM e V8 (Node.js) è semplicemente un compilatore per codice nativo non un interprete.

La differenza tra Node.js e Rhino è che Rhino è un motore JavaScript e Node.js è un insieme di librerie che girano su V8 (Il motore JavaScript). Queste librerie sono principalmente costruite con un approccio asincrono per fornire un sistema veloce e scalabile. Async non è nuovo. Python ha molti framework come Tornado e Ruby ha EventMachine. Il problema con questi è il loro sistema di moduli di terze parti. Se si avvia un utilizzo asincrono, è necessario utilizzare solo metodi asincroni. I moduli di terze parti di Ruby e Python sono per lo più sincroni. Questo rende la scelta delle librerie molto più difficile e poco attraente.

Si potrebbe dire che Node.js è costruito attorno al modello asincrono e il suo sistema di modelli di terze parti è puramente asincrono (anche se alcune eccezioni in cui specificano specificatamente cosa è sincrono o quando forniscono metodi asincroni e sincroni).

C'è molta frammentazione della libreria in altre lingue. La frammentazione è asincrono vs sincronizzazione e sistemi di moduli. Node.js ha probabilmente un sistema di moduli: NPM. Questo crea la standardizzazione attorno al modulo di terze parti.

Ci sono molti vantaggi nell'avviare Node.js:

  • Scrivi JavaScript (una lingua ben nota)
  • Puoi condividere il codice tra il client e il lato server
  • In esecuzione su V8 (che è estremamente veloce)
  • Modello asincrono (una tonnellata di moduli compatibili per aiutarti)

Per quanto riguarda le domande nei commenti (parlando di architettura distribuita) ....

  • Se vuoi scrivere alte prestazioni, attività legate alla CPU in C ++, perché non scrivere moduli nativi?

La maggior parte delle volte vorrai scrivere questi sistemi indipendentemente da Node.js. Lo scopo di un'architettura distribuita è:

  • Fault Tolerant (Se un errore si verifica in un singolo sistema, è molto più facile sostituirli.)
  • Modulare (scriveresti sistemi più piccoli con un ambito definito. Puoi anche sostituire i meccanismi interni di ciascun sistema e tutto funzionerà ancora)
  • Prestazioni elevate [1]

[1] Quando costruisci sistemi ad alte prestazioni non ne hai bisogno per essere associato a Node.js o al motore V8 poiché funziona sotto v8 e node.js richiede conoscenze aggiuntive ed è molto più difficile eseguire il debug come complichi ulteriormente il livello.

L'ultima parte potrebbe essere un po 'fuori portata ma la lascerò per ora.

    
risposta data 06.04.2013 - 13:55
fonte

Leggi altre domande sui tag