En los artículos anteriores, hablamos de las diferencias entre MVVM y MVC y una manera en la que se podría implementar MVVM en Delphi.

En esta ocasión, nos enfocaremos en un primer acercamiento al patrón MVC. A diferencia de MVVM, Delphi si cuenta con entornos que nos permiten utilizar el patrón MVC siendo uno de los más conocidos Delphi MVC Framework. En este artículo veremos una introducción a este marco de trabajo.

¿Qué es Delphi MVC Framework?

Como su nombre indica, es un Framework que proporciona un marco RESTFull, JSON-RPC y ActiveRecord para desarrolladores Delphi. Es fácil de usar, escalable y flexible. Además de poder compilar para Windows (32 y 64) y Linux (64). Tal y como nos indican desde el propio repositorio del proyecto.

Para empezar a utilizar este framework la instalación es muy rápida  y sencilla, Daniele Teti, el creador de este framework, cuenta con una guía de DMVC Framework, donde te explica todo este proceso.

Además tiene un repositorio github que cuenta con muchos ejemplos del uso de Delphi MVC Framework.

Para conocer DMVC Framework hay que tener en cuenta dos conceptos claves en su funcionamiento, los términos HTTP y REST.

Protocolo HTTP

Al estar enfocado hacia el uso Web, Delphi MVC Framework se basa en el protocolo HTTP

Explicado de forma simplificada, nosotros realizamos peticiones al servidor web y este nos devuelve una respuesta. 

Por ejemplo, le pedimos una lista de empleados al servidor y nos responde con los datos, por ejemplo en formato JSON, que necesitamos para mostrar la lista.

REST (Transferencia de estado representacional)

REST es una técnica de arquitectura de software que nos permite conectar varios sistemas basados en el protocolo HTTP, es decir, nos permite generar las peticiones para comunicar nuestro servidor con nuestro cliente.

Aunque el protocolo HTTP dispone de más métodos. Los cuatro métodos básicos HTTP en los que se apoya son:

  • GET : para obtener datos
  • POST : para crear nuevos datos
  • PUT : para modificar datos
  • DELETE : para eliminar datos

Ventajas de Delphi frente a otros lenguajes.

Delphi te permite crear tanto el backend como el frontend. En otros lenguajes, por ejemplo Angular, creas tu aplicación pero dependes de otras tecnologías para conectarte a un backend, por ejemplo, creado con nodejs y expressjs (o incluso creado con el propio Delphi).

Con Delphi puedes hacer todo el desarrollo al completo de una aplicación sin necesidad de nada más, podrías tener, por ejemplo tu base de datos con FireDAC en Delphi y el proyecto con DMVC Framework para montar la estructura de los controladores y los modelos, y luego las vistas con los clásicos formularios VCL.

Controladores

Los controladores nos van a permitir recibir peticiones y enviar una respuesta para dicha petición. Por ejemplo, nos solicitan los datos de un empleado en concreto, el controlador recibe la petición y devuelve la información de ese empleado que se está solicitando.

Crear un controlador en Delphi MVC Framework es muy sencillo, una vez tenemos instalado y configurado el framework, al ir a File -> New -> Other, nos aparece las opciones de DMVCFramework donde podemos seleccionar DelphiMVCFramework Controller.

Esto nos abre una ventana donde podremos poner el nombre del controlador y si queremos que nos cree ya por defecto algunos métodos.

Cada controlador tendrá los MVCPath referentes a lo que queremos manejar y los procedimientos que necesitemos para manejar las peticiones. Por ejemplo, en el controlador de employees, tendremos todas las rutas (/employees, /employee/{idEmployee}, etc) y métodos (get, post, put, delete) necesarios para el manejo de los métodos HTTP para los empleados.

Cuando creamos un nuevo controlador, tenemos que asegurarnos de añadirlo en la configuración del WebModule que creamos cuando iniciamos un proyecto de DMVC Framework. Esta unidad contiene un procedure WebModuleCreate donde hay una serie de configuraciones y al final de este procedimiento tendremos esta línea:

FMVC.AddController(TNombreDelPrimerControlador);

Con esa línea de código avisamos de la existencia de un controlador que existe en la aplicación. Por tanto, si creamos un controlador de Employees y lo llamamos TEmployeesController, tenemos que asegurarnos de que ese procedure tenga una línea más con el siguiente código:

FMVC.AddController(TEmployeesController);

