I'm now looking at node.js and it's performance implications (I'm addicted to speed), but I haven't delved into it all that much.
Profilo, profilo, profilo. Questo è l'unico modo per sapere che i tuoi aumenti di velocità 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.
I'm wondering if node.js can completely replace my typical web development in C# and ASP.NET MVC, if it's better as a complement to C# and ASP.NET MVC, or if there's some things that should just "leave well enough alone".
Esistono casi d'uso per / contro C # e node.js?
Certo, se sei in un negozio che scrive regolarmente codice in C #, dovresti usare MVC (è molto meglio di WebForms e si chiama WebPages). Non perderai molto tempo per il training degli strumenti, ed è qualcosa che i tuoi flussi di lavoro dovrebbero già gestire.
Ciò che non sembra indicare sopra è i motivi per sceglierli. Hai dato due attuali opzioni di mercato, una ancora in stage Alpha, l'altra al 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 diversi campionati.
Ora, ecco una ragione per cui devi stare lontano da node.js, se sei nominalmente un negozio C #.
Attualmente non lavori in I / O eventi asincroni, lavori attualmente in un formato procedurale.
Questa è l'antitesi di ciò che nodejs sta per fare per te.
Tuttavia, se scrivi frequentemente codice asincrono in C #, e lo usi molto in uno stile evented, allora sì, node.js lo devi prendere in considerazione.
Ecco cosa ti arrenderai:
-
IIS - Questo è davvero importante per molte persone. Cose come l'integrazione A / D nativa sono già state fatte, e piuttosto prive di errori. Attualmente node.js ora si integra bene con IIS.
- Razor templating - Se hai fatto un serio C # MVC, allora stai usando e amando Razor e quanto velocemente puoi sfornare le cose. Ci sono modelli simili nel nodo, e certamente non sto battendo il nodo, ma l'intera toolchain è già presente in C #, e molti sono attualmente in fase di costruzione nel mondo dei nodi. NB: molti di questi strumenti ora sono piuttosto maturi _
- costruzione in compilazione di dlls - node.js generalmente viene compilato al volo, vale a dire, non tutti i percorsi vengono controllati all'avvio. È del tutto possibile avere un codice veramente brutto nel nodo che nessuno tocchi mai, controlli o test contro.
- Tutti gli strumenti attualmente incorporati 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 sul supporto degli strumenti per javascript _
Ecco cosa otterrai:
- tutto ciò che sviluppi sarà nella stessa lingua, supponendo che tu faccia lo scripting lato client così come il lato server. (o perché dovresti considerare javascript sul server)
Quindi, dal momento che mi sembra di essere qui bashing interamente, vorrei far notare che il nodo è il mio linguaggio di gioco a casa, lo adoro, e aiuto le persone a debuggarlo a volte sui server di chat di stackoverflow (stanza 642). Vedo che ha un grande e stupendo potenziale in futuro.
Sto solo dicendo, non buttare via il bambino e chiedersi perché l'acqua sporca sia sporca.
Non hai dato una ragione per cui dovresti rinunciare ai tuoi anni di esperienza e iniziare qualcosa di nuovo. Sono o cattivi strumenti? Affatto. Entrambi sono fantastici e rendono lo sviluppo un gioco da ragazzi.
Il nodo può sostituire C #? Sì, abbastanza certamente. Così potrebbe PHP o Java o Ruby. Non te lo chiedi.
Ecco come puoi sapere quando sei pronto per programmare node.js anziché C #:
- Stai pensando di scrivere un libro per aiutare gli altri a "usare javascript" invece dei noiosi vecchi programmi che hanno scritto in precedenza in C # e così via.
- Hai problemi con I / O sincroni (bloccanti) che impediscono alle app di svolgere il proprio lavoro.
- Non stai utilizzando ANY librerie in C # diverse dal MVC predefinito e solo per il routing, e sei abbastanza sicuro che puoi fare un motore di routing migliore, e stai codificando tutto quanto vicino al metal come puoi.
- Ogni oggetto dati che disegni viene visualizzato come hash anziché come oggetto strongmente tipizzato.