2012-07-06 1 views
6

Sono estremamente a mio agio con Python. Sono "ok" con Java con una buona esperienza in Android (ma sappiamo tutti che la maggior parte delle cose in Android è così ben trattata in molti blog che la curva di apprendimento non è così ripida.) Quindi, tornando sul web -app. Questo è quello che mi aspetto: -Sto sviluppando un'applicazione simile alla chat fb. Quale framework: Play o Django?

  1. Un sacco di richieste. (Scalabilità)
  2. Concorrenza.
  3. Responsive.
  4. Segnalazione di errori buona.
  5. Curva di apprendimento meno ripida.
  6. Si impila bene con PostgresDb e Redis.
  7. Fornisce un modo per costruire apis più pulito (Something django-piston.)
  8. Ultimo ma non meno importante, ho un periodo di tempo di 2 mesi per terminarlo. (Non il prototipo ma la versione finale.)

Edit:

Node.js sembra eccezionalmente buona per costruire un prototipo veloce, ma è troppo buggy di scalare.

PHP è un linguaggio che non mi sono mai trovato a mio agio nel programmare. Né mi sono sentito a mio agio in JAVA fino a quando ho acquisito la codifica Android. Quindi, una preferenza per Scala. Inoltre, ho appreso che fb chat è stata costruita su Erlang. E credo che molte delle cose sbagliate in fb, una delle poche cose che è giusto è il loro stack e le preferenze di particolari linguaggi/framework da fare con le loro caratteristiche.

Sono un noob in Scala ma non trovo il linguaggio di programmazione così difficile. Ho avuto parecchi post su Play vs Lift, Web Dev su Scala, vantaggi e svantaggi di Scala e molte altre cose. L'unico ragionamento su cui sto passando a Scala è che sono terribilmente incazzato con la concomitanza di Python e di come non sia scalabile. (Sono un grande fan del twistato e lo uso per un miliardo di altre cose ma non penso Django/Rails sono ritagliati per gestire un'app web concorrente, stabile e reattiva.)

La mia domanda qui è, ho sbagliato? Vale la pena passare alla Scala, prendendo in considerazione tutto? Spero davvero di ottenere delle buone risposte perché non voglio passare lunghe ore frustranti per ottenere una versione scheletrica della mia app Web e quindi rendermi conto che non è scalabile. Inoltre, quale sarebbe uno stack preferito? Cosa usa l'industria? (Conosco un sacco di domande ma è una cosa spaventosa saltare da Django/Rails a qualsiasi altra cosa.)

Qualsiasi aiuto sarebbe apprezzato.

+0

C'è una ragione per cui non avete considerato PHP con HipHop? – leonsas

+0

Inoltre, hai considerato nodejs? –

+0

@PauloScardine Ho modificato la domanda per rispondere alla tua. Anche un confronto tra Scala e nodejs sarebbe eccellente. Sono aperto a qualsiasi cosa (la minima preferenza per PHP). Ma un caso convincente dovrebbe farlo per me. Dovrebbe funzionare e essere scalabile. Gli utenti non si preoccupano di quello che uso finché possono usarlo. – Hick

risposta

13

Ho iniziato a imparare a suonare solo negli ultimi giorni e lo adoro. Ha tutti i vantaggi di Java (per me questo è relativo al machine learning) con tutta la bellezza di un framework MVC semplice da usare.

Il gioco offre un ottimo supporto per i socket Web e presenta una deliziosa applicazione di chat di esempio con cui puoi giocare per vedere se si adatta al tuo conto.

https://github.com/playframework/Play20/tree/master/samples/scala/websocket-chat

+2

+1 Il gioco è assurdamente buono, non posso raccomandarlo abbastanza. Dal lato dinamico della recinzione, non ho interesse a tornare indietro. Digita un codice sicuro che stravolga completamente le prestazioni, la ricerca è finita ... – virtualeyes

1

Non sono sicuro dell'integrazione con django, ma gevent è in grado di utilizzare websocket e il polling lungo è un modello ben noto su gevent. Puoi usarlo come punto di partenza per lo sviluppo di tale app.

È possibile utilizzare anche il tornado, ma non mi è familiare.

in cima a quello, questo è un progetto da un mio amico, che si integrano con il Django tornado e il suo plugin socket.io https://github.com/felixleong/tornadio-with-django

3

Raccogliendo l'approccio gevent già citato da sweemeng: Go for it. Arriva anche con l'integrazione possibile con Django usando gunicorn.Qui ci sono alcuni articoli per aiutarti a iniziare & avere l'idea:

buone introduzioni:

codice Esempio:

distribuzione e librerie:

+0

Sembra abbastanza buono. Ma, per quanto riguarda le prestazioni, se lo paragono a Scala (Play) quale sarebbe meglio? – Hick

+0

Non posso darti una risposta per questo. Solo supponendo che tu abbia familiarità con Python, sarebbe quindi più veloce e più sicuro implementare una soluzione che utilizzasse piuttosto che raccogliere qualcosa di completamente nuovo. Se lo fai solo per l'effetto di apprendimento, vai con Scala. –