Nouveau modèle d’architecture logicielle ADR (Action Domain Responder)
-
DÉFINITION DE L'ADR
C’est un modèle d’architecture logicielle proposé par Paul M. Jones afin d’affiner le contrôleur Model View Controller (MVC), mieux adapté aux applications Web. ADR a été conçu pour correspondre plus étroitement au flux demande-réponse des communications HTTP à MVC, conçu à l’origine pour les applications logicielles de bureau. Semblable à MVC, le motif est divisé en trois parties.
-
- ACTION
L’action est la partie qui va traiter les requêtes HTTP. C’est le connecteur entre le code métier (domain) et le responder. Il va utiliser les requêtes HTTP pour interagir avec le domaine puis appelle le responder avec les données du domaine pour la création d’une réponse en HTTP.
-
- DOMAIN
Le domaine est la partie qui va interagir directement avec la base de données (manipulation des données selon les besoins). C’est le cœur de l’application il contient la logique métier.
-
- RESPONDER
Le responder est la partie qui construit la réponse HTTP peu importe son format (HTML,json,xml..). Il va traiter les données reçues de l’action pour en générer une vue.
-
LES AVANTAGES ET INCONVENIENTS
Les avantages :
-
- L’ADR applique le principe de “Single responsibility principle” de SOLID qui veut qu’un composant n’ait qu’une seule responsabilité. Cela permet de simplifier les tests.
- Il évite la duplication de code.
- Mais son avantage principal, c’est qu’il rend très simple la lecture (et revue) du code.
Comme toute chose, cette architecture a aussi des inconvénients. Principalement un.Chaque classe ayant une responsabilité, il est nécessaire de créer plus de classes, donc plus de fichiers dans votre code source. Pour certains, le code paraîtra donc plus complexe, et donc moins maintenable.
Il est donc nécessaire de bien comprendre pourquoi l’utiliser.
Dans le modèle MVC, il y a un contrôleur qui traite la logique, les formulaires, les événements, etc… Il renvoie la réponse, ce qui n’est pas forcément une bonne pratique.
En effet, on se retrouve avec des contrôleurs surchargés qui sont plus difficiles à tester et plus lents lors de l’exécution. Cela convient la plupart du temps, mais dans le cas de ADR le responder a une responsabilité : c’est de renvoyer une réponse adapter au besoin.
La logique n’est plus la même, car l’application est découpée besoin par besoin. L’action qui effectue la logique interne et le responder qui renvoie la vue. Cette division va nous simplifier les tests et la revue du code.
-
POUR CONCLURE
Avec l’ADR, le code est plus simple à lire, et donc, plus facile à maintenir et à faire évoluer.
Les tests sont aussi écrits plus vite (on écrit le test, la classe et ensuite on vérifie que ça fonctionne).
Et cela évite d’avoir un controller contenant plusieurs méthodes (plus lent à exécuter et plus difficile à tester).
Sources
Merci à Régis Antignac pour son article https://medium.com/darkmirafr/symfony-4-un-framework-uniquement-mvc-eeb6e375fda6#:~:text=Qu'est%20ce%20que%20l,mieux%20adapt%C3%A9%20aux%20applications%20Web.