Die letzten paar Tage habe ich eine Menge Forschung mit dem DAL/BLL/UI-Ansatz ohne ein klares Verständnis, wie es für mich gelten wird Projekt. In der Vergangenheit habe ich die BLL weggelassen, die meine Benutzerschnittstelle direkt mit der Datenzugriffsebene (LINQtoSQL dbml) verbindet. Aber ich denke nicht, dass dies eine gute Idee ist, wo ich jetzt arbeite (oder vielleicht sogar in der Vergangenheit), weil wir viele verschiedene Anwendungen haben und ich möchte die gleiche DAL/BLL verwenden, wie sie gebaut werden.Design Patterns: Brauchen Sie Hilfe zu verstehen, dieses Konzept und wie es für mein Projekt gilt
Meine Frage ist, wie hilft die BLL mir, wenn ich in den meisten meiner Anwendungen wirklich die LinqtoSqlDataSource/GridView verwende, um eine Verbindung zu meinem Datenkontext herzustellen, um alle Aktualisierungen/Edits usw. zu erledigen , Jede neue Webanwendung wird auf einer bestimmten Ebene einzigartige Änderungen an der DAL/BLL erfordern, um die erforderlichen Daten zu erhalten, was möglicherweise Auswirkungen auf andere Apps hat, die die gleiche DAL/BLL verwenden. Ist diese Wiederverwendung der DAL/BLL der richtige Weg, oder fehlt mir etwas?
Ich denke, dass die BLL kommt, wenn ich zum Beispiel eine Sicherheitsklasse für die verschiedenen Webanwendungen erstellen muss, die gebaut werden. Aber, wenn ich die Linqtosqldatasource verwende, warum würde ich mich bemühen, es mit der BLL zu verbinden?
DAL
- LinqToSQL dbml Datacontext.
- Ändert die Verwendung von LinqToSQL, wie ich dieses Design verwenden soll?
BLL
- Sicherheit für von Unternehmen verwendet, um verschiedene Website.
- Abfrage DAL zurückgeben, was (?), Wenn LinqToSQLDatSource verwendet. Funktionen, die verschiedenen Ergebnismengen verarbeiten (mir wirklich nicht sicher bin, wie dies mit BLL funktionieren soll, tut mir leid, wenn die Frage unklar ist)
UI
- Referenz nur die BLL?
Ihre Antwort und diese http://stackoverflow.com/questions/3952534/communication-between-bll-and-dal haben mir einige Einblicke in den Domain-Aspekt gegeben, außer dass ich immer noch nicht verstehe, was es ist. Kannst du es ausarbeiten? – Dan
Die "Domäne" ist im Grunde die Sammlung von "Stateful Business-Objekten"; In einem Programm wie Quickbooks beispielsweise kann eine Rechnung ein Domänenobjekt sein. Diese Objekte ordnen sich normalerweise sehr eng an die Datenstruktur eines RDBMS an und sind für die Aufrechterhaltung eines konsistenten Datenzustands verantwortlich (und sind daher der übliche Ort für die Validierung auf Datenebene und für die Aktualisierung "berechneter Felder" wie Summen.) – KeithS
Genau wie viel Die Logik, die der Domänen-Layer haben sollte, stellt eine konstante Quelle der Uneinigkeit zwischen Programmierern dar. Grundsätzlich gilt: Je mehr ein Objekt über sich selbst und Objekte um sich weiß, desto mehr Gründe müssen sich ändern, was das SOLID-Prinzip der einheitlichen Verantwortung verletzt Wenn eine Domain-Klasse die einzige Verantwortung hat, den Status zu speichern, wird ein Anti-Pattern erstellt, das als Anemic Domain Model bekannt ist und mehrere Objekte ändern muss (Domain-Klasse, Validator, Persister), um es sogar klein zu machen Geschäftsänderungen – KeithS