Modelos

Los modelos te sirven para conocer la estructura que tiene las tablas de la base de datos, por ejemplo los campos que tiene la tabla employee, para luego mostrarlos en nuestra aplicación.

Hay muchas maneras de trabajar con los modelos dentro de Delphi MVC Framework. La manera tradicional es con los DataModules, simplemente es conectarse a la base de datos y mostrar los datos, y otra forma de hacerlo es usar patrones de diseño como por ejemplo el patrón DAO (Data Access Object), que no es más que crear clases que representen un objeto y obtener sus datos a través de métodos getters y setters.

Vistas

Las vistas hay muchas maneras de integrarlas debido a que estos elementos se encuentran desacoplados de la aplicación.

Esto nos permite el poder generar las vistas tanto con Delphi como con cualquier otro cliente que consuma los datos que devuelve Delphi MVC Framework. (Angular, VCL, TMS Web Core, etc.)

Todo esto favorece que se pueda realizar el desarrollo de la aplicación de manera simultánea entre varios programadores.

La importancia del routing

Cuando te manejas por una aplicación web o consumes recursos de un API RESTful (ya hemos dicho que se basa en el protocolo HTTP), adquiere gran importancia el uso de rutas (localizador de recursos uniforme o url) para ir moviéndote de una recurso a otro (por ejemplo localhost:8080/ sería la ruta principal y si quiero ir a la pantalla de empleados pues podría ser localhost:8080/employee).

Para esto, DMVC Framework permite el uso del atributo MVCPath en los controladores.

Por ejemplo si estamos trabajando con el controlador de empleados, esto sería algo así:

[MVCPath(‘/employees’)]

En angular sería equivalente al routing donde se relaciona cada ruta con el controlador en cuestión, por ejemplo:

routes = [{path: ‘employees’, component: EmployeesComponent }]

Buenas prácticas

Siempre es aconsejable recalcar la importancia de intentar escribir un código fácil de leer y bien estructurado, para nosotros mismos (si llevamos un tiempo sin ver el código y debemos realizar cambios) como para otro programador que tenga que entender lo que hemos hecho para continuarlo.

Por eso si creamos una aplicación MVC es importante tener al menos el proyecto separado por carpetas para los diferentes elementos:

  • carpeta Models para los modelos
  • carpeta Views para las vistas
  • carpeta Controllers para los controladores.

Además una buena práctica, es aplicar a todos los ficheros de estas carpetas una misma nomenclatura, por ejemplo, si a un modelo lo llamamos EmployeeModel, si añadimos otro modelo, deberíamos seguir esa misma estructura, incluyendo al final «Model».

Esto aunque parezca simple, facilita mucho la comprensión de la organización del proyecto, ayudando a compañeros o a nosotros mismos a identificar las secciones de código.

Conclusión

Ahora ya conoces un poco acerca de este poderoso framework de Delphi que nos permite utilizar el patrón MVC.

Dados los requerimientos de nuestros clientes, hemos realizado muchos proyectos con el patrón MVC y hemos encontrado en Delphi MVC Framework una herramienta muy útil para hacer frente de forma exitosa las necesidades que nos han transmitido.

Para cualquier consulta o ayuda que necesites para tus proyectos Delphi puedes ponerte en contacto con nosotros a través de nuestro formulario de contacto.

¿Quieres saber más?

Actualmente contamos con un curso de DMVC Framework, donde te mostramos todo lo que necesitas saber del uso de este framework y profundizamos aún más en el patrón MVC.

Si quieres apuntarte a este cursos y muchos más de Delphi, puedes hacerlo desde nuestra plataforma NoSoloDelphi.

Acerca de Emilio Pérez

Programando desde los 9 años y trabajando desde los 19 con Delphi.
Oracle y PostgreSQL DBA y Developer.
Especializado en formar y enseñar a programar.
CEO de Abatic y Cudacu

Reader Interactions

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Responsable: ABATIC SOLUCIONES TECNOLOGICAS SLU
Finalidad: gestionar los comentarios.
Legitimación: tu consentimiento.
Destinatarios: los datos que me facilitas estarán ubicados en los servidores de Nicalia dentro de la UE. Ver política de privacidad de Nicalia.
Derechos: podrás ejercer tus derechos, entre otros, a acceder, rectificar, limitar, suprimir, portabilidad y olvido de tus datos.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.