Je suis un programmeur assez novice qui essaie d'apprendre les bases de l'architecture n-layered (DAL, BLL, UI). L'application que je suis en train de programmer est une application à trois niveaux, écrite en VB.NET (.Net 3.5). Couches comme suit:Comment transmettre des données entre BLL et UI dans une application à trois couches (à un seul niveau)?
DAL
BLL
UI
COMMUN - contient le droit de DTO maintenant.
Je n'arrive pas à déterminer ce qu'il faut passer entre ma BLL et l'interface utilisateur. Mon instinct me dit que je devrais seulement transmettre des données à l'interface utilisateur, et non pas l'objet métier complet de la BLL. Considérez deux scénarios:
1) Passez le BO directement de BLL à UI. Cela expose les méthodes BO et permet à l'interface utilisateur d'accéder directement au BO, ce qui semble mauvais.
2) Ne transmettre que les données pertinentes du BO à l'interface utilisateur. Par exemple, un client a un nom et une adresse. Ces données sont vraiment ce que nous voulons montrer/éditer dans l'interface utilisateur, donc nous ne retournerions ces données à l'interface utilisateur au lieu de l'intégralité de BO. L'interface utilisateur appelle ensuite la BLL pour mettre à jour un BO spécifique.
Je suis enclin à utiliser # 2, mais je ne connais pas la meilleure façon de l'implémenter. De la façon dont je l'ai programmé maintenant, si je retourne seulement des données de la BLL, toutes les références à mes BO seront perdues et le GC les réclamera. Sur cette base, j'ai quelques questions:
1) Devrais-je conserver les objets métier en vie entre les appels à la BLL? L'alternative est de les recréer chaque fois que je transmets des données à travers la BLL, ce qui me semble faux.
2) Quelle est la meilleure façon de garder un BO vivant dans une architecture à palier unique (comment tenir une référence si nous ne le transmettre à l'interface utilisateur?)
3) Comment les applications n-tier font ce? Est-ce qu'ils gardent les BO vivants dans le BLL et attendent 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 quand ils ne sont plus nécessaires?
Merci pour toute idée, et pardonnez-moi si je demande quelque chose de stupide. Je me suis appris la petite programmation que je connais, alors je pose peut-être une question stupide et je ne le sais pas.
ce fil est utile: http://stackoverflow.com/questions/518329/what-objects-should-you-return-from-the-data-access-layer-to-the-business-layer-a/ 518386 # 518386 –
Merci Chad, j'avais lu ce fil de discussion. Il semble que d'avoir un «manager» pour chaque objet commercial se dirige vers un modèle de domaine anémique n'est-ce pas? –