Domanda

Ci sono molti framework di applicazioni web disponibili in questi giorni, praticamente per ogni lingua là fuori . Nella tua esperienza, quali sono i suoi punti di forza, debolezza e caratteristiche uniche? Supponendo il lusso della scelta, quali fattori ti porterebbero a considerare l'uno rispetto all'altro?

Sono più interessato all'esperienza diretta delle persone con uno o più framework, piuttosto che a un confronto esaustivo di tutto ciò che è là fuori. Speriamo che la comunità SO abbia programmatori che hanno esperienze positive e negative con cose come Rails , ASP.NET , Django , TurboGears o JSF . Sarebbe anche bello sapere se qualcuno sta usando uno dei framework meno mainstream come Seaside o Weblocks .

Il linguaggio di programmazione è una differenza ovvia, ma una fiamma tra Java e Ruby non sarà molto divertente, e la maggior parte di questi framework sembrano essere almeno un investimento in tecnologia, strumenti e complessità quanto il loro linguaggio preferito; quindi sono più interessato a cose come:

  • Velocità e praticità di sviluppo
  • Barriere all'ingresso - sia in termini di formazione degli sviluppatori, sia di infrastrutture necessarie
  • Lock-in - quanto codice potresti conservare se dovessi cambiare framework?
  • Flessibilità: il framework determina la tua architettura o il tuo design? (Se questa sarebbe una cosa positiva o negativa è probabilmente meglio lasciarla a una discussione separata.)
  • Prestazioni, scalabilità e stabilità - ovviamente a seconda degli sviluppatori!
È stato utile?

Soluzione

Affronterò brevemente ciascuna area per tre framework Python popolari. Questo si basa solo sulle mie esperienze e osservazioni personali.

Velocità e praticità di sviluppo

Per TurboGears , Piloni e Django , la velocità di sviluppo è all'incirca uguale. Essendo quadri moderni, è facile iniziare su un nuovo sito e iniziare a mettere insieme le pagine. Python è notoriamente veloce da sviluppare e debug e direi che qualsiasi framework Python ha un tempo di sviluppo più breve rispetto a qualsiasi altra installazione con cui ho lavorato (inclusi PHP, Perl, Embedded Perl e C # / ASP.Net).

Barriere all'ingresso - formazione e infrastruttura per sviluppatori

Se conosci Python e sei disposto a guardare un tutorial video di 20 minuti , tu può creare da zero un sito di tipo wiki abbastanza completo. Oppure puoi seguire un tutorial sul sito di social bookmarking in 30 minuti (inclusa l'installazione ). Questi sono esempi di TurboGears ma anche gli altri due framework hanno tutorial quasi identici.

L'infrastruttura di test / sviluppo che esce dalla scatola con questi framework è generalmente sufficiente per completare la maggior parte dei siti. In qualsiasi momento, è possibile sostituire i componenti per soddisfare i requisiti dell'ambiente di produzione. Ad esempio, SQLite va bene per impostare i tuoi modelli e caricare i dati di test, ma ti consigliamo di installare MySQL (ad esempio) prima di andare in diretta o archiviare grandi quantità di dati.

In tutti i casi, i requisiti sono molto bassi e dettati interamente dai requisiti di scalabilità e non dalle peculiarità del framework. Se hai dimestichezza con un determinato linguaggio di template o ORM, probabilmente si collegherà direttamente.

Lock-in

Questo è un problema generalizzato in tutti i framework. Quando si seleziona una lingua, si limitano le opzioni di riutilizzo del codice. Quando selezioni un templater, sei di nuovo bloccato (sebbene sia più facile cambiare, in generale, rispetto ad altre cose). Lo stesso vale per il tuo ORM, il database e così via. Non c'è nulla che questi framework facciano in modo specifico che possa aiutare o ostacolare il blocco.

Flessibilità

È tutto su MVC con questi tre framework. Come hai detto, è una discussione molto diversa!

Prestazioni, scalabilità e stabilità

Bene, se scrivi un buon codice, il tuo sito funzionerà bene! Ancora una volta, questo è un problema in tutti i framework affrontati da diverse tecniche di sviluppo ed è probabilmente molto al di fuori dell'ambito di questo risposta.

Altri suggerimenti

Django vs Struts.

Velocità e praticità di sviluppo.

Django: attivo e funzionante nel tempo richiesto per creare il modello (in Python), definire i mapping di amministrazione (2-3 righe di codice per classe di modello) e creare modelli HTML per lavorare con le viste predefinite dei dettagli principali.

Struts: devono definire un database in SQL, quindi definire i mapping ORM in iBatis. Quindi definire, testare e creare vari componenti dell'applicazione, usando le classi di azioni e le pagine del modello JSP. Oh, e devo definire EJB per spostare i dati dall'applicazione a JSP. Deve essere tutto compilato e devo elaborare numerosi dettagli solo per ottenere qualcosa che si adatti alle regole di compilazione.

Barriere all'ingresso - sia in termini di formazione degli sviluppatori, sia di infrastrutture necessarie

Costante in tutti i framework e in tutte le lingue. Questo è praticamente un articolo non importa. Nessuna lingua o framework è intrinsecamente facile da addestrare. Tutti i framework Web hanno requisiti infrastrutturali simili.

Lock-in : quanto codice potresti conservare se dovessi cambiare framework?

Questo non ha molto senso. Se passi da Tomcat a uno qualsiasi dei derivati ??Tomcat, puoi conservare molto codice Java. Altrimenti, in genere non si conserva molto codice quando si cambia framework.

Flessibilità : il framework determina la tua architettura o il tuo design? (Se questa sarebbe una cosa positiva o negativa è probabilmente meglio lasciarla a una discussione separata.)

In realtà, questa non è una discussione separata. Questo è il punto. I framework dettano la tua architettura - e questa è una buona cosa. In effetti, il framework è un codice che non devi scrivere, testare, eseguire il debug o supportare. È positivo che l'applicazione sia limitata dal framework a una struttura collaudata e realizzabile.

Prestazioni, scalabilità e stabilità - ovviamente a seconda degli sviluppatori!

Le prestazioni sono il linguaggio (non il framework). È design. In una certa misura, è anche la sua configurazione di implementazione.

La scalabilità è framework (non lingua). È design e configurazione.

La stabilità è trasversale: sistema operativo, lingua, framework, design, programmazione, QA e configurazione dell'implementazione.

Questa è una domanda incredibilmente soggettiva .. ed è un tag che dovresti aggiungere alla tua domanda. Come diversi suggerimenti hanno già suggerito, hai già specificato una guida abbastanza buona; cosa stai chiedendo? Ci sono miliardi di opinioni su questo genere di cose e sicuramente nessuna risposta giusta!

Personalmente, ho iniziato a usare .html, sono passato a php, ho provato ruby ??(lo odiavo), ho scoperto Python / DJango .. e da allora sono stato felice. Questo è un percorso davvero unico da percorrere (probabilmente), quindi il tuo chilometraggio può variare :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top