Ora sto esaminando node.js e le sue implicazioni sulle prestazioni (sono dipendente dalla velocità), ma non ho approfondito così tanto.
Profilo, profilo, profilo. Questo è l'unico modo per sapere che i tuoi speedups stanno avendo il giusto effetto. Puoi indovinare che è abbastanza veloce. Ma alla maggior parte delle persone piace ottimizzare prematuramente. È peggio che giocare con te stesso durante un appuntamento.
Mi chiedo se node.js può sostituire completamente il mio tipico sviluppo web in C # e ASP.NET MVC, se è meglio come complemento di C # e ASP.NET MVC, o se ci sono alcune cose che dovrebbero semplicemente "lasciare abbastanza bene da solo ".
Ci sono casi d'uso per / contro C # e node.js?
Certo, se sei in un negozio che scrive abitualmente codice in C #, allora dovresti usare MVC (è molto meglio di WebForms e si chiama WebPages). Non perderai molto tempo nella formazione degli utensili, ed è qualcosa che i tuoi flussi di lavoro dovrebbero già gestire.
Ciò che non sembra indicare sopra sono i motivi per scegliere ciascuno. Hai dato due opzioni di mercato attuali, una ancora nelle fasi Alpha, l'altra durante il suo terzo anno completo di rilascio della piattaforma. Non vorrei confrontare le attuali auto elettriche modello di prova con gli ibridi Honda che sono già sul mercato. Sono in due diverse leghe.
Ora, ecco un motivo per cui stai alla larga da node.js, se sei nominalmente un negozio C #.
Al momento non lavori in I / O con evento asincrono, al momento lavori in un formato procedurale.
Questa è l'antitesi di ciò che nodejs farà per te.
Tuttavia, se stai scrivendo spesso codice asincrono in C # e lo usi molto in uno stile evented, allora sì, node.js è da prendere in considerazione.
Ecco cosa ti arrenderai:
IIS - Questo è in realtà importante per molte persone. Cose come l'integrazione A / D nativa sono già state fatte e sono prive di bug. In realtà node.js ora si integra bene con IIS.
- Razor templating - Se hai fatto qualche serio MVC C #, allora stai usando e amando Razor e con quale velocità puoi sfornare le cose. Ci sono modelli simili nel nodo, e certamente non sto bussando nodo, ma l'intera toolchain è già presente in C #, e molti di questi sono attualmente in fase di creazione nel mondo dei nodi. NB: molti di questi strumenti ora sono piuttosto maturi _
- compilazione in fase di compilazione di dll - node.js viene generalmente compilato al volo, vale a dire che non tutti i percorsi vengono controllati all'avvio. È del tutto possibile avere un codice davvero scadente nel nodo che nessuno tocca, controlla o verifica mai.
- Tutti gli strumenti attualmente integrati in VS che usi quotidianamente - Non c'è molto supporto VS per javascript. In parte perché tutto in javascript è così dinamico. NB: Microsoft sta ovviamente lavorando al supporto degli strumenti per javascript _
Ecco cosa otterrai:
- tutto ciò che sviluppi sarà nella stessa lingua, supponendo che tu esegua script lato client e lato server. (o perché dovresti anche considerare javascript sul server)
Quindi, dal momento che mi sembra di battere completamente Node qui, vorrei sottolineare che il nodo è il mio linguaggio di gioco a casa, lo adoro e aiuto le persone a eseguire il debug a volte sui server di chat stackoverflow (stanza 642). Vedo che ha un grande e stupendo potenziale in futuro.
Sto solo dicendo, non buttare via il bambino e chiedermi perché l'acqua del bagno è sporca.
Non hai fornito un motivo per cui dovresti rinunciare ai tuoi anni di esperienza e iniziare qualcosa di nuovo. O sono strumenti cattivi? Affatto. Entrambi sono fantastici e rendono lo sviluppo un gioco da ragazzi.
Il nodo può sostituire C #? Sì, certo. Così potrebbe PHP o Java o Ruby. Non stai chiedendo di quelli.
Ecco come sai quando sei pronto per programmare node.js invece di C #:
- Stai pensando di scrivere un libro per aiutare altre persone a "ottenere javascript" invece dei noiosi vecchi programmi che hanno scritto prima in C # e così via.
- Hai problemi con l'I / O sincrono (blocco) che impedisce alle tue app di fare il vero lavoro.
- Non stai utilizzando QUALSIASI libreria in C # diversa dall'MVC predefinito e solo per il routing, e sei abbastanza sicuro di poter fare un motore di routing migliore e stai codificando tutto il più vicino possibile al metal.
- Ogni oggetto dati che disegni viene visualizzato come hash anziché come oggetto fortemente tipizzato.