Skip to content

39. Conclusión

Recordemos el trabajo realizado en este documento:

Capítulo
Expediente
Contenido
   
 
Presentación del curso
 
Configuración de un entorno de trabajo
[bases]
Fundamentos del lenguaje Python: estructuras del lenguaje, tipos de datos, funciones, salida a la consola, cadenas de formato, conversión de tipos, listas, diccionarios y expresiones regulares
[strings]
Notación de cadenas de caracteres – métodos de la clase <str> – codificación/decodificación de cadenas de caracteres en UTF-8
[exceptions]
Manejo de excepciones
[fonctions]
Ámbito de las variables – Modo de paso de parámetros – Uso de módulos – La ruta de Python – Parámetros con nombre – Funciones recursivas
[fichiers]
Lectura y escritura de un archivo de texto – manejo de archivos codificados en UTF-8 – manejo de archivos jSON
[impots/v01]
Versión 1 del ejercicio de aplicación: cálculo del impuesto sobre la renta. La aplicación cuenta con 18 versiones; la versión 1 implementa una solución procedimental
[imports]
Gestión de las dependencias de una aplicación mediante la importación de módulos: se presenta un método de gestión de dependencias, que se utiliza a lo largo de todo el documento; gestión de la ruta de Python
[impots/v02]
La versión 2 de la aplicación retoma la versión 1 al reunir todas las constantes de configuración en un archivo de configuración
[impots/v03]
La versión 3 de la aplicación retoma la versión 2 utilizando funciones encapsuladas en un módulo —la gestión de las dependencias se realiza mediante la configuración— e introduce el archivo jSON para leer los datos necesarios para el cálculo del impuesto y escribir los resultados de los cálculos
[classes/01]
Clases – herencia – métodos y propiedades – getters / setters – constructor – propiedad [__dict__]
[classes/02]
Presentación de las clases [BaseEntity] y [MyException] utilizadas en el resto del documento – [BaseEntity] facilita las conversiones entre objetos y diccionarios
[troiscouches]
Arquitectura en capas y programación por interfaces. Este capítulo presenta los métodos de programación utilizados en el resto del documento
[impots/v04]
Versión 4 de la aplicación: esta versión implementa una solución con una arquitectura en capas, programación mediante interfaces y el uso de clases derivadas de [BaseEntity] y [MyException]
[databases/mysql]
Instalación de SGBD MySQL – conexión a la base de datos – creación de una tabla – ejecución de órdenes SQL SELECT, UPDATE, DELETE, INSERT – transacción – consultas SQL configuradas
[databases/postgresql]
Instalación de SGBD PostgreSQL – conexión a la base de datos – creación de una tabla – ejecución de órdenes SQL SELECT, UPDATE, DELETE, INSERT – transacción – consultas SQL configuradas
[databases/anysgbd]
Escribir código independiente de SGBD
[databases/sqlalchemy]
El ORM (mapeador objeto-relacional) SqlAlchemy – un ORM permite trabajar de manera unificada con diferentes SGBD - clases de mapeo / tablas SQL – operaciones sobre las clases de imagen de las tablas SQL
[impots/v05]
Versión 5 de la aplicación de cálculo de impuestos – Uso de la arquitectura en capas de la versión 04 y de laORM SqlAlchemy para trabajar con los SGBD MySQL y PostgreSQL
[inet]
Programación de Internet – protocolo TCP / IP (Protocolo de control de transferencia / Protocolo de Internet) – protocolos HTTP (Protocolo de transferencia HyperText) – SMTP (Protocolo simple de transferencia de correo) – POP (Protocolo de oficina postal) – IMAP (Protocolo de acceso a mensajes de Internet)
[flask]
Servicios web con el marco de trabajo web Flask – visualización de una página HTML – servicio web jSON – solicitudes GET y POST – gestión de una sesión web
[impots/http-servers/01]
[impots/http-clients/01]
Versión 6 del ejercicio práctico: creación de un servicio web jSON para el cálculo de impuestos con una arquitectura multicapa; desarrollo de un cliente web para este servidor con una arquitectura multicapa; programación cliente/servidor; uso del módulo [requests]
[impots/http-servers/02]
[impots/http-clients/02]
Versión 7 del ejercicio de la aplicación – la versión 6 ha sido mejorada: el cliente y el servidor son multihilo – utilidades [Logger] para registrar los intercambios entre el cliente y el servidor – [SendMail] para enviar un correo electrónico al administrador de la aplicación
[impots/http-servers/03]
[impots/http-clients/03]
Versión 8 del ejercicio de aplicación: la versión 7 se ha mejorado mediante el uso de una sesión
[xml]
Administración XML con el módulo [xmltodict]
[impots/http-servers/04]
[impots/http-clients/04]
Versión 9 del ejercicio de aplicación: se modifica la versión 8 para que las comunicaciones entre cliente y servidor se realicen en XML;
[impots/http-servers/05]
[impots/http-clients/05]
Versión 10 del ejercicio práctico: en lugar de procesar N contribuyentes mediante N solicitudes GET, se utiliza una única solicitud POST con los N contribuyentes en el cuerpo de la solicitud POST
[impots/http-servers/06]
[impots/http-clients/06]
Versión 11 del ejercicio de aplicación: se modifica la arquitectura cliente/servidor de la aplicación; la capa [métier] pasa del servidor al cliente
[impots/http-servers/07]
Versión 12 del ejercicio de aplicación: esta versión implementa un servidor MVC (Modelo – Vista – Controller) que entrega indistintamente, a petición del cliente, jSON, XML y HTML. Este capítulo implementa las versiones jSON y XML del servidor
[impots/http-clients/07]
Implementación de los clientes jSON y XML del servidor MVC de la versión 12
[impots/http-servers/07]
Implementación del servidor HTML de la versión 12 – uso del marco de trabajo CSS Bootstrap –
[impots/http-servers/08]
Versión 13 del ejercicio práctico: refactorización del código de la versión 12 – gestión de la sesión con el módulo [flask_session] y un servidor Redis – uso de contraseñas cifradas
[impots/http-servers/09]
[impots/http-clients/09]
Versión 14 del ejercicio práctico: implementación de URL con un token CSRF (Cross Site Request Forgery)
[impots/http-servers/10]
Versión 15 del ejercicio práctico: refactorización del código de la versión 14 para manejar dos tipos de acciones: ASV (Acción Mostrar Vista), que solo sirven para mostrar una vista sin modificar el estado del servidor, ADS (Acción «Do Something»), que realizan una acción que modifica el estado del servidor; todas estas acciones terminan con una redirección a una acción ASV; esto permite gestionar correctamente las actualizaciones de página del navegador del cliente
[impots/http-servers/11]
Versión 16 de la aplicación: gestión de URL con prefijo
[impots/http-servers/12]
Versión 17 de la aplicación: migración de la versión 16 a un servidor Apache / Windows
[impots/http-servers/13]
Versión 18 de la aplicación: corrige una anomalía de la versión 17

Las aplicaciones cliente/servidor para el cálculo de impuestos han implementado la siguiente arquitectura:

Image

La capa [web] mencionada anteriormente se implementó con una arquitectura MVC:

Image

El contenido del documento es denso. El lector que llegue hasta el final obtendrá una buena visión de la programación web MVC en Python/Flask y, además, una buena visión de la programación web MVC en otros lenguajes.

Se puede encontrar información adicional sobre el marco Flask en el documento [https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world] del autor Miguel Grinberg. He leído algunas partes de su curso y me han parecido muy didácticas. El autor presenta muchos conceptos que no se abordan en este documento.