Skip to content

39. Conclusão

Vamos recapitular o trabalho realizado neste documento:

Capítulo
Dossiê
Conteúdo
   
 
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 console – strings 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]
Gerenciamento de exceções
[fonctions]
Escopo das variáveis – modo de passagem de parâmetros – uso de módulos – o Python Path – parâmetros nomeados – funções recursivas
[fichiers]
Leitura/gravação de um arquivo de texto – gerenciamento de arquivos codificados em UTF-8 – gerenciamento de arquivos jSON
[impots/v01]
Versão 1 do exercício prático: cálculo do imposto de renda. O exercício está disponível em 18 versões – A versão 1 implementa uma solução procedural
[imports]
Gerenciamento das dependências de um aplicativo por meio da importação de módulos – é apresentado um método de gerenciamento de dependências – ele é utilizado em todo o documento – gerenciamento do Python Path
[impots/v02]
A versão 2 da aplicação retoma a versão 1, reunindo todas as constantes de configuração em um arquivo de configuração
[impots/v03]
A versão 3 do aplicativo dá continuidade à versão 2, utilizando funções encapsuladas em um módulo — o gerenciamento de dependências é feito por meio da configuração — e introduz o arquivo 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 restante do documento – [BaseEntity] facilita as conversões entre objeto e dicionário
[troiscouches]
Arquitetura em camadas e programação por interfaces. Este capítulo apresenta os métodos de programação utilizados no restante do documento
[impots/v04]
Versão 4 do aplicativo – esta versão implementa uma solução com arquitetura em camadas, programação por interfaces e o uso de classes derivadas de [BaseEntity] e [MyException]
[databases/mysql]
Instalação do SGBD MySQL – conexão com o banco 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 – conexão com o banco de dados – criação de uma tabela – execução de comandos 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 maneira unificada com diferentes SGBD - mapeamento de classes/tabelas SQL – operações nas classes de imagem das tabelas SQL
[impots/v05]
Versão 5 do aplicativo de cálculo de impostos – Utilização da arquitetura em camadas da versão 04 e doORM SqlAlchemy para trabalhar com as SGBD MySQL e PostgreSQL
[inet]
Programação na Internet – protocolo TCP / IP (Protocolo de Controle 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 Flask – exibição de uma página HTML – serviço web jSON – solicitações GET e POST – gerenciamento 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 cálculo de impostos com arquitetura multicamadas – Desenvolvimento de um cliente web para esse servidor com 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 aprimorada: o cliente e o servidor são multithread – utilitários [Logger] para registrar 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 aprimorada com o uso de uma sessão
[xml]
Gerenciamento 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 foi modificada para permitir trocas 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 consultas GET, utiliza-se uma única consulta POST com os N contribuintes no corpo da consulta POST
[impots/http-servers/06]
[impots/http-clients/06]
Versão 11 do exercício de aplicação – a arquitetura cliente/servidor do aplicativo é 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 – uso 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 – gerenciamento de sessão com o módulo [flask_session] e um servidor Redis – uso de senhas criptografadas
[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 lidar com dois tipos de ações: ASV (Ação Show View), que servem apenas para exibir uma visualização sem alterar o estado do servidor, ADS (Ação Do Something), que executam uma ação que altera o estado do servidor – todas essas ações terminam com um redirecionamento para uma ação ASV – isso permite gerenciar corretamente as atualizações de página do navegador do cliente
[impots/http-servers/11]
Versão 16 do aplicativo – gerenciamento das ações URL com prefixo
[impots/http-servers/12]
Versão 17 do aplicativo – migração da versão 16 para um servidor Apache/Windows
[impots/http-servers/13]
Versão 18 do aplicativo – corrige uma falha da versão 17

Os aplicativos cliente/servidor de cálculo de impostos implementaram a seguinte arquitetura:

Image

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

Image

O conteúdo do documento é denso. O leitor que chegar até o 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 em outras 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 de seu curso e elas me pareceram muito didáticas. O autor apresenta muitos conceitos que não são abordados neste documento.