Un web framework è una libreria di codice che rende lo sviluppo web più veloce e più facile fornendo modelli comuni per costruire applicazioni web affidabili, scalabili e mantenibili. Dopo i primi anni 2000, i progetti di sviluppo web professionali utilizzano sempre un web framework esistente, tranne in situazioni molto insolite.
Perché sono utili i web framework?
I web framework incapsulano ciò che gli sviluppatori hanno imparato negli ultimi vent’anni mentre programmano siti e applicazioni per il web. I framework rendono più facile riutilizzare il codice per le operazioni HTTP comuni e strutturare i progetti in modo che altri sviluppatori con conoscenza del framework possano rapidamente costruire e mantenere l’applicazione.
Funzionalità comuni dei framework web
I framework forniscono funzionalità nel loro codice o attraverso estensioni per eseguire operazioni comuni richieste per eseguire applicazioni web. Queste operazioni comuni includono:
- Routing delle URL
- Gestione e validazione dei moduli di input
- HTML, XML, JSON e altri formati di output con un motore di template
- Configurazione della connessione al database e manipolazione persistente dei dati attraverso un object-relational mapper (ORM)
- Sicurezza web contro il Cross-site request forgery (CSRF), SQL Injection, Cross-site Scripting (XSS) e altri attacchi dannosi comuni
- Memorizzazione e recupero della sessione
Non tutti i framework web includono codice per tutte le funzionalità di cui sopra.I framework cadono su uno spettro che va dall’esecuzione di un singolo caso d’uso alla fornitura di tutte le funzionalità note del framework web ad ogni sviluppatore. Alcuni framework adottano l’approccio “batterie-incluse” dove tutto il possibile viene fornito in bundle con il framework, mentre altri hanno un pacchetto di base minimo che si presta ad estensioni fornite da altri pacchetti.
Per esempio, il framework per applicazioni web Django include lo strato ORM di Django che permette allo sviluppatore di scrivere operazioni di lettura, scrittura, interrogazione e cancellazione di database relazionali in codice Python piuttosto che SQL.Tuttavia, l’ORM di Django non può funzionare senza modifiche significative su database non relazionali (NoSQL) comeMongoDB o Cassandra.
Alcuni altri framework web come Flask e Piramide sono più facili da usare con database non relazionali incorporando librerie Python esterne.C’è uno spettro tra la funzionalità minima con facile estensibilità da un lato e l’inclusione di tutto nel framework con una stretta integrazione dall’altro lato.
Devo usare un framework web?
L’uso o meno di un framework web nel tuo progetto dipende dalla tua esperienza nello sviluppo web e da quello che stai cercando di realizzare. Se sei un programmatore principiante e vuoi solo lavorare su un’applicazione web come progetto di apprendimento, allora un framework può aiutarti a capire i concetti elencati sopra, come il routing degli URL, la manipolazione dei dati e l’autenticazione che sono comuni alla maggior parte delle applicazioni web.
D’altra parte se sei un programmatore esperto con una significativa esperienza di sviluppo web, potresti sentire che i framework esistenti non corrispondono ai requisiti del tuo progetto. In questo caso, potete mescolare e abbinare librerie open source come Werkzeug per l’idraulicaWSGI con il vostro codice per creare il vostro proprio framework. C’è ancora molto spazio nell’ecosistema Python per nuovi framework per soddisfare i bisogni degli sviluppatori web che non sono soddisfatti da Django, Flask, Pyramid, Bottle e molti altri.
In breve, se avete bisogno o meno di usare un web framework per costruire una webapplication dipende dalla vostra esperienza e da ciò che state cercando di realizzare.Usare un web framework per costruire un’applicazione web certamente non è obbligatorio, ma renderà la vita della maggior parte degli sviluppatori più facile in molti casi.
Confronto tra framework web
Talk Python to Me aveva un episodio del podcast con un confronto dettagliato dei framework Django, Flask, Tornado e Pyramid.
Sei curioso di sapere come è strutturato il codice in un progetto Django rispetto a Flask? Dai un’occhiata a questo tutorial su Django e poi guarda la stessa applicazione costruita con Flask.
C’è anche un repository chiamatocompare-python-web-frameworks dove la stessa applicazione web è stata codificata con diversi webframeworks Python, motori di templating e mapper object-relational.
Risorse di framework web
-
Costruire il proprio framework web Python è un modo fantastico per imparare come funziona il WSGI e i molti altri pezzi che si combinano per rendere i framework web utili agli sviluppatori web.
-
12 richieste al secondoesamina come il framework web tradizionalmente sincronoFlask si confronta con un framework asincrono comeSanic in un benchmark semplice e artificiale. I risultati fanno sembrare che Sanic sia molto più veloce di Flask, ma una volta che si aggiunge anche solo una quantità di funzionalità di base a un progetto, comprese le query al databasel e i template, i risultati si compensano. Miguel Grinberg ha anche una grande lettura con risultati più ampi in questo articolo che chiede ai lettori di ignorare tutti i benchmark di prestazioni web, incluso questo.
-
Quando si sta imparando ad usare uno o più framework web è utile avere un’idea di cosa sta facendo il codice sotto le coperte. Questo post sulla costruzione di un semplice framework Python da zero mostra come le connessioni HTTP, il routing e le richieste possono funzionare in sole 320 righe di codice. Questo post è impressionante anche se il framework risultante è una semplificazione di ciò che framework come Django, Flask e Pyramid permettono agli sviluppatori di realizzare.
-
C’è anche un altro, più recente tutorial in più parti sulla costruzione del proprio framework web in Python. Questa serie è basata sul progetto Alcazar che l’autore sta codificando a scopo di apprendimento:
- Parte 1: Gestire le richieste
- Parte 2: Routes, gestori basati su classi e Unit Testing
- Parte 3: Test Client and Templating Support
- Part 4: Exception Handling, Static Files and Middleware
-
Check out the answer to the”What is a web framework and how does it compare to LAMP?”question on Stack Overflow.
-
Another great series that digs behind the web framework magic is”Web Application from Scratch”. The four parts are:
- Part 1: handling HTTP requests and responses
- Part 2: abstracting Requests, Responses and Servers
- Part 3: request handlers and middleware
- Part 4: abstracting applications
-
Frameworks is a really well done short videothat explains how to choose between web frameworks. The author has someparticular opinions about what should be in a framework. For the most partI agree although I’ve found sessions and database ORMs to be a helpfulpart of a framework when done well.
-
Django vs Flask vs Pyramid: Choosing a Python Web Frameworkcontiene informazioni di base e confronti di codice per applicazioni web simili costruite in questi tre grandi framework Python.
-
Questo affascinante post del blog dà un’occhiata alla complessità del codice di diversi framework web Python fornendo visualizzazioni basate sulle loro basi di codice.
-
I benchmark dei framework web di Python è un test della reattività di un framework con la codifica di un oggetto in JSON e la restituzione come risposta, così come il recupero dei dati dal database e il rendering in un template. Non ci sono stati risultati conclusivi, ma l’output è comunque divertente da leggere.
-
Quali framework web usate e perché sono fantastici? è una discussione agnostica di Reddit sui framework web. È interessante vedere cosa piace e cosa non piace ai programmatori di altre lingue riguardo alla loro serie di framework web rispetto ai principali framework Python.
-
Questa domanda votata dagli utenti & ha chiesto “Quali sono i migliori framework web Python di uso generale utilizzabili in produzione? Flask nel 2019: quale framework scegliereGuarda i migliori casi d’uso per Django e Flask insieme a ciò che li rende unici, da un punto di vista educativo e di sviluppo.
-
11 nuovi framework web Python ha un breve riassunto di diversi framework più recenti che stanno ancora emergendo, come Sanic, Masonite e Molten.
Lista di controllo per imparare i framework web
-
Scegliete un framework web Python importante (Django o Flask sono consigliati) e seguitelo. Quando si è agli inizi è meglio imparare prima un framework invece di rimbalzare in giro cercando di capire ogni framework.
-
Work through a detailed tutorial found within the resources links on theframework’s page.
-
Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.
-
Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.