Become a member!

La seconda edizione della guida a DelphiMVCFramework, sei anni dopo

🌐
Questo articolo è disponibile anche in altre lingue:
🇬🇧 English  •  🇩🇪 Deutsch  •  🇪🇸 Español  •  🇧🇷 Português  •  🇫🇷 Français

DMVCFramework - the official guide, seconda edizione, di Daniele Teti

La guida ufficiale a DelphiMVCFramework, il progetto open source Delphi più popolare su GitHub per API REST e applicazioni web, torna in seconda edizione. Ora al 90% su Leanpub.

Quando uscì la prima edizione era l’agosto del 2020. Eravamo appena usciti dalla fase più critica della pandemia, il mondo era diverso, e in qualche misura eravamo diversi anche noi. Di tempo libero, in quei mesi, ne avevo fin troppo (come molti di noi), e l’ho speso a scrivere un libro, il mio primo in self-publishing.

Sei anni dopo ho dovuto aspettare la chiusura estiva dell’ufficio per trovare il tempo di completarne un altro. Le vacanze vere le ho fatte a giugno (non mi piace il caos), e a Roma ad agosto ci sto volentieri: la città si svuota, il traffico è in pausa per almeno due settimane e le giornate sembrano andare più lentamente. Quindi, perché non finire la seconda edizione che stavo scrivendo da novembre 2025?

Eccola: DMVCFramework - the official guide, seconda edizione, pubblicata su Leanpub e completa al 90%.


Sei anni di lavoro sul framework: cosa cambia dalla prima edizione

La prima edizione parlava di dmvcframework-3.2.1-carbon, questa è incentrata su dmvcframework-3.5.0-silicon, e nel mezzo il framework è andato molto avanti: functional actions, il framework di validazione, il supporto WebSocket, la dependency injection integrata, il repository pattern, le viste TemplatePro e HTMX, e l’architettura server pluggable con HTTPS integrato e il serializzatore JSON streaming.

Quando a novembre 2025 ho aperto il file della prima edizione per aggiornarlo, ci ho messo poco ad arrivare a una conclusione: serviva una riscrittura. Quindici capitoli su trenta sono nuovi, gli altri sono stati riscritti invece che aggiornati. La prima edizione raccontava bene la 3.2.1-carbon. La 3.5.0-silicon è un altro framework, e quindi quello che era nato come un aggiornamento è diventato un altro libro. Ho mantenuto invece l’esempio della Municipal Library, perché regge bene l’evoluzione che vedrai nei capitoli: un pezzetto alla volta, il progetto cresce.

Il primo cambiamento lo vedi prima ancora di scrivere una riga di codice: il wizard dell’IDE ora parte da otto preset di progetto, e il libro comincia esattamente da lì, dal progetto che genera lui.

Gli otto preset di progetto DelphiMVCFramework nella finestra New Items di RAD Studio

Il risultato sono 30 capitoli, oltre 550 pagine e 46 progetti Delphi nel codice di esempio disponibile su GitHub.

La release di riferimento, ad oggi, è dmvcframework-3.5.0-silicon RC6: è quella contro cui compilano tutti gli esempi del libro, ed è quella che trovi descritta nel post di annuncio della RC6. Essendo una release candidate, il codice del libro seguirà le eventuali correzioni fino alla dmvcframework-3.5.0-silicon finale.


Che problemi risolve il libro

Il libro è organizzato attorno alle cose che di solito ti trovi sul tavolo:

  • non hai mai scritto un servizio web con Delphi e devi partire da zero, capendo cosa fa un controller prima di scriverne uno (capitoli 1-5)
  • devi consegnare in fretta, imparare mentre scrivi, e restare su standard che chiunque sa già consumare: HTTP e REST, JSON-RPC 2.0, OpenAPI (capitoli 2, 16, 17)
  • hai una classe Delphi che gira su un server e i suoi metodi devono poter essere chiamati da fuori: da una VCL, da una FMX, da un’app mobile, da JavaScript, da C#, da Java, da C++, da Go, da Rust, da Python, da qualsiasi cosa parli HTTP (capitolo 16, JSON-RPC)
  • devi chiamare da Delphi l’API di qualcun altro, usando il client REST che il framework porta con sé (capitolo 27)
  • hai un database e ti serve esporlo come API REST senza scrivere un controller per ogni tabella (capitoli 6-11)
  • l’API oggi è aperta e deve iniziare a distinguere chi chiama, con utenti tuoi o con l’identity provider aziendale (capitoli 12, 13, 15)
  • il client deve ricevere aggiornamenti mentre succedono, invece di chiedere ogni cinque secondi (capitolo 20)
  • qualcuno ti chiede la documentazione dell’API, e la vuole aggiornata (capitolo 17)
  • devi scrivere un’app web che gira nel browser e vuoi restare in Delphi: HTML generato dal server con TemplatePro e interattività con HTMX, senza portarti in casa un framework JavaScript, la sua curva di apprendimento e un ecosistema che fuori dal mondo Delphi cambia ogni due anni (capitoli 18 e 19)
  • il server deve stare dietro TLS e girare come servizio su Windows o su Linux (capitoli 23 e 25)
  • qualcosa è lento o si rompe in produzione e ti servono log e metriche per capire dove (capitolo 24)
  • il codice è diventato difficile da testare e vuoi separare i pezzi (capitoli 21 e 22)

