2010-11-27 24 views
1

J'ai récemment étudié les couches d'accès aux données, les couches logiques métier et les couches de présentation, mais il y a encore quelques points qui ne sont pas très clairs.Devrais-je essayer de placer des événements de contrôle d'asp dans le BLL?

Je peux utiliser la couche DAL et la couche BLL avec la couche de présentation pour obtenir ou définir des informations dans une base de données.

Mais j'ai aussi pensé aux événements de contrôle d'asp, et comment je devrais les implémenter. Est-ce que je devrais, par exemple, essayer de placer un événement clic de bouton dans le BLL ou devrais-je juste le laisser dans le code aspx derrière le dossier?

Et si je devais les mettre dans la BLL, comment pourrais-je faire cela? Je ne suis pas sûr comment faire un appel d'événement une méthode qui est dans le BLL, donc tout conseil serait grandement apprécié.

+0

J'aimerais pouvoir accepter plus d'une réponse. J'ai choisi la réponse de Tom B parce que c'était la plus simple pour moi de comprendre et de me donner une bonne directive à utiliser pendant que j'apprends davantage sur les approches N-Tiered. –

+0

Pas de problème. Nous disons tous fondamentalement la même chose, sauf Andrew a donné une explication de haut niveau de la bonne architecture, j'ai ajouté l'exemple général de mise en œuvre en utilisant des interfaces, et Tom a donné des exemples plus spécifiques. Dans l'ensemble, tout ce qui vous aide à mieux comprendre =) – bitxwise

Répondre

2

Si l'événement concerne le modèle commercial, vous devez créer une méthode dans la BLL. Si c'est un type d'événement d'interface utilisateur, gérez-le dans le code derrière. Ainsi, par exemple, si l'utilisateur clique sur un bouton pour calculer l'expédition, dans le gestionnaire d'événements de clic du bouton (code derrière), appelez la méthode CalculateShipping() de votre objet BLL. Si, cependant, vous avez un bouton qui change la couleur de fond de la page (je ne pourrais pas penser à un meilleur exemple) alors vous manipulez cela complètement dans le code derrière.

3

Compte tenu de cette architecture:

Présentation -> Business -> Données

Toute couche ne devrait connaître et de faire des hypothèses sur la couche à sa droite immédiate. Cela signifie que la couche de présentation peut communiquer avec la couche de gestion et utiliser son API, mais elle ne doit jamais parler directement à la couche de données. La couche de gestion peut utiliser l'API de la couche de données, mais elle ne devrait jamais connaître ou formuler des hypothèses sur la couche de présentation qui la consomme. Et évidemment, la couche de données ne devrait rien savoir des autres couches.

Si vous suivez ce principe général, vous constaterez que votre application sera plus simple et plus facile à maintenir. Pour répondre à votre question, cependant, les événements de clic de bouton appartiennent à la couche de présentation - placer un événement de clic de bouton dans votre logique métier brouillerait les lignes entre les deux couches et créerait un couplage inutile.

1

Votre code ASPX derrière le fichier (couche de présentation) peut soit avoir une référence directe à votre BLL (résultats dans le couplage) ou vous pouvez utiliser une approche plus orientée service. Cela impliquerait de créer des interfaces référencées par votre couche de présentation et implémentées par votre couche métier. Pendant l'initialisation de l'application (c'est-à-dire dans votre fichier Global.asax), vous pouvez connecter la BLL à votre couche de présentation via une injection de dépendance ou une autre approche.