Become a member!

La segunda edición de la guía de DelphiMVCFramework, seis años después

🌐
Este artículo también está disponible en otros idiomas:
🇮🇹 Italiano  •  🇬🇧 English  •  🇩🇪 Deutsch  •  🇧🇷 Português  •  🇫🇷 Français

DMVCFramework - the official guide, segunda edición, de Daniele Teti

La guía oficial de DelphiMVCFramework, el proyecto open source Delphi más popular en GitHub para API REST y aplicaciones web, vuelve con una segunda edición. Ya al 90% en Leanpub.

Cuando salió la primera edición era agosto de 2020. Acabábamos de salir de la fase más dura de la pandemia, el mundo era distinto y, en cierta medida, nosotros también. De tiempo libre, en esos meses, me sobraba (como a mucha gente), y lo dediqué a escribir un libro, el primero que publiqué por mi cuenta.

Seis años después tuve que esperar al cierre de verano de la oficina para encontrar tiempo de terminar otro. Las vacaciones de verdad las hice en junio (el caos no me gusta), y Roma en agosto me gusta: la ciudad se vacía, el tráfico se toma al menos dos semanas de descanso y los días parecen ir más despacio. Así que, ¿por qué no terminar la segunda edición que llevaba escribiendo desde noviembre de 2025?

Aquí está: DMVCFramework - the official guide, segunda edición, publicada en Leanpub y completa al 90%.


Seis años de trabajo en el framework: qué cambia respecto a la primera edición

La primera edición hablaba de dmvcframework-3.2.1-carbon, esta se centra en dmvcframework-3.5.0-silicon, y por el camino el framework ha avanzado mucho: functional actions, el framework de validación, el soporte WebSocket, la inyección de dependencias integrada, el repository pattern, las vistas TemplatePro y HTMX, y la arquitectura de servidor pluggable con HTTPS integrado y el serializador JSON streaming.

Cuando en noviembre de 2025 abrí el archivo de la primera edición para actualizarlo, tardé poco en llegar a una conclusión: hacía falta reescribirlo. Quince capítulos de treinta son nuevos, los demás se han reescrito en lugar de actualizarse. La primera edición explicaba bien la 3.2.1-carbon. La 3.5.0-silicon es otro framework, y por eso lo que había nacido como una actualización acabó siendo otro libro. Lo que sí mantuve es el ejemplo de la Municipal Library, porque aguanta bien la evolución que verás en los capítulos: poco a poco, el proyecto crece.

El primer cambio lo ves antes incluso de escribir una línea de código: el wizard del IDE ahora parte de ocho presets de proyecto, y el libro empieza justo ahí, por el proyecto que genera el propio wizard.

Los ocho presets de proyecto DelphiMVCFramework en la ventana New Items de RAD Studio

El resultado son 30 capítulos, más de 550 páginas y 46 proyectos Delphi en el código de ejemplo disponible en GitHub.

La release de referencia, a día de hoy, es dmvcframework-3.5.0-silicon RC6: es contra la que compilan todos los ejemplos del libro, y es la que encuentras descrita en el post de anuncio de la RC6. Al ser una release candidate, el código del libro seguirá las correcciones que lleguen hasta la dmvcframework-3.5.0-silicon final.


Qué problemas resuelve el libro

El libro está organizado alrededor de las cosas que te sueles encontrar encima de la mesa:

  • nunca has escrito un servicio web con Delphi y tienes que empezar desde cero, entendiendo qué hace un controller antes de escribir uno (capítulos 1-5)
  • tienes que entregar rápido, aprender mientras escribes y quedarte en estándares que cualquiera ya sabe consumir: HTTP y REST, JSON-RPC 2.0, OpenAPI (capítulos 2, 16, 17)
  • tienes una clase Delphi que corre en un servidor y sus métodos tienen que poder llamarse desde fuera: desde una VCL, desde una FMX, desde una app móvil, desde JavaScript, desde C#, desde Java, desde C++, desde Go, desde Rust, desde Python, desde cualquier cosa que hable HTTP (capítulo 16, JSON-RPC)
  • tienes que llamar desde Delphi a una API de terceros, usando el cliente REST que el framework trae consigo (capítulo 27)
  • tienes una base de datos y necesitas exponerla como API REST sin escribir un controller para cada tabla (capítulos 6-11)
  • la API hoy está abierta y tiene que empezar a distinguir quién llama, con usuarios tuyos o con el identity provider de la empresa (capítulos 12, 13, 15)
  • el cliente tiene que recibir actualizaciones mientras ocurren, en lugar de preguntar cada cinco segundos (capítulo 20)
  • alguien te pide la documentación de la API, y la quiere actualizada (capítulo 17)
  • tienes que escribir una app web que corra en el navegador y quieres quedarte en Delphi: HTML generado por el servidor con TemplatePro e interactividad con HTMX, sin cargar con un framework JavaScript, su curva de aprendizaje y un ecosistema que fuera del mundo Delphi cambia cada dos años (capítulos 18 y 19)
  • el servidor tiene que estar detrás de TLS y correr como servicio en Windows o en Linux (capítulos 23 y 25)
  • algo va lento o se rompe en producción y necesitas logs y métricas para entender dónde (capítulo 24)
  • el código se ha vuelto difícil de probar y quieres separar las piezas (capítulos 21 y 22)

