39. Fazit
Fassen wir die in diesem Dokument durchgeführten Arbeiten noch einmal zusammen:
Kapitel | Dossier | Inhalt |
Vorstellung des Kurses | ||
Einrichtung einer Arbeitsumgebung | ||
[bases] | Grundlagen der Programmiersprache Python – Sprachstrukturen – Datentypen – Funktionen – Konsolenausgabe – Formatierungsstrings – Typumwandlungen – Listen – Wörterbücher – Reguläre Ausdrücke | |
[strings] | Notation von Zeichenketten – Methoden der Klasse <str> – Kodierung/Dekodierung von Zeichenketten in UTF-8 | |
[exceptions] | Ausnahmebehandlung | |
[fonctions] | Gültigkeitsbereich von Variablen – Parameterübergabe – Verwendung von Modulen – der Python-Pfad – benannte Parameter – rekursive Funktionen | |
[fichiers] | Lesen/Schreiben einer Textdatei – Umgang mit in UTF-8 kodierten Dateien – Umgang mit Dateien in jSON | |
[impots/v01] | Version 1 der Anwendungsübung: Berechnung der Einkommensteuer. Die Anwendung ist in 18 Versionen verfügbar – Version 1 implementiert eine prozedurale Lösung | |
[imports] | Verwaltung der Abhängigkeiten einer Anwendung durch Import von Modulen – es wird eine Methode zur Verwaltung von Abhängigkeiten vorgestellt – diese wird im gesamten Dokument verwendet – Verwaltung des Python-Pfads | |
[impots/v02] | Version 2 der Anwendung baut auf Version 1 auf und fasst alle Konfigurationskonstanten in einer Konfigurationsdatei zusammen | |
[impots/v03] | Version 3 der Anwendung baut auf Version 2 auf und nutzt in einem Modul gekapselte Funktionen – die Verwaltung der Abhängigkeiten erfolgt über die Konfiguration – Einführung der Datei jSON zum Einlesen der für die Steuerberechnung erforderlichen Daten und zum Schreiben der Berechnungsergebnisse | |
[classes/01] | Klassen – Vererbung – Methoden und Eigenschaften – Getter/Setter – Konstruktor – Eigenschaft [__dict__] | |
[classes/02] | Vorstellung der Klassen [BaseEntity] und [MyException], die im weiteren Verlauf des Dokuments verwendet werden – [BaseEntity] erleichtert die Konvertierung zwischen Objekten und Dictionaries | |
[troiscouches] | Schichtenarchitektur und Schnittstellenprogrammierung. Dieses Kapitel stellt die im weiteren Verlauf des Dokuments verwendeten Programmiermethoden vor | |
[impots/v04] | Version 4 der Anwendung – diese Version implementiert eine Lösung mit einer Schichtenarchitektur, der Programmierung über Schnittstellen sowie der Verwendung von Klassen, die von [BaseEntity] und [MyException] abgeleitet sind | |
[databases/mysql] | Installation von SGBD MySQL – Verbindung zur Datenbank – Anlegen einer Tabelle – Ausführen von Befehlen SQL SELECT, UPDATE, DELETE, INSERT – Transaktion – konfigurierte Abfragen SQL | |
[databases/postgresql] | Installation von SGBD PostgreSQL – Verbindung zur Datenbank – Anlegen einer Tabelle – Ausführen von Befehlen SQL SELECT, UPDATE, DELETE, INSERT – Transaktion – konfigurierte Abfragen SQL | |
[databases/anysgbd] | SGBD-unabhängigen Code schreiben | |
[databases/sqlalchemy] | Der ORM (Objekt-Relational-Mapper) SqlAlchemy – ein ORM ermöglicht eine einheitliche Arbeit mit verschiedenen SGBD - Mapping von Klassen/Tabellen SQL – Operationen auf den Bildklassen der Tabellen SQL | |
[impots/v05] | Version 5 der Steuerberechnungsanwendung – Verwendung der Schichtenarchitektur der Version 04 und derORM SqlAlchemy zur Arbeit mit den SGBD MySQL und PostgreSQL | |
[inet] | Internetprogrammierung – Protokoll TCP / IP (Transfer Control Protocol / Internet Protocol) – Protokolle HTTP (HyperText Transfer Protocol) – SMTP (Simple Mail Transfer Protocol) – POP (Post Office Protocol) – IMAP (Internet Message Access Protocol) | |
[flask] | Webdienste mit dem Flask-Web-Framework – Anzeige einer Seite HTML – Webdienst jSON – Anfragen GET und POST – Verwaltung einer Web-Sitzung | |
[impots/http-servers/01] [impots/http-clients/01] | Version 6 der Anwendungsübung – Erstellung eines Webdienstes jSON zur Steuerberechnung mit einer mehrschichtigen Architektur – Erstellung eines Web-Clients für diesen Server mit einer mehrschichtigen Architektur – Client-/Server-Programmierung – Verwendung des Moduls [requests] | |
[impots/http-servers/02] [impots/http-clients/02] | Version 7 der Anwendungsübung – eine Weiterentwicklung von Version 6: Client und Server sind multithreaded – Dienstprogramme [Logger] zur Protokollierung des Client-Server-Datenaustauschs – [SendMail] zum Versenden einer E-Mail an den Anwendungsadministrator | |
[impots/http-servers/03] [impots/http-clients/03] | Version 8 der Anwendungsübung – Version 7 wurde durch die Verwendung einer Sitzung verbessert | |
[xml] | Verwaltung von XML mit dem Modul [xmltodict] | |
[impots/http-servers/04] [impots/http-clients/04] | Version 9 der Anwendungsübung – Version 8 wurde so angepasst, dass der Austausch zwischen Client und Server in XML erfolgt; | |
[impots/http-servers/05] [impots/http-clients/05] | Version 10 der Anwendungsübung – statt N Steuerzahler über N Abfragen GET zu bearbeiten, wird eine einzige Abfrage POST verwendet, wobei die N Steuerzahler im Hauptteil der Abfrage enthalten sind POST | |
[impots/http-servers/06] [impots/http-clients/06] | Version 11 der Anwendungsumgebung – die Client-Server-Architektur der Anwendung wird geändert: Die Schicht [métier] wird vom Server auf den Client verlagert | |
[impots/http-servers/07] | Version 12 der Anwendungsübung – diese Version implementiert einen MVC-Server (Model – View – Controller), der auf Anfrage des Clients wahlweise jSON, XML oder HTML bereitstellt. In diesem Kapitel werden die Serverversionen jSON und XML implementiert | |
[impots/http-clients/07] | Implementierung der Clients jSON und XML des Servers MVC der Version 12 | |
[impots/http-servers/07] | Implementierung des Servers HTML der Version 12 – Verwendung des CSS Bootstrap-Frameworks – | |
[impots/http-servers/08] | Version 13 der Anwendungsübung – Refaktorisierung des Codes aus Version 12 – Sitzungsverwaltung mit dem Modul [flask_session] und einem Redis-Server – Verwendung verschlüsselter Passwörter | |
[impots/http-servers/09] [impots/http-clients/09] | Version 14 der Anwendungsübung – Implementierung von URL mit einem Token CSRF (Cross-Site-Request-Forgery) | |
[impots/http-servers/10] | Version 15 der Anwendungsübung – Refaktorisierung des Codes aus Version 14 zur Unterstützung zweier Aktionstypen: ASV (Action Show View), die lediglich dazu dienen, eine Ansicht anzuzeigen, ohne den Zustand des Servers zu verändern, ADS (Aktion „Do Something“), die eine Aktion ausführen, welche den Zustand des Servers verändert – diese Aktionen enden alle mit einer Weiterleitung zu einer Aktion ASV – dies ermöglicht die korrekte Verwaltung der Seitenaktualisierungen im Client-Browser | |
[impots/http-servers/11] | Version 16 der Anwendung – Verwaltung von URL mit Präfix | |
[impots/http-servers/12] | Version 17 der Anwendung – Portierung von Version 16 auf einen Apache-/Windows-Server | |
[impots/http-servers/13] | Version 18 der Anwendung – behebt einen Fehler aus Version 17 |
Die Client-Server-Anwendungen zur Steuerberechnung haben die folgende Architektur implementiert:

Die oben genannte Schicht [web] wurde mit einer Architektur MVC implementiert:

Der Inhalt des Dokuments ist sehr umfangreich. Leser, die es bis zum Ende durcharbeiten, erhalten einen guten Einblick in die Webprogrammierung mit MVC in Python/Flask und darüber hinaus einen guten Überblick über die Webprogrammierung mit MVC in anderen Sprachen.
Weitere Informationen zum Flask-Framework finden sich im Dokument [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] des Autors Miguel Grinberg. Ich habe einige Abschnitte seines Kurses gelesen und fand diese sehr lehrreich. Der Autor stellt viele Konzepte vor, die in diesem Dokument nicht behandelt werden.