Frage

Welche Schicht sollten die Repository-Klassen hineingehen? Domain oder Infrastruktur?

War es hilfreich?

Lösung

Ich denke, das hängt davon ab, wie Sie sich auf sie verlassen.

Die Frage ist - werden Sie sich erlauben Repositories zu verwenden, aus dem Inneren der Domain
? Wenn ja -. Dann sind Sie gezwungen, sie in setzen

Ich selbst mag sie von Domain außerhalb setzen. So - typische Lebenszyklus etwas sieht wie folgt aus =>

UI => Controller => abrufen Aggregat Wurzel aus Repo => Anruf-Logik durch Aggregat root => wenn neues Aggregat root erstellt, fügen Sie es Repo.

Manchmal Controller Anrufe Anwendungsdienst, die einige zusätzliche Sachen tut außer nur root Abrufen und rief Funktion auf sich. Aber Idee ist gleich -. Domain weiß nichts über Persistenz


Während (wie ich es sehe) gibt es nichts falsch mit repos in Domäne (oder zumindest Abstraktionen von ihnen) setzt, macht es Ihre Domain bewusste Ausdauer. Manchmal das kann Probleme lösen, aber im Allgemeinen -., Die auf jeden Fall Ihre Domain komplexer machen

Mit was für Sie natürlichere scheint und bereit sein, Ihre Möglichkeiten, jederzeit zu wechseln.

Andere Tipps

Das Repository Schnittstellen ist Teil der Domäne. Die tatsächliche Implementierung der Schnittstellen Teil der Infrastruktur sein sollte.

Repository Implementierungsklassen, zusammen mit separaten Schnittstellen (falls vorhanden) sollte die Domänenschicht geht in .

Der Grund, von der Grundregel gegeben in einer geschichteten Architektur folgen: eine untere Schicht muss hängt nicht von einer höheren Schicht

.

Wenn wir diese Regel akzeptieren (sonst ist es nicht eine geschichtete Architektur), dann Repository-Implementierungen in die Infrastrukturschicht setzen würde es auf der Domäne-Schicht abhängig machen, damit die Grundregel verstößt die Schichtung.

Zum Beispiel, wenn wir eine neue Domain-Einheit schaffen, haben wir es in der Domänenschicht setzen; und da ein Endlager (sowohl seine Schnittstelle und deren Umsetzung) muss zwangsläufig auf der Domäne Entität abhängen, bedeutet es das Repository auch in die Domänenschicht gehen. Andernfalls würden wir die Infrastrukturschicht, wenn eine Domäne Einheit wurde hinzugefügt / entfernt / geändert in der Domänenschicht werden zu ändern.

Weitere Bedenken, wie die Domänenschicht „sauber“ und unabhängig von Persistenz Details zu halten, können und sollen unter Verwendung des entsprechenden Infrastruktur-Service von den Implementierungen innerhalb der Domäne Schicht erreicht werden. Zum Beispiel in Java können wir JPA verwenden Repositories mit sehr wenig Code zu implementieren, und keine SQL / JDBC oder Datenbank-spezifischen Code (ob es wirklich eine gute Idee zu implementieren Repositories mit JPA ist eine andere Diskussion, in jedem Fall, JPA-Entitäten werden nutzen JPA Annotationen sowieso).

Referenzen: Wikipedia , MSDN

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top