Si partes de cero, el único requisito es algo de Delphi: HTTP, REST y lo demás lo explica el libro. Si en cambio usas DMVCFramework en producción desde hace años, los primeros cinco capítulos los pasarás bastante rápido. Al final encontrarás también un capítulo entero (Hidden Gems) sobre cosas que el framework sabe hacer desde hace tiempo y que, entre cursos y consultorías, he visto que conoce poquísima gente.


Un solo ejemplo, de principio a fin

La Municipal Library API es la gestión de una biblioteca municipal. Se parte del proyecto generado por el wizard, y en el último capítulo esa misma API autentica a los usuarios, les permite entrar con un identity provider externo, transmite por WebSocket, se documenta sola con OpenAPI y corre detrás de TLS.

Cada capítulo añade una sola cosa a un sistema que ya tienes en la cabeza, en lugar de volver a empezar cada vez con un ejemplo desconectado del anterior.

Entre los capítulos nuevos están ActiveRecord in Depth, OpenID Connect con un Keycloak real, y la Minimal API que llegó justo con dmvcframework-3.5.0-silicon.

Este es el índice completo:

# Capítulo # Capítulo
0 Foreword and Introduction 15 Municipal Library: Authentication & Authorization Implementation
1 Getting Started with DelphiMVCFramework 16 JSON-RPC
2 Controllers and Routing 17 Swagger / OpenAPI Documentation
3 Functional Actions 18 Server-Side Views with TemplatePro
4 Renders 19 Building Modern Web Apps with HTMX
5 Validation 20 WebSocket Support
6 Municipal Library: The Database 21 Dependency Injection
7 Municipal Library: The APIs 22 Repository Pattern
8 Municipal Library: Creating APIs using Datasets 23 Server Engines & HTTPS
9 Municipal Library: MVCActiveRecord Introduction 24 Logging and Monitoring
10 Municipal Library: Complete APIs with MVCActiveRecord 25 Deployment Scenarios
11 ActiveRecord in Depth 26 Hidden Gems
12 Authentication & Authorization 27 RESTful Client
13 OpenID Connect 28 Tips and Tricks
14 Middlewares 29 Minimal Web API
A MVCActiveRecord at a Glance (apéndice)

El libro está en inglés, como la primera edición. Si llegan al menos 30 peticiones a d.teti@bittime.it pidiendo una versión en español, la pongo en marcha. Escríbeme con el asunto Guía DMVCFramework en español: las cuento y te aviso.


Los ejemplos son código real y siguen online

Los 46 ejemplos del libro están compilados y probados con Delphi 13 Florence sobre dmvcframework-3.5.0-silicon, y cada salida impresa en el libro viene del endpoint que la precede, ejecutado de verdad.

El código es público:

github.com/danieleteti/dmvcframeworktheofficialguideexamples

Una carpeta por capítulo, licencia Apache 2.0, y el compromiso de mantenerlo actualizado con el tiempo: cuando el framework cambia, los proyectos se actualizan detrás. Al menos hasta la próxima edición mayor del libro, que vendrá con sus propios ejemplos.


Por qué conviene comprarlo ahora que está al 90%

En Leanpub el precio lo eliges tú por encima de un mínimo. Hoy el mínimo son 45 dólares, el recomendado 79. He decidido mantenerlo más bajo de lo normal hasta que termine de escribirlo: cuando el libro esté al 100% el precio mínimo subirá. Es mi manera de dar las gracias a quien lo compra en las primeras semanas, y es el primer motivo para comprarlo ahora.

El segundo es que en Leanpub las actualizaciones son gratis para siempre. Quien compra la versión al 90% recibe todas las revisiones posteriores del mismo libro sin pagar la diferencia, incluida la alineada con la 3.5.0 final (el libro sigue una versión que todavía es release candidate, así que ya hay una revisión programada después del freeze).

El tercer motivo es el que más me interesa: mientras el libro siga abierto, todavía se puede cambiar. Un pasaje poco claro, un ejemplo que en tu sistema no arranca, un capítulo que en tu opinión se salta algo: todo eso todavía puedo arreglarlo. En Leanpub hay un enlace Email the Author que permite escribirme directamente. Quien lee ahora hace también de revisor, y acaba en los agradecimientos de la versión final.

Quien compró la primera edición tiene un motivo más. A todos los lectores de la primera edición inscritos en la lista de correo de clientes en Leanpub (el opt-in que aparece en la página de agradecimiento después de la compra) les mando un código de descuento para la segunda edición, válido en este periodo que precede a la versión final. Si en su momento dejaste la casilla marcada, el código te llega ahí.


El 10% que falta

Los treinta capítulos están escritos, verificados y listos. Ese 10% que falta es pulido: relectura, maquetación, las últimas imágenes, y la alineación con la 3.5.0 cuando deje de ser una release candidate. El front matter del libro dice abiertamente qué está terminado y qué falta, así ya sabes qué estás comprando. Cuando el ebook esté completo llegará también la versión impresa en Lulu.com, como con la primera edición.

Hace seis años tenía tiempo y una fecha límite inventada. Este año tuve una ciudad vacía en agosto y una fecha límite de verdad. Funcionó de todas formas.

Consigue el libro en Leanpub

Buena lectura, y cuéntame qué no cuadra.

– Daniele Teti

Comments

comments powered by Disqus