Become a member!

La deuxième édition du guide DelphiMVCFramework, six ans après

🌐
Cet article est aussi disponible dans d'autres langues :
🇮🇹 Italiano  •  🇬🇧 English  •  🇩🇪 Deutsch  •  🇪🇸 Español  •  🇧🇷 Português

DMVCFramework - the official guide, deuxième édition, de Daniele Teti

Le guide officiel de DelphiMVCFramework, le projet open source Delphi le plus populaire sur GitHub pour les API REST et les applications web, revient en deuxième édition. Il est maintenant à 90 % sur Leanpub.

Quand la première édition est sortie, on était en août 2020. On sortait à peine de la phase la plus critique de la pandémie, le monde était différent, et nous aussi, d’une certaine façon. Du temps libre, ces mois-là, j’en avais même trop (comme beaucoup d’entre nous), et je l’ai passé à écrire un livre, mon premier en auto-édition.

Six ans plus tard, il m’a fallu attendre la fermeture estivale du bureau pour trouver le temps d’en terminer un autre. Mes vraies vacances, je les ai prises en juin (je n’aime pas la cohue), et rester à Rome au mois d’août me plaît : la ville se vide, la circulation s’arrête pendant au moins deux semaines et les journées semblent passer plus lentement. Alors, pourquoi ne pas terminer cette deuxième édition que j’écrivais depuis novembre 2025 ?

La voici : DMVCFramework - the official guide, deuxième édition, publiée sur Leanpub et complète à 90 %.


Six ans de travail sur le framework : ce qui change par rapport à la première édition

La première édition parlait de dmvcframework-3.2.1-carbon, celle-ci porte sur dmvcframework-3.5.0-silicon, et entre les deux le framework a beaucoup progressé : les functional actions, le framework de validation, le support WebSocket, l’injection de dépendances intégrée, le repository pattern, les vues TemplatePro et HTMX, et l’architecture serveur pluggable avec HTTPS intégré et le sérialiseur JSON streaming.

Quand j’ai ouvert le fichier de la première édition en novembre 2025 pour le mettre à jour, je n’ai pas mis longtemps à en tirer une conclusion : il fallait tout réécrire. Quinze chapitres sur trente sont nouveaux, les autres ont été réécrits plutôt que mis à jour. La première édition décrivait bien la 3.2.1-carbon. La 3.5.0-silicon est un autre framework, et donc ce qui était parti comme une mise à jour est devenu un autre livre. J’ai gardé en revanche l’exemple de la Municipal Library, parce qu’il se prête bien à l’évolution que tu verras au fil des chapitres : le projet grandit d’un petit bout à la fois.

Le premier changement, tu le vois avant même d’écrire une ligne de code : le wizard de l’IDE part maintenant de huit modèles de projet, et le livre commence exactement là, par le projet qu’il génère.

Les huit modèles de projet DelphiMVCFramework dans la fenêtre New Items de RAD Studio

Le résultat, ce sont 30 chapitres, plus de 550 pages et 46 projets Delphi dans le code d’exemple disponible sur GitHub.

La release de référence, à ce jour, est dmvcframework-3.5.0-silicon RC6 : tous les exemples du livre compilent avec elle, et c’est elle que décrit le billet d’annonce de la RC6. Comme il s’agit d’une release candidate, le code du livre suivra les éventuelles corrections jusqu’à la dmvcframework-3.5.0-silicon finale.


Les problèmes que le livre résout

Le livre est organisé autour de ce qui atterrit d’habitude sur ton bureau :

  • tu n’as jamais écrit de service web avec Delphi et tu dois partir de zéro, en comprenant ce que fait un controller avant d’en écrire un (chapitres 1-5)
  • tu dois livrer vite, apprendre en écrivant, et rester sur des standards que n’importe qui sait déjà consommer : HTTP et REST, JSON-RPC 2.0, OpenAPI (chapitres 2, 16, 17)
  • tu as une classe Delphi qui tourne sur un serveur et ses méthodes doivent pouvoir être appelées de l’extérieur : depuis une VCL, une FMX, une app mobile, depuis JavaScript, C#, Java, C++, Go, Rust, Python, depuis tout ce qui parle HTTP (chapitre 16, JSON-RPC)
  • tu dois appeler depuis Delphi l’API de quelqu’un d’autre, en utilisant le client REST que le framework embarque (chapitre 27)
  • tu as une base de données et il te faut l’exposer en API REST sans écrire un controller pour chaque table (chapitres 6-11)
  • aujourd’hui l’API est ouverte et doit commencer à distinguer qui appelle, avec tes propres utilisateurs ou avec l’identity provider de l’entreprise (chapitres 12, 13, 15)
  • le client doit recevoir les mises à jour au moment où elles se produisent, au lieu d’aller les demander toutes les cinq secondes (chapitre 20)
  • quelqu’un te demande la documentation de l’API, et la veut à jour (chapitre 17)
  • tu dois écrire une app web qui tourne dans le navigateur et tu veux rester en Delphi : du HTML généré par le serveur avec TemplatePro et de l’interactivité avec HTMX, sans t’imposer un framework JavaScript, sa courbe d’apprentissage et un écosystème qui, hors du monde Delphi, change tous les deux ans (chapitres 18 et 19)
  • le serveur doit rester derrière TLS et tourner en tant que service sur Windows ou sur Linux (chapitres 23 et 25)
  • quelque chose est lent ou plante en production et il te faut des logs et des métriques pour comprendre où (chapitre 24)
  • le code est devenu difficile à tester et tu veux séparer les morceaux (chapitres 21 et 22)

