39. Conclusão
Recapitulemos o trabalho realizado neste documento:
Capítulo | Dossiê | Índice |
Apresentação do curso | ||
Instalação de um ambiente de trabalho | ||
[bases] | Noções básicas da linguagem Python – estruturas da linguagem – tipos de dados – funções – saída na consola – cadeias de formatação – conversão de tipos – listas – dicionários – expressões regulares | |
[strings] | Notação de cadeias de caracteres – métodos da classe <str> – codificação/decodificação de cadeias de caracteres em UTF-8 | |
[exceptions] | Gestão de exceções | |
[fonctions] | Âmbito das variáveis – modo de passagem de parâmetros – utilização de módulos – o Python Path – parâmetros nomeados – funções recursivas | |
[fichiers] | Leitura/gravação de um ficheiro de texto – gestão de ficheiros codificados em UTF-8 – gestão de ficheiros jSON | |
[impots/v01] | Versão 1 do exercício prático: cálculo do imposto sobre o rendimento. A aplicação está disponível em 18 versões – A versão 1 implementa uma solução procedural | |
[imports] | Gestão das dependências de uma aplicação através da importação de módulos – é apresentado um método de gestão de dependências – este é utilizado ao longo de todo o documento – gestão do Python Path | |
[impots/v02] | A versão 2 da aplicação retoma a versão 1, reunindo todas as constantes de configuração num ficheiro de configuração | |
[impots/v03] | A versão 3 da aplicação retoma a versão 2, utilizando funções encapsuladas num módulo — a gestão das dependências é feita por configuração — introdução do ficheiro jSON para ler os dados necessários ao cálculo do imposto e gravar os resultados dos cálculos | |
[classes/01] | Classes – herança – métodos e propriedades – getters/setters – construtor – propriedade [__dict__] | |
[classes/02] | Apresentação das classes [BaseEntity] e [MyException] utilizadas no resto do documento – [BaseEntity] facilita as conversões objeto/dicionário | |
[troiscouches] | Arquitetura em camadas e programação por interfaces. Este capítulo apresenta os métodos de programação utilizados no resto do documento | |
[impots/v04] | Versão 4 da aplicação – esta versão implementa uma solução com uma arquitetura em camadas, programação por interfaces e a utilização de classes derivadas de [BaseEntity] e [MyException] | |
[databases/mysql] | Instalação do SGBD MySQL – ligação à base de dados – criação de uma tabela – execução de comandos SQL SELECT, UPDATE, DELETE, INSERT – transação – consultas SQL configuradas | |
[databases/postgresql] | Instalação do SGBD PostgreSQL – ligação à base de dados – criação de uma tabela – execução de ordens SQL SELECT, UPDATE, DELETE, INSERT – transação – consultas SQL configuradas | |
[databases/anysgbd] | Escrever código independente do SGBD | |
[databases/sqlalchemy] | O ORM (Mapeador Objeto-Relacional) SqlAlchemy – um ORM permite trabalhar de forma unificada com diferentes SGBD - mapeamento de classes/tabelas SQL – operações nas classes de imagem das tabelas SQL | |
[impots/v05] | Versão 5 da aplicação de cálculo de impostos – Utilização da arquitetura em camadas da versão 04 e daORM SqlAlchemy para trabalhar com as SGBD MySQL e PostgreSQL | |
[inet] | Programação na Internet – protocolo TCP / IP (Protocolo de Controlo de Transferência / Protocolo de Internet) – protocolos HTTP (Protocolo de Transferência HyperText) – SMTP (Protocolo Simples de Transferência de Correio) – POP (Protocolo de Correio) – IMAP (Protocolo de Acesso a Mensagens da Internet) | |
[flask] | Serviços web com o framework web Flask – visualização de uma página HTML – serviço web jSON – pedidos GET e POST – gestão de uma sessão web | |
[impots/http-servers/01] [impots/http-clients/01] | Versão 6 do exercício prático – Criação de um serviço web jSON para o cálculo do imposto com uma arquitetura multicamadas – Programação de um cliente web para este servidor com uma arquitetura multicamadas – programação cliente/servidor – utilização do módulo [requests] | |
[impots/http-servers/02] [impots/http-clients/02] | Versão 7 do exercício da aplicação – a versão 6 foi melhorada: o cliente e o servidor são multithread – utilitários [Logger] para registar as trocas entre cliente e servidor – [SendMail] para enviar um e-mail ao administrador da aplicação | |
[impots/http-servers/03] [impots/http-clients/03] | Versão 8 do exercício prático – a versão 7 foi melhorada através da utilização de uma sessão | |
[xml] | Gestão XML com o módulo [xmltodict] | |
[impots/http-servers/04] [impots/http-clients/04] | Versão 9 do exercício prático – a versão 8 é alterada para permitir comunicações cliente/servidor em XML; | |
[impots/http-servers/05] [impots/http-clients/05] | Versão 10 do exercício prático – em vez de processar N contribuintes por meio de N pedidos GET, utiliza-se um único pedido POST com os N contribuintes no corpo do POST | |
[impots/http-servers/06] [impots/http-clients/06] | Versão 11 do exercício de aplicação – a arquitetura cliente/servidor da aplicação é alterada: a camada [métier] passa do servidor para o cliente | |
[impots/http-servers/07] | Versão 12 do exercício prático – esta versão implementa um servidor MVC (Model – View – Controller) que fornece, indistintamente, a pedido do cliente, jSON, XML e HTML. Este capítulo implementa as versões jSON e XML do servidor | |
[impots/http-clients/07] | Implementação dos clientes jSON e XML do servidor MVC da versão 12 | |
[impots/http-servers/07] | Implementação do servidor HTML da versão 12 – utilização do framework CSS Bootstrap – | |
[impots/http-servers/08] | Versão 13 do exercício prático – Refatoração do código da versão 12 – gestão da sessão com o módulo [flask_session] e um servidor Redis – utilização de palavras-passe encriptadas | |
[impots/http-servers/09] [impots/http-clients/09] | Versão 14 do exercício prático – implementação do URL com um token CSRF (Cross Site Request Forgery) | |
[impots/http-servers/10] | Versão 15 do exercício prático – refatoração do código da versão 14 para gerir dois tipos de ações: ASV (Ação Show View), que servem apenas para apresentar uma vista sem alterar o estado do servidor, ADS (Ação «Do Something»), que executam uma ação que altera o estado do servidor – todas estas ações terminam com um redirecionamento para uma ação ASV – o que permite gerir corretamente as atualizações da página no navegador do cliente | |
[impots/http-servers/11] | Versão 16 da aplicação – gestão das URL com prefixo | |
[impots/http-servers/12] | Versão 17 da aplicação – migração da versão 16 para um servidor Apache / Windows | |
[impots/http-servers/13] | Versão 18 da aplicação – corrige uma anomalia da versão 17 |
As aplicações cliente/servidor para o cálculo de impostos implementaram a seguinte arquitetura:

A camada [web] acima foi implementada com uma arquitetura MVC:

O conteúdo do documento é denso. O leitor que o ler até ao fim terá uma boa visão da programação web MVC em Python/Flask e, além disso, uma boa visão da programação web MVC noutras linguagens.
É possível encontrar informações complementares sobre o framework Flask no documento [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] do autor Miguel Grinberg. Li algumas partes do seu curso e estas pareceram-me muito didáticas. O autor apresenta muitos conceitos que não são abordados neste documento.