Se parti da zero, l’unico prerequisito è un po’ di Delphi: HTTP, REST e il resto li spiega il libro. Se invece DMVCFramework lo usi in produzione da anni, i primi cinque capitoli li scorri abbastanza velocemente. Alla fine troverai anche un capitolo intero (Hidden Gems) su cose che il framework sa fare da tempo e che, tra corsi e consulenze, ho visto conoscere da pochissimi.


Un esempio solo, dall’inizio alla fine

La Municipal Library API è la gestione di una biblioteca comunale. Si parte dal progetto generato dal wizard, e all’ultimo capitolo quella stessa API autentica gli utenti, li fa entrare tramite un identity provider esterno, trasmette su WebSocket, si documenta da sola con OpenAPI e gira dietro TLS.

Ogni capitolo aggiunge una cosa sola a un sistema che hai già in testa, invece di ripartire ogni volta da un esempio scollegato dal precedente.

Tra i capitoli nuovi ci sono ActiveRecord in Depth, OpenID Connect con un Keycloak vero, e la Minimal API arrivata proprio con dmvcframework-3.5.0-silicon.

Ecco l’indice completo:

# Capitolo # Capitolo
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 (appendice)

Il libro è in inglese, come la prima edizione. Se però arrivano almeno 30 richieste a d.teti@bittime.it per una versione italiana, quella la metto in cantiere. Scrivimi con oggetto Guida DMVCFramework in italiano: le conto e ti faccio sapere.


Gli esempi sono codice vero, e restano online

Tutti e 46 gli esempi del libro sono compilati e testati con Delphi 13 Florence su dmvcframework-3.5.0-silicon, e ogni output stampato nel libro arriva dall’endpoint che lo precede, eseguito davvero.

Il codice è pubblico:

github.com/danieleteti/dmvcframeworktheofficialguideexamples

Una cartella per capitolo, licenza Apache 2.0, e l’impegno a tenerlo aggiornato nel tempo: quando il framework cambia, i progetti seguono. Almeno fino alla prossima edizione maggiore del libro, quando sarà quella nuova a portarsi dietro i suoi esempi.


Perché conviene comprarlo adesso che è al 90%

Su Leanpub il prezzo lo scegli tu sopra un certo minimo. Oggi il minimo è 45 dollari, il consigliato 79. Ho deciso di tenerlo più basso del normale fino alla fine della stesura: quando il libro sarà al 100% il prezzo minimo salirà. È il mio modo di dire grazie a chi lo compra nelle prime settimane, ed è il primo motivo per comprarlo adesso.

Il secondo è che su Leanpub gli aggiornamenti sono gratuiti per sempre. Chi compra la versione al 90% riceve tutte le revisioni successive dello stesso libro senza pagare la differenza, compresa quella allineata alla 3.5.0 finale (il libro segue una versione che al momento è ancora release candidate, quindi una revisione dopo il freeze è già in programma).

Il terzo motivo è quello che mi interessa di più: finché il libro non è chiuso, si può ancora cambiare. Un passaggio poco chiaro, un esempio che sul tuo sistema non parte, un capitolo che secondo te salta un pezzo, sono tutte cose che adesso posso ancora sistemare. Su Leanpub c’è un link Email the Author che permette di scrivere direttamente a me. Chi legge adesso fa anche da revisore, e finisce nei ringraziamenti della versione finale.

Chi ha comprato la prima edizione ha un motivo in più. A tutti i lettori della prima edizione iscritti alla mailing list dei clienti su Leanpub (l’opt-in che compare nella pagina di ringraziamento dopo l’acquisto) mando un codice sconto per la seconda edizione, valido in questo periodo che precede la versione finale. Se all’epoca hai lasciato la spunta, il codice ti arriva lì.


Il 10% che manca

Tutti e trenta i capitoli sono scritti, verificati e pronti. Quel 10% che manca è rifinitura: rilettura, impaginazione, le ultime immagini, e l’allineamento alla 3.5.0 quando smetterà di essere una release candidate. Il front matter del libro dice apertamente cosa è finito e cosa manca, così sai già cosa stai comprando. Quando l’ebook sarà completo arriverà anche la versione stampata su Lulu.com, come per la prima edizione.

Sei anni fa avevo tempo e una scadenza inventata. Quest’anno ho avuto una città vuota ad agosto e una scadenza vera. Ha funzionato lo stesso.

Prendi il libro su Leanpub

Buona lettura, e fammi sapere cosa non torna.

– Daniele Teti

Comments

comments powered by Disqus