3 votes

Comment faire passer les données entre la BLL et l'interface utilisateur dans une application à trois couches (à un seul niveau) ?

Je suis un programmeur assez novice qui essaie d'apprendre les bases de l'architecture à n couches (DAL, BLL, UI). L'application que je programme est une application à un seul niveau, à trois couches, écrite en VB.NET (.Net 3.5). Les couches sont les suivantes :

DAL

BLL

UI

COMMON - contient les DTO's en ce moment.

J'ai du mal à déterminer ce qu'il faut passer entre mon BLL et mon IU. Mon instinct me dit que je ne dois transmettre que des données à l'interface utilisateur, et non l'objet métier complet de la BLL. Prenons deux scénarios :

1) Passer le BO directement de BLL à UI. Cela expose les méthodes de la BO et permet à l'IU d'accéder directement à la BO, ce qui semble mauvais.

2) Ne transmettre que les données pertinentes du BO à l'IU. Par exemple, un client a un nom et une adresse. Ce sont ces données que nous voulons vraiment afficher/modifier dans l'interface utilisateur, donc nous ne renverrons que ces données à l'interface utilisateur au lieu du BO complet. L'interface utilisateur fait alors appel à la BLL pour mettre à jour un BO spécifique.

Je suis enclin à utiliser le point 2, mais je ne sais pas quelle est la meilleure façon de le mettre en œuvre. De la manière dont je l'ai programmé actuellement, si je ne renvoie que les données du BLL, toutes les références à mes BO seront perdues et le GC les réclamera. Sur cette base, j'ai quelques questions :

1) Dois-je garder les objets métiers en vie entre les appels à la BLL ? L'alternative est de les recréer à chaque fois que je fais passer des données par la BLL, ce qui semble erroné.

2) Quelle est la meilleure façon de garder une BO en vie dans une architecture à un seul niveau (comment conserver une référence si on ne la passe pas à l'interface utilisateur ?)

3) Comment les applications n-tiers font-elles cela ? Gardent-elles les BO en vie dans la BLL et attendent-elles une mise à jour de l'interface utilisateur ? Cela ne nécessite-t-il pas beaucoup de "comptabilité" dans la BLL pour s'assurer que les BO sont libérés lorsqu'ils ne sont plus nécessaires ?

Merci de votre aide, et pardonnez-moi si je pose une question stupide. J'ai appris tout seul le peu de programmation que je connais, donc je pose peut-être une question stupide sans le savoir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X