2010-11-27 16 views
1

Ich habe kürzlich über Datenzugriffsschichten, Business-Logik-Ebenen und Präsentationsebenen gelernt, aber ich habe immer noch ein paar Dinge, die nicht ganz klar sind.Sollte ich versuchen, ASP-Steuerereignisse in den BLL zu setzen?

Ich kann die DAL und BLL mit dem Presentation Layer verwenden, um Informationen in einer Datenbank abzurufen oder festzulegen.

Aber ich dachte auch über ASP-Steuerereignisse nach, und wie ich sie implementieren sollte.

Sollte ich zum Beispiel versuchen, ein Button Click Event in die BLL zu setzen oder sollte ich es einfach in den ASPX-Code hinter der Datei lassen?

Und wenn ich sie in die BLL setzen sollte, wie würde ich das tun?

Ich bin mir nicht sicher, wie man ein Ereignis ruft eine Methode, die in der BLL ist, so würde jeder Rat sehr geschätzt werden.

+0

Ich wünschte, ich könnte mehr als eine Antwort akzeptieren. Ich wählte Tom B's Antwort, weil es für mich am einfachsten zu verstehen war und gab mir eine gute Anleitung, während ich mehr über N-Tiered Ansätze lerne. –

+0

Kein Problem. Wir sagen alle im Grunde dasselbe, außer Andrew gab eine Erklärung auf hoher Ebene der richtigen Architektur, ich fügte allgemeine Beispielimplementierung unter Verwendung von Schnittstellen hinzu, und Tom gab spezifischere Beispiele. Alles in allem, was hilft Ihnen am besten zu verstehen =) – bitxwise

Antwort

2

Wenn das Ereignis mit dem Geschäftsmodell zu tun hat, sollten Sie eine Methode in der BLL erstellen. Wenn es sich um einen UI-Ereignistyp handelt, behandeln Sie ihn im folgenden Code. Wenn der Benutzer beispielsweise auf eine Schaltfläche klickt, um den Versand zu berechnen, rufen Sie im Click-Ereignishandler der Schaltfläche (Code dahinter) die CalculateShipping() -Methode Ihres BLL-Objekts auf. Wenn Sie jedoch eine Schaltfläche haben, die die Hintergrundfarbe der Seite ändert (ich könnte mir kein besseres Beispiel vorstellen), dann würden Sie das im Code dahinter vollständig behandeln.

3

diese Architektur Gegeben:

Präsentation -> Business -> Daten

Jede Schicht sollte nur wissen und Annahmen über die Schicht unmittelbar rechts daneben machen. Dies bedeutet, dass die Präsentationsschicht mit der Business-Schicht kommunizieren und ihre API verwenden kann, sie sollte jedoch niemals direkt mit der Datenschicht kommunizieren. Die Business-Schicht kann die API der Datenschicht verwenden, aber sie sollte niemals Informationen über die Darstellungsschicht, die sie verbraucht, kennen oder Annahmen darüber treffen. Und natürlich sollte die Datenschicht nichts über die anderen Schichten wissen.

Wenn Sie diesem allgemeinen Prinzip folgen, werden Sie feststellen, dass Ihre Anwendung einfacher und einfacher zu warten ist.

Zur Beantwortung Ihrer Frage gehören Schaltflächenereignisse in die Präsentationsebene. Wenn Sie ein Klickereignis in Ihre Geschäftslogik einfügen, würde dies die Linien zwischen den beiden Ebenen verwischen und unnötige Kopplungen verursachen.

1

Ihr ASPX-Code hinter der Datei (Presentation Layer) könnte entweder einen direkten Verweis auf Ihre BLL haben (führt zu einer Kopplung) oder Sie können einen serviceorientierten Ansatz verwenden. Dies würde das Erstellen von Schnittstellen erfordern, auf die von Ihrer Präsentationsschicht verwiesen wird und die von Ihrer Business-Schicht implementiert werden. Während der Anwendungsinitialisierung (d. H. In Ihrer Global.asax-Datei) können Sie die BLL über Dependency Injection oder eine andere Methode mit Ihrer Präsentationsschicht verbinden.