Bonjour,
J'aimerai juste avoir votre avis sur le sujet d'un développement à 3 couches.
Voilà, j'essaye (dans le but de me familiariser avec ce type de dév) de migrer une appli que j'ai faites sur ce schéma.
Donc une couche ihm, métier et données.
Prenons un exemple pour illustrer mes questions.
On a une :
- table T_USER (usr_id, usr_prenom, usr_nom, usr_age)
- une interface qui liste dans une grille tous les user et qui permet de faire des recherches de mon user sur tous les critères : id, nom, prénom, age.
(corriger moi si j'ai faux, ce sont des hypotèses sur ce que j'ai compris)
J'ai donc bien compris l'élément essentiel, l'ihm ne peut communiquer directement avec la couche données sans passer par la couche métier.
Dans ma couche données
J'y mets toutes les procédures et fonctions qui iront intéragir avec les données. Cela va des Insert, Update, Delete... sur mes tables à mes requêtes Sql : entre autre ma requête Select qui va récupérer mes données à afficher dans ma grille de résultat sur l'ihm
Dans ma couche métier
Je vais recevoir de la part de ma couche ihm, toutes les saisies de mon utilisateur sur ses critères de recherche (qui peuvent être vide) et y faire les vérifs nécessaire (du style : une date doit être une date, un numérique doit être numérique, un champ ne peut être vide...) et une fois ces vérifs terminer je vais envoyer ces paramètres à ma couche données qui me retournera le résultat que je renvois à mon ihm
Dans ma couche ihm
Je récupère la saisie et balance les données brut à ma couche métier qui se chargera de faire les formatages et vérifs sur cette saisie. J'affiche ensuite le résulat de ce que me retournera la couche métier si aucune erreur
Ok donc à partir de là j'ai sois bien compris la base soit j'ai faux.
Mais dans la mesure où j'ai bien compris, comment se passe le cas où mon user va saisir ses critères de recherches ?
Mon ihm balance la saisie à ma couche métier qui va tout vérifier avant de balancer ça à ma couche données ? Ok mais...
Ma fonction de ma couche données qui va retourner les données va être une usine à gaz non ? Si j'ai 10 critères de recherche, il faut que je donne à cette fonction en paramètre, la liste des champs que je veux qu'il retourne, la liste des critères de recherche et eventuellement le champ ordonné (pour être le plus flexible possible) ? Cette fonction sera un vrai bricolage du style
MaFonction (TabloChamp, TabloCondition, TabloOrdonnance)
MaVariable = "Select "
(ici la routine qui va récupérer dans les paramètres par exemple un tableau de champs à afficher)
MaVariable = MaVariable & "From MaTable"
(ici la liste des critères de recherche, si non renseigné le zapper par exemple)
MaVariable = MaVariable & ORder By "
(ici la liste des champs ordonnés"
???
Partager