Skip to content

39. Conclusie

Laten we nog eens terugblikken op het werk dat in dit document is verricht:

Hoofdstuk
Dossier
Inhoud
   
 
Cursusoverzicht
 
Een werkomgeving installeren
[bases]
De basis van de programmeertaal Python – taalstructuren – gegevenstypen – functies – console-uitvoer – opmaakreeksen – typeconversie – lijsten – woordenboeken – reguliere expressies
[strings]
Notatie van tekenreeksen – methoden van de klasse <str> – codering/decodering van tekenreeksen in UTF-8
[exceptions]
Uitzonderingsafhandeling
[fonctions]
Bereik van variabelen – parameterdoorgave – modules gebruiken – het Python-pad – benoemde parameters – recursieve functies
[fichiers]
Een tekstbestand lezen/schrijven – omgaan met gecodeerde bestanden in UTF-8 – omgaan met bestanden in jSON
[impots/v01]
Versie 1 van de toepassingsopdracht: een berekening van de inkomstenbelasting. De toepassing is beschikbaar in 18 versies – Versie 1 implementeert een procedurele oplossing
[imports]
Beheer van de afhankelijkheden van een toepassing door het importeren van modules – er wordt een methode voor het beheer van afhankelijkheden gepresenteerd – deze wordt in het hele document gebruikt – beheer van het Python-pad
[impots/v02]
Versie 2 van de applicatie bouwt voort op versie 1 door alle configuratieconstanten in één configuratiebestand samen te brengen
[impots/v03]
Versie 3 van de applicatie bouwt voort op versie 2 door gebruik te maken van functies die in een module zijn ingekapseld – het beheer van de afhankelijkheden gebeurt via de configuratie – introductie van het bestand jSON om de gegevens te lezen die nodig zijn voor de berekening van de belasting en om de resultaten van de berekeningen op te slaan
[classes/01]
Klassen – overerving – methoden en eigenschappen – getters / setters – constructor – eigenschap [__dict__]
[classes/02]
Overzicht van de klassen [BaseEntity] en [MyException] die in de rest van het document worden gebruikt – [BaseEntity] vergemakkelijkt de conversies tussen objecten en woordenboeken
[troiscouches]
Laagarchitectuur en programmeren via interfaces. Dit hoofdstuk beschrijft de programmeermethoden die in de rest van het document worden gebruikt
[impots/v04]
Versie 4 van de applicatie – deze versie implementeert een oplossing met een gelaagde architectuur, programmeren via interfaces en het gebruik van klassen die zijn afgeleid van [BaseEntity] en [MyException]
[databases/mysql]
Installatie van SGBD MySQL – verbinding met de database – aanmaken van een tabel – uitvoeren van opdrachten SQL SELECT, UPDATE, DELETE, INSERT – transactie – geconfigureerde query’s SQL
[databases/postgresql]
Installatie van SGBD PostgreSQL – verbinding met de database – aanmaken van een tabel – uitvoeren van opdrachten SQL SELECT, UPDATE, DELETE, INSERT – transactie – geconfigureerde query’s SQL
[databases/anysgbd]
Code schrijven die onafhankelijk is van SGBD
[databases/sqlalchemy]
De ORM (Object Relational Mapper) SqlAlchemy – een ORM maakt het mogelijk om op een uniforme manier te werken met verschillende SGBD - mapping van klassen / tabellen SQL – bewerkingen op de beeldklassen van de tabellen SQL
[impots/v05]
Versie 5 van de belastingberekeningsapplicatie – Gebruik van de gelaagde architectuur van versie 04 en van deORM SqlAlchemy om te werken met de SGBD MySQL en PostgreSQL
[inet]
Internetprogrammering – protocol TCP / IP (Transfer Control Protocol / Internet Protocol) – protocollen HTTP (HyperText Transfer Protocol) – SMTP (Simple Mail Transfer Protocol) – POP (Post Office Protocol) – IMAP (Internet Message Access Protocol)
[flask]
Webservices met het Flask-webframework – een pagina weergeven HTML – webservice jSON – verzoeken GET en POST – beheer van een websessie
[impots/http-servers/01]
[impots/http-clients/01]
Versie 6 van de praktijkopdracht – Het maken van een webservice jSON voor belastingberekening met een meerlaagse architectuur – Het schrijven van een webclient voor deze server met een meerlaagse architectuur – client/server-programmering – gebruik van de module [requests]
[impots/http-servers/02]
[impots/http-clients/02]
Versie 7 van de applicatieoefening – versie 6 is verbeterd: de client en de server zijn multithreaded – hulpprogramma's [Logger] om de communicatie tussen client en server te loggen – [SendMail] om een e-mail te sturen naar de beheerder van de applicatie
[impots/http-servers/03]
[impots/http-clients/03]
Versie 8 van de applicatieoefening – versie 7 is verbeterd door het gebruik van een sessie
[xml]
Beheer XML met de module [xmltodict]
[impots/http-servers/04]
[impots/http-clients/04]
Versie 9 van de toepassingsopdracht – versie 8 is aangepast om client/server-uitwisselingen in XML mogelijk te maken;
[impots/http-servers/05]
[impots/http-clients/05]
Versie 10 van de praktijkopdracht – in plaats van N belastingplichtigen te verwerken via N verzoeken GET, wordt één enkel verzoek POST gebruikt met de N belastingplichtigen in de hoofdtekst van POST
[impots/http-servers/06]
[impots/http-clients/06]
Versie 11 van de applicatie – de client/server-architectuur van de applicatie is gewijzigd: de laag [métier] is verplaatst van de server naar de client
[impots/http-servers/07]
Versie 12 van de toepassingsopdracht – deze versie implementeert een MVC-server (Model – View – Controller) die, op verzoek van de client, naar keuze jSON, XML of HTML levert. In dit hoofdstuk worden de serverversies jSON en XML geïmplementeerd
[impots/http-clients/07]
Implementatie van de clients jSON en XML van de server MVC van versie 12
[impots/http-servers/07]
Implementatie van de server HTML van versie 12 – gebruik van het CSS Bootstrap-framework –
[impots/http-servers/08]
Versie 13 van de praktijkopdracht – Refactoring van de code uit versie 12 – sessiebeheer met de module [flask_session] en een Redis-server – gebruik van versleutelde wachtwoorden
[impots/http-servers/09]
[impots/http-clients/09]
Versie 14 van de praktijkopdracht – implementatie van URL met een token CSRF (Cross Site Request Forgery)
[impots/http-servers/10]
Versie 15 van de praktijkopdracht – herstructurering van de code uit versie 14 om twee soorten acties te verwerken: ASV (Action Show View), die alleen dienen om een weergave te tonen zonder de toestand van de server te wijzigen, ADS (actie ‘Do Something’), die een actie uitvoeren die de status van de server wijzigt – deze acties eindigen allemaal met een omleiding naar een actie ASV – hierdoor kunnen paginavernieuwingen in de browser van de klant correct worden afgehandeld
[impots/http-servers/11]
Versie 16 van de applicatie – beheer van URL met voorvoegsel
[impots/http-servers/12]
Versie 17 van de applicatie – migratie van versie 16 naar een Apache/Windows-server
[impots/http-servers/13]
Versie 18 van de applicatie – verhelpt een fout in versie 17

De client/server-applicaties voor de belastingberekening hebben de volgende architectuur geïmplementeerd:

Image

De hierboven genoemde laag [web] is geïmplementeerd met een architectuur MVC:

Image

De inhoud van het document is compact. De lezer die het tot het einde doorneemt, krijgt een goed inzicht in MVC-webprogrammering in Python/Flask en bovendien een goed inzicht in MVC-webprogrammering in andere talen.

Aanvullende informatie over het Flask-framework is te vinden in het document [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] van auteur Miguel Grinberg. Ik heb enkele delen van zijn cursus gelezen en die kwamen mij zeer leerzaam voor. De auteur behandelt veel begrippen die in dit document niet aan bod komen.