39. Wnioski
Podsumujmy prace wykonane w niniejszym dokumencie:
Rozdział | Dokumentacja | Spis treści |
Przedstawienie kursu | ||
Konfiguracja środowiska pracy | ||
[bases] | Podstawy języka Python – struktury języka – typy danych – funkcje – wyświetlanie w konsoli – ciągi formatujące – konwersja typów – listy – słowniki – wyrażenia regularne | |
[strings] | Zapis ciągów znaków – metody klasy <str> – kodowanie / dekodowanie ciągów znaków w UTF-8 | |
[exceptions] | Obsługa wyjątków | |
[fonctions] | Zakres zmiennych – sposób przekazywania parametrów – korzystanie z modułów – ścieżka Python – parametry nazwane – funkcje rekurencyjne | |
[fichiers] | Odczyt/zapis pliku tekstowego – obsługa plików zakodowanych w UTF-8 – obsługa plików jSON | |
[impots/v01] | Wersja 1 ćwiczenia praktycznego: obliczenie podatku dochodowego. Aplikacja występuje w 18 wersjach – wersja 1 realizuje rozwiązanie proceduralne | |
[imports] | Zarządzanie zależnościami aplikacji poprzez import modułów – przedstawiono metodę zarządzania zależnościami – jest ona stosowana w całym dokumencie – zarządzanie ścieżką Python Path | |
[impots/v02] | Wersja 2 aplikacji opiera się na wersji 1, skupiając wszystkie stałe konfiguracyjne w jednym pliku konfiguracyjnym | |
[impots/v03] | Wersja 3 aplikacji opiera się na wersji 2, wykorzystując funkcje zamknięte w module – zarządzanie zależnościami odbywa się poprzez konfigurację – wprowadzono plik jSON do odczytu danych niezbędnych do obliczenia podatku oraz zapisywania wyników obliczeń | |
[classes/01] | Klasy – dziedziczenie – metody i właściwości – metody pobierające / ustawiające – konstruktor – właściwość [__dict__] | |
[classes/02] | Przedstawienie klas [BaseEntity] i [MyException] wykorzystywanych w dalszej części dokumentu – [BaseEntity] ułatwia konwersje między obiektami a słownikami | |
[troiscouches] | Architektura warstwowa i programowanie za pomocą interfejsów. W niniejszym rozdziale przedstawiono metody programowania wykorzystywane w dalszej części dokumentu | |
[impots/v04] | Wersja 4 aplikacji – ta wersja wdraża rozwiązanie oparte na architekturze warstwowej, programowaniu za pomocą interfejsów oraz wykorzystaniu klas pochodnych od [BaseEntity] i [MyException] | |
[databases/mysql] | Instalacja SGBD MySQL – połączenie z bazą danych – utworzenie tabeli – wykonanie poleceń SQL SELECT, UPDATE, DELETE, INSERT – transakcja – skonfigurowane zapytania SQL | |
[databases/postgresql] | Instalacja SGBD PostgreSQL – połączenie z bazą danych – utworzenie tabeli – wykonanie poleceń SQL SELECT, UPDATE, DELETE, INSERT – transakcja – skonfigurowane zapytania SQL | |
[databases/anysgbd] | Pisanie kodu niezależnego od SGBD | |
[databases/sqlalchemy] | ORM (Object Relational Mapper) SqlAlchemy – ORM umożliwia ujednoliconą pracę z różnymi SGBD - mapowanie klas / tabel SQL – operacje na klasach obrazów tabel SQL | |
[impots/v05] | Wersja 5 aplikacji do obliczania podatku – Wykorzystanie architektury warstwowej z wersji 04 orazORM SqlAlchemy do pracy z SGBD MySQL oraz PostgreSQL | |
[inet] | Programowanie internetowe – protokół TCP / IP (Transfer Control Protocol / Internet Protocol) – protokoły HTTP (HyperText Transfer Protocol) – SMTP (Simple Mail Transfer Protocol) – POP (Post Office Protocol) – IMAP (Internet Message Access Protocol) | |
[flask] | Usługi internetowe z wykorzystaniem frameworka Flask – wyświetlanie strony HTML – usługa internetowa jSON – żądania GET i POST – zarządzanie sesją internetową | |
[impots/http-servers/01] [impots/http-clients/01] | Wersja 6 ćwiczenia praktycznego – Tworzenie serwisu internetowego jSON do obliczania podatku z wykorzystaniem architektury wielowarstwowej – Napisanie klienta internetowego dla tego serwera z wykorzystaniem architektury wielowarstwowej – programowanie klient/serwer – wykorzystanie modułu [requests] | |
[impots/http-servers/02] [impots/http-clients/02] | Wersja 7 ćwiczenia dotyczącego aplikacji – ulepszona wersja 6: klient i serwer są wielowątkowe – narzędzia [Logger] do rejestrowania komunikacji między klientem a serwerem – [SendMail] do wysyłania wiadomości e-mail do administratora aplikacji | |
[impots/http-servers/03] [impots/http-clients/03] | Wersja 8 ćwiczenia praktycznego – wersja 7 została ulepszona poprzez zastosowanie sesji | |
[xml] | Zarządzanie XML za pomocą modułu [xmltodict] | |
[impots/http-servers/04] [impots/http-clients/04] | Wersja 9 ćwiczenia praktycznego – wersja 8 została zmodyfikowana w celu umożliwienia komunikacji klient–serwer w XML; | |
[impots/http-servers/05] [impots/http-clients/05] | Wersja 10 ćwiczenia praktycznego – zamiast przetwarzać N podatników za pomocą N zapytań GET, stosuje się jedno zapytanie POST z N podatnikami w treści POST | |
[impots/http-servers/06] [impots/http-clients/06] | Wersja 11 ćwiczenia praktycznego – zmiana architektury aplikacji klient/serwer: warstwa [métier] zostaje przeniesiona z serwera na klienta | |
[impots/http-servers/07] | Wersja 12 ćwiczenia praktycznego – w tej wersji zaimplementowano serwer MVC (Model – View – Controller), dostarczający na żądanie klienta, bez względu na to, czy chodzi o jSON, XML czy HTML. W niniejszym rozdziale zaimplementowano wersje serwera jSON i XML | |
[impots/http-clients/07] | Wdrożenie klientów jSON i XML serwera MVC w wersji 12 | |
[impots/http-servers/07] | Wdrożenie serwera HTML w wersji 12 – wykorzystanie frameworka CSS Bootstrap – | |
[impots/http-servers/08] | Wersja 13 ćwiczenia praktycznego – refaktoryzacja kodu z wersji 12 – zarządzanie sesją za pomocą modułu [flask_session] i serwera Redis – wykorzystanie zaszyfrowanych haseł | |
[impots/http-servers/09] [impots/http-clients/09] | Wersja 14 ćwiczenia praktycznego – implementacja URL z tokenem CSRF (Cross Site Request Forgery) | |
[impots/http-servers/10] | Wersja 15 ćwiczenia praktycznego – refaktoryzacja kodu z wersji 14 w celu obsługi dwóch typów akcji: ASV (Action Show View), które służą wyłącznie do wyświetlenia widoku bez zmiany stanu serwera, ADS (akcja „Do Something”), które wykonują operację zmieniającą stan serwera – wszystkie te akcje kończą się przekierowaniem do akcji ASV – pozwala to na prawidłowe zarządzanie odświeżaniem strony w przeglądarce klienta | |
[impots/http-servers/11] | Wersja 16 aplikacji – obsługa akcji URL z prefiksem | |
[impots/http-servers/12] | Wersja 17 aplikacji – przeniesienie wersji 16 na serwer Apache / Windows | |
[impots/http-servers/13] | Wersja 18 aplikacji – poprawia błąd występujący w wersji 17 |
Aplikacje klient-serwer do obliczania podatku wykorzystują następującą architekturę:

Powyższa warstwa [web] została zaimplementowana z wykorzystaniem architektury MVC:

Treść dokumentu jest bogata. Czytelnik, który dotrze do końca, uzyska dobry wgląd w programowanie internetowe MVC w języku Python / Flask, a ponadto dobre rozeznanie w programowaniu internetowym MVC w innych językach.
Dodatkowe informacje na temat frameworka Flask można znaleźć w dokumencie [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] autorstwa Miguela Grinberga. Zapoznałem się z niektórymi fragmentami jego kursu i wydają mi się one bardzo pouczające. Autor omawia wiele pojęć, które nie zostały poruszone w niniejszym dokumencie.