Skip to content

39. Conclusione

Rivediamo il lavoro svolto in questo documento:

Capitolo
Repository del codice
Indice
   
 
Panoramica del corso
 
Configurazione dell'ambiente di lavoro
[Nozioni di base]
Nozioni di base sul linguaggio Python
– strutture del linguaggio – tipi di dati
– funzioni – output della console –
stringhe di formattazione – conversione dei tipi
– liste – dizionari –
espressioni
[stringhe]
Notazione stringa – metodi della
classe <str> – codifica/decodifica
stringhe in UTF-8
[eccezioni]
Gestione delle eccezioni
[funzioni]
Ambito delle variabili – Parametri
Passaggio – Utilizzo dei moduli – Il
percorso Python – Parametri
– Funzioni
funzioni
[file]
Lettura/scrittura di un file di testo –
gestione dei file con codifica UTF-8 –
gestione dei file JSON
[taxes/v01]
Versione 1 dell'applicazione
Esercizio: calcolo dell'imposta sul reddito
. L'applicazione è disponibile in 18
versioni – La versione 1 implementa
una soluzione procedurale
[importazioni]
Gestione delle
importando i
moduli – viene presentato un metodo di gestione
viene presentato un metodo di gestione delle dipendenze
– viene utilizzato in tutto il
documento – gestione del
percorso Python
[impots/v02]
La versione 2 dell'applicazione
si basa sulla versione 1 raggruppando
tutte le costanti di configurazione in un
file di configurazione che
gestisce il percorso Python
[import/v03]
La versione 3 dell'applicazione
si basa sulla versione 2 utilizzando
funzioni incapsulate in un
modulo — la gestione delle dipendenze
gestione delle dipendenze è gestita tramite
configurazione — l'introduzione di un
file JSON per leggere i dati necessari
per il calcolo delle imposte e scrivere i
risultati del calcolo
[classi/01]
Classi – ereditarietà – metodi
e proprietà – getter/setter –
costruttore – [__dict__]
proprietà
[classi/02]
Introduzione alle classi [BaseEntity]
e [MyException] utilizzate
nel resto del
documento – [BaseEntity]
facilita le conversioni oggetto/dizionario
.
[tre-livelli]
Architettura a livelli e
programmazione basata sull'interfaccia.
Questo capitolo presenta i
metodi di programmazione utilizzati
nel resto del
documento
[taxes/v04]
Versione 4 dell'applicazione – questa
versione implementa una soluzione
con un'architettura a livelli,
programmazione basata su interfacce e
l'uso di classi derivate da
[BaseEntity] e
[MyException]
[databases/mysql]
Installazione del DBMS MySQL –
connessione a un database –
creazione di una tabella – esecuzione di
SELECT, UPDATE, DELETE,
e INSERT –
transazioni –
SQL
[databases/postgresql]
Installazione del DBMS PostgreSQL
– connessione a un database –
creazione di una tabella – esecuzione di
SELECT, UPDATE, DELETE,
e INSERT –
transazioni – query SQL
SQL
[databases/anydbms]
Scrivere codice indipendente dal DBMS
[databases/sqlalchemy]
L'ORM (Object-
Mapper) di SqlAlchemy – un ORM
consente un approccio unificato a
lavorare con diversi sistemi di gestione di database (DBMS) –
mappatura delle classi alle tabelle SQL –
operazioni sulle classi
che rappresentano tabelle SQL
[taxes/v05]
Versione 5 dell'applicazione per il calcolo delle imposte
– Utilizzo dell'architettura a livelli
della versione 04 e
l'ORM SqlAlchemy per funzionare
con i DBMS MySQL e PostgreSQL
DBMS
[inet]
Programmazione Web – Protocollo TCP/IP
(Protocollo di controllo della trasmissione
/ Protocollo Internet) –
Protocolli HTTP (HyperText
) – SMTP
(Simple Mail Transfer Protocol)
– POP (Post Office Protocol) –
IMAP (Internet Message Access
)
[flask]
Servizi web con il framework web Flask
– visualizzazione di una
pagina HTML – Servizio web JSON
– Richieste GET e POST –
gestione di una sessione web
[impots/http-servers/01]
[taxes/http-clients/01]
Versione 6 dell'applicazione
Esercizio – Creazione di un servizio web JSON
per il calcolo delle imposte con un'
architettura multistrato – Scrittura
un client web per questo server con un'
architettura a più livelli –
programmazione client/server –
utilizzo del modulo [requests]
[taxes/http-servers/02]
[tasse/client-http/02]
Versione 7 dell'applicazione
Esercizio – La versione 6 è stata migliorata:
il client e il server sono
multithread – [Logger]
utilità per registrare gli scambi client/server
scambi client/server – [SendMail] per inviare
un'e-mail all'amministratore dell'applicazione
– [SendMail] per inviare
[taxes/http-servers/03]
[tasse/client-http/03]
Versione 8 dell'applicazione
Esercizio – La versione 7 è stata migliorata
grazie all'uso di una sessione web
[xml]
Gestione del linguaggio XML (eXtended Markup
Language) con il
modulo [xmltodict]
[taxes/http-servers/04]
[impots/http-clients/04]
Versione 9 dell'applicazione
Esercizio – la versione 8 viene modificata
per includere gli scambi client/server
in XML;
[taxes/http-servers/05]
[tasse/client-http/05]
Versione 10 dell'applicazione
Esercizio – invece di elaborare N
contribuenti tramite N richieste GET, viene utilizzata una
singola richiesta POST viene utilizzata con
i N contribuenti nel corpo della richiesta POST
corpo
[taxes/http-servers/06]
[tasse/clienti-http/06]
Versione 11 dell'applicazione
Esercizio – l'architettura
client/server dell'applicazione è
modificata: il livello [aziendale]
viene spostato dal server al
client
[taxes/http-servers/07]
Versione 12 dell'applicazione
Esercizio – questa versione implementa
un server MVC (Model–View–
Controller) che fornisce
JSON, XML e HTML
in modo intercambiabile, a seconda
richiesta del client. Questo capitolo
implementa le versioni JSON e XML
del server
[impots/http-clients/07]
Implementazione dei client JSON e
XML per il server MVC
nella versione 12
[impots/http-servers/07]
Implementazione del server HTML
nella versione 12 – utilizzando il
framework CSS Bootstrap –
[impots/http-servers/08]
Versione 13 dell'applicazione
– Riscrittura del codice
dalla versione 12 – gestione delle sessioni
utilizzando il
modulo [flask_session] e un
server Redis – utilizzando
password
[import/server-http/09]
[impots/http-clients/09]
Versione 14 dell'applicazione
Esercizio – Implementazione degli URL
con un token CSRF (Cross-Site Request
)
[impots/http-servers/10]
Versione 15 dell'applicazione
Esercizio – rifattorizzazione del codice
dalla versione 14 per gestire due
tipi di azioni: ASV (Action
Show View), che vengono utilizzate solo
per visualizzare una vista senza
modificare lo stato del server, e
ADS (Action Do Something),
che eseguono un'azione che
modifica lo stato del server: queste
azioni terminano tutte con un reindirizzamento a
un'azione ASV: ciò consente
una corretta gestione dell'aggiornamento delle pagine
nel browser del client
[impots/http-servers/11]
Versione 16 dell'applicazione –
Gestione degli URL con prefissi
[impots/http-servers/12]
Versione 17 dell'applicazione –
porting della versione 16 su un
server Apache/Windows
[impots/http-servers/13]
Versione 18 dell'applicazione –
corregge un bug presente nella versione 17

Le applicazioni client/server per il calcolo delle imposte hanno implementato la seguente architettura:

Image

Il livello [web] sopra indicato è stato implementato utilizzando un'architettura MVC:

Image

Il contenuto di questo documento è denso. I lettori che arriveranno fino alla fine acquisiranno una solida comprensione della programmazione web MVC in Python/Flask e, oltre a ciò, una solida comprensione della programmazione web MVC in altri linguaggi.

Ulteriori informazioni sul framework Flask sono disponibili nel documento [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] dell'autore Miguel Grinberg. Ho letto alcune sezioni del suo corso e le ho trovate molto istruttive. L'autore tratta molti concetti che non vengono affrontati in questo documento.