DelphiMVCFramework; Framework REST para Delphi
La verdad es que cuesta definir DelphiMVCFramework en pocas palabras para colocarlas en el título de esta entrada. He optado por definirlo como un “Framework REST” para Delphi, aunque es más que eso; En la página del proyecto se define como:
Delphi framework which provides an easy to use, scalable, flexible RESTful, JSON-RPC and ActiveRecord framework for Delphi developers.
…
DMVCFramework services can be compiled as console application, Windows Service, Linux daemon, Apache module (Windows and Linux) and IIS ISAPI (Windows).
Personalmente creo que es una buena opción (junto con DataSnap) tanto para proyectos nuevos a desarrollar, como para dotar a los proyectos actuales que tenemos en Delphi, de una “puerta de entrada” a interactuar con otros lenguajes, pensando en font-ends web y aplicaciones móviles.
Iré añadiendo los enlaces a las entradas de la serie:
Entrada 1: DelphiMVCFramework; Framework REST para Delphi
Entrada 2: DelphiMVCFramework; Primeros pasos
Entrada 3: DelphiMVCFramework; Acciones básicas (GET, POST, PUT y DELETE)
Entrada 4: DelphiMVCFramework; Soporte para ActiveRecord
Actualmente estoy evaluando este software, me perece muy interesante y la idea es aprovechar para mostrar algunas de sus posibilidades en el blog.
El proyecto es OpenSource y está alojado en Github. Actualmente funciona con Delphi para versiones 10 Seatle y superiores.
https://github.com/danieleteti/delphimvcframework/
Además hace poco que Daniele Teti ha publicado la guía oficial de la que ya hablé en la última entrada del blog. Actualmente está disponible en inglés, en portugués/brasileño y traduciéndose al Español (gran noticia por cierto) y que está al 20%.
DESCARGA E INSTALACIÓN
La “puesta en marcha” para empezar a trabajar con DMVC (a partir de ahora me referiré al Framework así para abreviar) es bastante sencilla y simple. En apenas 5 minutos podemos tenerlo funcionando y ejecutando algún ejemplo que nos devuelva resultados.
Desde la página de Github descargamos el proyecto (actualmente en la versión 2.3 “boron”) o clonar el repositorio vía Git.
Si optamos por descargar el ZIP, basta con descomprimirlo en un directorio y tendremos una estructura de carpetas similar a esta:
Compilamos los tres paquetes e instalamos el último, que es el que corresponde a la parte visual. No incluye componentes, pero si un par de asistentes para generar proyectos y units.
CREANDO EL PRIMER PROYECTO
Una vez compilados los paquetes, podemos usar el asistente para generar nuestro primer proyecto. Seleccionamos File/New/Other y escogemos “DelphiMVCFramework Project”.
Esto abrirá el Wizard y bastará para nuestra primera prueba con aceptarlo con los valores que nos propone.
Nos permite cambiar el nombre para las 2 units que nos va a crear automáticamente. (1)
Nos permite cambiar el puerto por defecto para nuestro servidor de prueba. (2)
Nos permite seleccionar que el asistente cree algunas acciones y métodos de ejemplo para tenerlos disponibles en el proyecto. (3)
EJECUTAR EL PROYECTO
Si intentamos ejecutar el proyecto, obtendremos un error debido a que nos faltan algunas librerías.
Aquí hay una documentación básica del proyecto, “La guía de puesta en marcha en 5 minutos”, que ya nos avisa de este problema. La solución es añadir estas carpetas a las opciones del proyecto o a las opciones del entorno.
C:\DMVC\sources
C:\DMVC\lib\dmustache
C:\DMVC\lib\loggerpro
C:\DMVC\lib\swagdoc\Source
Una vez hecho esto el proyecto compila y ejecuta sin problemas. Al arrancarlo nos aparece una ventana como esta, que nos indica que el servidor está en marcha:
Si ahora arrancamos nuestro navegador con la siguiente URL:
Deberíamos ver una página como esta:
Esto nos indica que el servidor está funcionando correctamente.
Hasta aquí esta entrada, básica y de introducción a DelphiMVCFramework; Para ilustrarla aquí tenéis un video corto que muestra todo el proceso.
Os adjunto el link al proyecto de ejemplo.
Un saludo y hasta la próxima.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…
Buenas al instalarlo me da un error en la siguiente linea:
lNullableTDateTime := TDateTime(aValue.AsExtended);
[dcc32 Error] MVCFramework.ActiveRecord.pas(2271): E2089 Invalid typecast
[dcc32 Fatal Error] dmvcframeworkRT.dpk(51): F2063 Could not compile used unit ‘MVCFramework.ActiveRecord.pas’
@BERTHGENIS
Hola.
He compilado el proyecto en varias versiones de delphi sin problemas.
¿Qué versión de delphi estás utilizando?
Revisa que estén compilando el package correspondiente a la versión de Delphi que estás utiliazando.
También puedes probar a descargar otra versión desde el repositorio.
Saludos.
Tengo ese mismo error, la versión es Delphi Berlin Update 2.
@Rolphy Reyes
Hola Rolphy.
Te comento lo mimo que al anterior usuario.
Intenta descargar otra versión del repositorio, a veces la ultimas Builds o versiones pueden tener algun problema de este estilo.
@Germán Estévez
Hola Netfali!
Hice eso y aún falla; incluso el wizard dice 3.2.2 (nitrogen).
Publique varios post en el grupo de Facebook, a ver si alguien puede comentar.
El error lo resolví, cambiando:
lNullableTDateTime := TDateTime(aValue.AsExtended);
por:
lNullableTDateTime := TDateTime(aValue.AsVariant);
No sé si esa sería la corrección adecuada, con eso compila y se instala sin mayores inconvenientes.
Hola, Netfali.
¿Cómo puedo generar un archivo dll isapi a partir de un proyecto mvc framework?
Saludos
@Alberto
Hola Alberto.
No hay mucha documentación, pero tienes algo aquí referente a ISAPI:
https://danieleteti.gitbooks.io/delphimvcframework/content/chapterdeploy_iis.html
En lo personal no he desarrollado un módulo ISAPI en DMVC. Debería ser igual que uno estandard de Delphi.
Hola soy nuevo en programación y en Delphi. Tengo que hacer una aplicación y me hablaron de DataSnap. He leído que es preferible DMVC framework.. Cual seria tu opinión y/o consejo al respecto??
@Carlos Gimenez
Hola Carlos.
Como he comentado en las entradas del blog, DMVC Framework me ha gustado mucho y lo veo muy sencillo de utilizar. No creo que haya una respuesta válida para todos los proyectos, habría que evaluar las necesidades.
Si tu servidor es propio, es posible que para grandes volúmenes Datasnap pueda ser más eficiente. Para pequeños proyectos tal vez optaría por DMVC.
De todas formas con datasnap tampoco tengo mucha experiencia como para dar referencia «serias».
Un saludo.