2015-12-06 10 views
5

Per realizzare un'applicazione web con funzionalità RESTful ho letto e guardato tonnellate di articoli e video e ancora non ho un quadro completo di come funziona. E quale dovrei scegliere. Ogni altra risposta è il non utile "dipende". L'ho ridotto ad una prima scelta tra Django e Node. Ma da nessuna parte trovo l'intera "immagine" di come i pezzi lavorano insieme e di quali moduli sono necessari. Pertanto ho cercato di mettere tutto in una illustrazione approssimativa. Si noti che sono un novizio completo su questo.Django e Node - come funziona?

Sviluppo un'applicazione ERP con moduli di contabilità. Fondamentalmente si tratta principalmente di CRUD oltre a visualizzare diagrammi, stampare e archiviare documenti. Quindi questo è "dipende"

L'unica cosa su cui sono riuscito a prendere decisioni è usare nginx, Postgresql e Debian 8 come tools/os. Queste sono le stelle fisse.

Le mie domande non sono realmente comune Django vs Node.js e non è solo un parere che voglio:

  1. è l'immagine qui sotto è corretta? Qualche commento?
  2. C'è qualche ulteriore componente che sarà necessario? Per iniziare?

Node.js and Django structure

risposta

16

Hai un sacco di domande - e su StackOverflow ci dovrebbe essere una questione che può essere risolta senza generare un sacco di dibattito o hanno opinioni piuttosto che fatti.

Come tale, penso che la tua domanda potrebbe essere chiusa come "troppo ampia"; comunque penso che meriti una risposta.

Non ho intenzione di dire "dipende", anche se questo è davvero tutto ciò che si riduce a, ma qui è il mio tentativo di spiegarlo.

nodejs è un runtime. È un ambiente che ti permette di sviluppare codice sul server usando javascript. Per fare qualcosa di utile con nodejs, oltre "ciao mondo"; è necessario utilizzare un framework, e ci sono tonnellate di quelli in giro e vari stack sono stati sviluppati dalla comunità per legare insieme tutti i componenti. Un esempio di tale stack è MEAN, che è MongoDB per il database, Express per il framework, Angolare per l'assistenza con il front-end e Nodo per eseguire tutto.

django è un framework - non è un runtime. Ciò significa che è un passo rimosso dal mondo dei nodi. Il runtime per django è Python. django inoltre non è uno "stack" come MEAN, puoi sviluppare il tuo stack su di esso - ma dal momento che django è un framework "batterie incluse", hai solo bisogno di aggiungere un database ad esso - include tutto il resto che ti serve .

REST è solo un modo di progettare servizi Web. Non è una lingua, una piattaforma o una biblioteca. È un insieme di regole che descrivono un modo di progettare le API in modo tale che sfruttino i verbi semantici di HTTP.

È possibile utilizzare qualsiasi libreria e linguaggio di programmazione per sviluppare un servizio RESTful. Tutto ciò di cui hai veramente bisogno sono due cose [a] una libreria per comunicare su HTTP [b] un modo per serializzare i dati, preferibilmente in JSON (ma anche questo non è un requisito).

nginx è solo un server web molto veloce e un proxy inverso. Il motivo per cui viene citato spesso - è perché è molto costoso per un framework servire media statici.Tutte le richieste a un framework (nel mondo di django o nel mondo di nodejs) devono passare attraverso una grande catena di componenti che aiutano a decodificare la richiesta HTTP e creare una struttura di dati che sia facile da usare per gli sviluppatori. Questa catena di componenti è spesso chiamata middleware. Dal momento che ogni richiesta deve passare attraverso questo middleware, è meglio per ragioni di prestazioni che richieste che non richiedono la "potenza" dell'applicazione da eseguire (come una richiesta per un'immagine, un foglio di stile, un file video) devono essere gestito da qualcos'altro. Questo è il motivo per cui nginx è usato, dal momento che è un server web molto veloce.


Ora che vengono spiegati, è necessario vedere quale stack funziona meglio per la propria applicazione. Per fare ciò, è necessario conoscere un po 'della filosofia/giustificazione o problema che ogni pila sta cercando di risolvere.

