Casi d'uso per node.js e c #


10

Faccio un bel po 'di lavoro ASP.NET (C #, MVC), ma la maggior parte è lo sviluppo web tipico. Faccio architettura Restful usando i repository CRUD. La maggior parte dei miei clienti non ha molti requisiti avanzati nelle loro applicazioni.

Ora sto esaminando node.js e le sue implicazioni sulle prestazioni (sono dipendente dalla velocità), ma non ho approfondito così tanto.

Mi chiedo se

  • node.js può sostituire realisticamente il mio tipico sviluppo web in C # e ASP.NET MVC (non riscrivendo le app esistenti, ma quando si lavora su quelle nuove)
  • node.js può integrare un'app ASP.NET MVC aggiungendo un po 'di bontà asincrona all'architettura esistente.

Ci sono casi d'uso per / contro C # e node.js?

modificare

Adoro ASP.NET MVC e sono super entusiasta di dove sta andando. solo cercando di vedere se ci sono casi d'uso speciali che potrebbero favorire


Sì, mi rendo conto che questa può essere una conversazione più grande quando includo Ruby o PHP, ma per questa domanda particolare, non sono interessato a nessuno di questi ... quello sono solo io.
Chase Florell,

La risposta è, prova il nodo. Leggi a riguardo. Vedi se ti piace.
Raynos,

Risposte:


11

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.

1
Il mio consiglio, vai a scrivere tre o quattro siti Web complessi in node.js. Inizia in piccolo, poi ingrandisci.
jcolebrand,

1
Non sono al college / università. Sto sviluppando solo da circa 8 anni e sto andando abbastanza bene per me stesso. Posso guadagnare meglio da solo che con un'altra società.
Chase Florell,

2
C # compila il controllo del tempo di tutti i percorsi del codice. Non verrà lanciato fino a quando non vengono fatti esplodere dati errati. Il nodo non fermerà la compilazione solo a causa di un codice errato. Oppure stavo usando una versione precedente e questa è cambiata.
jcolebrand,

1
@Raynos: Razor non è un progetto open source di terze parti, è il motore di visualizzazione sviluppato da Microsoft ufficialmente approvato per ASP.NET MVC 3
Carson63000,

1
Al momento della stesura di questo documento, Node.js non era supportato da IIS, ma lo è ora.
jcolebrand,

5

Se il solo fare architettura riposante utilizzando i repository CRUD non v'è alcuna buona ragione per porto un'applicazione esistente a node.js.

Se stai scrivendo una nuova applicazione che esegue REST e CRUD, potrebbero esserci buoni motivi per utilizzare node.js dall'inizio.

Dipende davvero dall'applicazione.

Ad esempio, personalmente scriverei le applicazioni REST / CRUD completamente in node.js perché è una preferenza personale. Il nodo è fantastico da sviluppare, ASP.NET MVC è stato un fastidioso framework restrittivo per me.

Verdetto: entrambi gli strumenti portano a termine il lavoro. Se non ci sono requisiti specifici che favoriscono .NET o il nodo, usa quello che vuoi. cioè è preferenza personale.

Tuttavia, posso elencare alcuni dei vantaggi di entrambe le piattaforme

ASP.NET

  • Integrazione Windows / .NET. Se vuoi che il tuo stack Microsoft sia strettamente accoppiato e altamente integrato, allora vuoi .NET
  • forza lavoro prontamente disponibile
  • Quadri monolitici che ti tengono per mano
  • Ha un set di funzionalità che funzionano immediatamente. Se sei soddisfatto di queste funzionalità, migliora la produttività. Se invece desideri funzionalità personalizzate, finisci per combattere contro lo strumento e ridurre la produttività.

Node.js

  • Lingua unica per l'intero stack Web (se si utilizzano database noSQL che utilizzano js per le loro "query" come couch / mongo).
  • Ottimo per applicazioni Web in tempo reale con strumenti come socket.io
  • Ottimo per la colla di rete quando tutto il tuo server è parlare con n endpoint remoti di vari tipi diversi.
  • Ti offre solo le funzionalità minime pronte all'uso. Ciò significa che puoi creare la tua applicazione nel modo altamente personalizzato che desideri.
  • Raccolta di piccoli strumenti in stile unix che fanno una cosa e una cosa bene che sono facili da mescolare e abbinare
  • npm : gestione dei pacchetti eseguita correttamente
  • ricca comunità open source

Sì, non sto cercando di trasferire le app esistenti. Pensando alle app che verranno in futuro.
Chase Florell,

5
@Raynos dovrebbe aggiungere la dichiarazione di non responsabilità che è un evangelista di Node.js e non ha mai creato un sito Web basato su MVC3 / 4. (Penso che ciò si rifletta nella risposta).
Matt Esch,
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.