Si tu pars de zéro, le seul prérequis est un peu de Delphi : HTTP, REST et le reste, c’est le livre qui les explique. Si en revanche tu utilises DMVCFramework en production depuis des années, tu parcourras les cinq premiers chapitres assez vite. À la fin, tu trouveras aussi un chapitre entier (Hidden Gems) sur des choses que le framework sait faire depuis longtemps et que, entre les formations et les missions de conseil, j’ai vu très peu de gens connaître.


Un seul exemple, du début à la fin

La Municipal Library API, c’est la gestion d’une bibliothèque municipale. On part du projet généré par le wizard, et au dernier chapitre cette même API authentifie les utilisateurs, les fait entrer via un identity provider externe, diffuse en WebSocket, se documente toute seule avec OpenAPI et tourne derrière TLS.

Chaque chapitre ajoute une seule chose à un système que tu as déjà en tête, au lieu de repartir à chaque fois d’un exemple sans lien avec le précédent.

Parmi les nouveaux chapitres il y a ActiveRecord in Depth, OpenID Connect avec un vrai Keycloak, et la Minimal API arrivée justement avec dmvcframework-3.5.0-silicon.

Voici le sommaire complet :

# Chapitre # Chapitre
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 (annexe)

Le livre est en anglais, comme la première édition.


Les exemples sont du vrai code, et ils restent en ligne

Les 46 exemples du livre sont compilés et testés avec Delphi 13 Florence sur dmvcframework-3.5.0-silicon, et chaque sortie reproduite dans le livre provient de l’endpoint qui la précède, réellement exécuté.

Le code est public :

github.com/danieleteti/dmvcframeworktheofficialguideexamples

Un dossier par chapitre, licence Apache 2.0, et l’engagement de le tenir à jour dans le temps : quand le framework change, les projets suivent. Au moins jusqu’à la prochaine édition majeure du livre, quand ce sera à elle d’apporter ses propres exemples.


Pourquoi l’acheter maintenant qu’il est à 90 %

Sur Leanpub, c’est toi qui choisis le prix au-dessus d’un certain minimum. Aujourd’hui le minimum est de 45 dollars, le prix conseillé de 79. J’ai décidé de le garder plus bas que d’habitude jusqu’à la fin de la rédaction : quand le livre sera à 100 %, le prix minimum montera. C’est ma façon de dire merci à ceux qui l’achètent dans les premières semaines, et c’est la première raison de l’acheter maintenant.

La deuxième, c’est que sur Leanpub les mises à jour sont gratuites pour toujours. Si tu achètes la version à 90 %, tu reçois toutes les révisions suivantes du même livre sans payer la différence, y compris celle alignée sur la 3.5.0 finale (le livre suit une version qui pour l’instant est encore release candidate, donc une révision après le freeze est déjà au programme).

La troisième raison est celle qui m’intéresse le plus : tant que le livre reste ouvert, on peut encore le changer. Un passage peu clair, un exemple qui ne démarre pas sur ton système, un chapitre qui, d’après toi, passe à côté de quelque chose : autant de points que je peux encore corriger maintenant. Sur Leanpub il y a un lien Email the Author qui permet de m’écrire directement. Ceux qui lisent maintenant font aussi office de relecteurs, et finissent dans les remerciements de la version finale.

Ceux qui ont acheté la première édition ont une raison de plus. À tous les lecteurs de la première édition inscrits à la mailing list des clients sur Leanpub (l’opt-in qui apparaît sur la page de remerciement après l’achat), j’envoie un code de réduction pour la deuxième édition, valable dans cette période qui précède la version finale. Si à l’époque tu as coché la case, le code t’arrivera là.


Les 10 % qui manquent

Les trente chapitres sont tous écrits, vérifiés et prêts. Ces 10 % qui manquent, c’est de la finition : relecture, mise en page, les dernières images, et l’alignement sur la 3.5.0 quand elle cessera d’être une release candidate. Le front matter du livre dit ouvertement ce qui est fini et ce qui manque, comme ça tu sais déjà ce que tu achètes. Quand l’ebook sera complet, la version imprimée arrivera aussi sur Lulu.com, comme pour la première édition.

Il y a six ans, j’avais du temps et une échéance inventée. Cette année, j’ai eu une ville vide au mois d’août et une échéance réelle. Ça a marché quand même.

Prends le livre sur Leanpub

Bonne lecture, et dis-moi ce qui cloche.

– Daniele Teti

Comments

comments powered by Disqus