Per django - questo è facile. Django è stato creato da un team che lavora su più giornali per aiutarli a gestire i contenuti pubblicati su siti diversi. In quanto tale, è progettato in modo che la gestione dei contenuti sia di primaria importanza. Ecco perché ha una console di amministrazione molto solida come componente standard; e un ORM piuttosto robusto incorporato e un proprio motore di template. Django lascia a te la scelta del modo migliore per eseguirlo e distribuirlo; sebbene forniscano un sacco di suggerimenti ed esempi - ma alla fine, spetta a te decidere quale database usare, quale server web usare e come distribuire l'applicazione.

Nel mondo nodejs - l'obiettivo primario è non bloccante di I/O evelocità di risposta. Nodejs eccelle nell'essere in grado di servire un sacco di richieste simultanee su risorse limitate. Pertanto, fornisce una base molto potente per lo sviluppo di applicazioni che devono rispondere rapidamente alle richieste ... e il gioco è fatto. Quando si programma in un nodo o in qualsiasi altra libreria di livello inferiore specializzata, è necessario assicurarsi che il codice stia sfruttando pienamente la libreria. Quindi, se inizi a scrivere codice di blocco nel nodo, scoprirai che le prestazioni che ti aspetti non sono state raggiunte.

nodejs non si preoccupa di ciò che effettivamente fa l'applicazione. Pensalo come uno strumento molto veloce e molto potente. È possibile creare qualsiasi cosa con esso, ma è necessario sapere quale strumento è progettato per fare meglio al fine di sapere quando usarlo.

nodejs ha funzionato a un livello inferiore - ecco perché ci sono molti pacchetti che ti aiutano a fare ogni sorta di cose con il nodo; e in più modi puoi prendere i componenti e creare il tuo stack personale, a seconda di cosa stai costruendo in cima al nodo. Pensalo come un mattoncino Lego.

nodejs e django non si escludono a vicenda. Puoi utilizzare entrambi nella tua applicazione e sfruttare i loro punti di forza e trarre vantaggio da ciò che ciascuno fa meglio.


Per quanto riguarda le vostre domande specifiche:

ho ricevuto la foto? Qualche commento?

Non so. Hai fatto?

C'è qualche ulteriore componente che sarà necessario? Per iniziare?

La risposta è sì, perché non si desidera creare tutto da zero. Ogni stack ha le proprie librerie componenti per lo sviluppo di servizi. Per django esiste il django rest framework (DRF).

Qual è il framework migliore per CRUD? Qual è il framework migliore per RESTful? È necessario un altro modulo? Il miglior generatore di report per la stampa? I migliori strumenti per diagrammi?

Non c'è niente che sia "il migliore" per niente. Questa domanda è solo chiedere opinioni. È come chiedere, qual è il miglior succo di frutta?

Quali quadro sono più veloce e affidabile per CRUD usando PostgreSQL

persone hanno sviluppato molte applicazioni robuste sulla parte superiore di PostgreSQL; tuttavia, dato che nodejs è associato a javascript, c'è ancora molto lavoro da fare in quest'area.

Posso bloccare la libreria (segreti commerciali) in entrambi gli ambienti?

Sì.

Esistono strumenti migliori per la creazione di ERP/Contabilità?

ERP e contabilità sono due cose molto diverse. Ci sono tonnellate di pacchetti/applicazioni contabili scritti in Python. Ci sono pochissimi sistemi ERP scritti in Python.

Non è possibile combinare i due e raggrupparli insieme.

Quali sono i vantaggi che utilizzano Angular su Node.js?

Lo stesso vantaggio dell'uso di Angular su _____ (inserire il backend preferito). Angolare è solo una libreria di front end.

Un vantaggio aneddotico è che sia Angular che Node utilizzano lo stesso linguaggio di programmazione.

+0

Grazie! Lo interpreto che la mia immagine incorporata è sulla strada giusta. E Django è più facile da codificare. E teoricamente posso costruire tutto in Angular (saltando sia su Django che su Node.js). E che la connessione da Node.js a Postgresql avrebbe potuto essere migliore. E come ho sottolineato, ho ancora molto da imparare. Un po 'più chiaro ma ancora confuso. – sibert