Salut à tous,
Je débute en programmation d'applications web et je me suis donc intéressé de près aux design patterns utilisés pour ce genre d'application. Comme une application peut être divisée en trois "pôles" : Présentation, Données et Logique Applicative, le design pattern classique est une architecture 3 tiers.
Et, si j'ai bien tout compris, l'objectif c'est de séparer au maximum ces 3 couches afin d'augmenter maintenabilité et évolutivité (par exemple avec le framework Spring en J2EE). Jusque là je pense que je suis. (arrêtez moi si je dis des bêtises quand même)
Le problème c'est que dans beaucoup d'exemples et de tutoriaux que j'ai rencontré, à ces 3 couches qui sont censées être entièrement distinctes on ajoute un 4ème composant, en général appelé "modèle". On obtient donc l'architecture suivante :
J'ai trouvé cette image sur ce site qui explique comment concevoir les applis web en Java.
Concrètement ce "modèle de données" ne contient que des "objets métiers", des classes sans aucune logique applicative servant uniquement à stocker les données de l'application. Le problème c'est que ces classes sont partagées par TOUTES les couches de l'application.
Pour moi c'est une grosse entorse à la séparation des différentes couches.
J'aurais plutôt vu une architecture où chaque couche possèderait son propre modèle de données et les SEULES interactions possibles entre les couches doit se faire à l'aide d'interfaces.
Je voudrais donc connaître l'avis d'autres personnes. Quel sera l'impact de ce genre d'architecture sur la maintenabilité de l'application et est-ce que c'est vraiment un modèle à suivre ou juste un détournement des architectures 3-tiers ?
Partager