Le N-tiers (partie 1)

21/03/2013 09:05

Qu'est ce donc que le N-Tiers ?

 

Il s'agit de rendre indépendants la base, le code métier et l'IHM. On va relier les éléments entre eux avec des controleurs, ces controleurs servant à faire l'interface entre les différentes couches :

 

BASE <--> CONTROLEUR <--> CLASSE METIER <--> CONTROLEUR <--> IHM

 

Quel est l'intérèt ?

  • Pouvoir utiliser une application avec des bases de structures ou de types différents.
  • Pouvoir élaborer des applications fonctionnant sous Windev et WebDev.
  • Pouvoir adapter des modules à des applications différentes. Par exemple un calcul très spécialisé.

 

Exemple :

 

Exemple de code "traditionnel", la classe métier accède directement aux mécanismes et aux rubriques de la base :

Exemple de code avec un controleur, la classe métier demande des informations à la classe controleur :

Comme on peut le constater la classe métier n'utilise pas directement les rubriques mais appelle des méthodes de la classe controleur de base. Elle lui demande des services : "Renvoie moi le nom du client", "Renvoie moi le total pour ce client", "Calcule moi ceci", "Recherche moi cela", etc...

 

Voici deux exemples de méthodes bRechercheClient(), chaque controleur utilisant une base différente :

 

Cette base est celle de l'exemple avec le code "traditionnel".

Une autre base, un peu plus "rustique" avec la relation se faisant sur le nom unique du client (on peut trouver ce genre de chose) :

 

Cet exemple sert à illuster le principe. Ca fonctionne exactement de la même manière avec le classe controleur pour l'IHM, à savoir que la classe métier n'accède jamais directement aux champs.

 

Des tartines de code !

 

Le gros problème de ce genre d'architecture c'est la quantité de code à écrire ! A moins d'avoir une application pouvant tourner sur n'importe quelle base client et avec n'importe quoi comme IHM à mon avis ça ne sert pas à grand chose. Il peut cependant y avoir des cas dans lesquels un traitement très spécialisé doit être "pluggué" sur différentes applications.

 

Principe à retenir :

 

Venant d'un langage où la moindre liste, le moindre écran étaient de véritables défis (le langage C) j'ai retenu un principe qui me semble essentiel : plus on va vers le code métier plus il faut s'afranchir du code technique pour au final n'avoir plus que des objets simples à manipuler.

 

Vers une solution plus raisonnable :

 

Ce sera l'objet du prochain article.