Bonjour à tous.
Je débute en architecture 3-tiers. J'ai lu et réutilisé sur un autre projet l'excellent tutoriel de Thomas Lebrun mais comme ce n'est qu'une introduction, je me pose encore pas mal de questions.
Je m'excuse d'avance au cas où mes questions manqueraient de clarté.
Les 3-tiers sont:
- la couche de présentation
- la couche applicative (ou métier)
- la couche d'accès aux données
Questions :
1) où placer le contrôle de saisie pour un formulaire ? Obligatoirement dans la couche de présentation ou dans celle du métier ?
2) une fois chargées, les tables deviennent des collections d'objets (chaque ligne représentant un objet). Ces derniers sont utilisés par la couche métier et la couche d'accès aux données (en tout cas dans l'exemple de Thomas). Dans le cas où les 3-tiers seraient réparties sur 3 machines distantes, il faudrait déployer les objets métiers sur 2 machines différentes. Est-ce que je me trompe ? Y aurait-il un moyen de ne déployer ces classes que sur une seule (et donc de les associer strictement à une seule couche) ?
3) Il peut-être pratique d'ajouter des méthodes autres que celles représentants les colonnes de la table aux classes des objets métiers. Par exemple, une concaténation de propriétés, mais aussi le total d'une ligne de commande. Est-ce une mauvaise pratique ? Faut-il réserver ça à la couche métier (applicative) ? Mais si je mets ce calcul dans la couche métier, il faudrait alors que je recrée une nouvelle collection d'objets (métiers ?), pour la transmettre telle quelle à un widget (ex: utilisation de la propriété DataSource d'un contrôle ComboBox ou ListBox en .net/winform). Est-ce un problème ? De tels objets pourraient-ils toujours être considérés comme des objets métiers ?
4) Cette question fait écho à la précédente. Supposons que je veuille afficher un tableau construit à partir de la jointure de 2 tables. Je ne vois pas comment lui transmettre une collection d'objets en utilisant à un moment ou à un autre, les objets métiers (chaque objet métier représentant une table et une seule).
5) Les pools de connexion de SqlServer 2008 limitent-ils l'intérêt des singletons (des couches métier et d'accès aux données) ?
6) Pourquoi la couche métier porte-t-elle ce nom ? Il ne me semble pas très intuitif. Y aurait-il un nom plus approprié ?
Partager