it-swarm.com.de

Domänenobjekte/-dienste und die Business Logic Layer

Was sind Domänenobjekte und Domänendienste in der Softwarearchitektur? Ich kenne sie nicht oder wie unterscheiden sie sich von der Geschäftslogikebene?

35
aces.

Verschiedene Leute verwenden diese Begriffe auf unterschiedliche Weise, aber hier ist meine Einstellung:

1) "Business" und "Domain" sind grob Synonyme. "Domain" ist etwas allgemeiner, da nicht davon ausgegangen wird, dass Sie eine Geschäftsanwendung schreiben. Wenn wir also eine wissenschaftliche App oder ein Spiel schreiben, wird es bevorzugt, den relevanten Teil des Codes als "Domain" -Code und nicht als "Geschäftscode" zu bezeichnen. Im Rest dieser Erklärung verwende ich "Domain", da es allgemeiner ist.

2) "Domänenlogik" umfasst sowohl "Domänenobjekte" als auch "Domänendienste". Aus verschiedenen Gründen (aus technischen und anderen Gründen) verwenden viele Architekturen ein Design, bei dem die Domänenlogik in Objekte zum Speichern von Daten ("Domänenobjekte") und Objekte, die diese bearbeiten ("Domänendienste"), unterteilt ist. Martin Fowler und andere haben darauf hingewiesen, dass dies nicht sehr OO ist , da ein großer Teil des OO - Konzepts darin besteht, Funktionalität mit Daten zu kombinieren, und das ist richtig, aber es ist was es ist . Domänenobjekte sind die Daten und Domänendienste sind der Datenbestandteil.

3) Beim domänengesteuerten Design besteht die Idee darin, wieder zu einem echten OO - Design zurückzukehren, und die verschiedenen Servicemethoden kehren zurück zu den Domain-Objekten, sodass Sie Objekte im Sinne von OO haben anstatt was manchmal als "anämische" Objekte bezeichnet wird. In einer DDD sind die Domänenobjekte selbst robuster und bilden daher die Domänenlogik. In der Realität gibt es zwar möglicherweise noch einige Domänendienste, diese sind jedoch in einer DDD normalerweise geringer als in einem herkömmlicheren Domänenobjekt- oder Dienstmodell.

76
Willie Wheeler

Die Business Logic Layer wird auch als Domain Layer bezeichnet. Dies ist die Schicht/Schicht, die die gesamte Geschäftslogik übernimmt.

Domänenobjekte und Domänendienste sind Klassen, die Sie zum Erstellen Ihrer Domänenschicht verwenden.

3

Wir müssen die Verantwortlichkeiten der Anwendungsschicht und der Domänenschicht (Geschäftsschicht) verstehen, um den Unterschied erkennen zu können .. Die Domänenschicht stellt die Geschäftsobjekte dar, hauptsächlich Entitäten aus dem Unternehmen, die möglicherweise bis zu einem gewissen Grad abstrahiert sind Domain-Dienste. Die Domänenschicht ändert sich nur, wenn sich das Geschäft ändert oder sich der Kontext der Domäne innerhalb des Unternehmens ändert. Die Anwendungsschicht "lebt" auf der Domänenschicht und ist häufig (vorzugsweise) von der Domänenschicht getrennt, wie z asp.net MVC-Webanwendung, bei der der Controller-Teil die Anwendungsebene und der HTML-Teil die Präsentationsebene ist. Die Anwendungsebene wird entsprechend dem Zweck dieser bestimmten Anwendung (oder Dienst, API, App usw.) geändert.

1

Lassen Sie mich dieses Beispiel eines Unternehmensanwendungsszenarios anbieten, mit dem ich gearbeitet habe, um zu erklären, warum eine Domänenschicht und eine Geschäftsstufe beide Geschäftslogik enthalten, jedoch unterschiedlich sind.

Angenommen, ich habe ein COTS-Produkt, das eine reine Case Management-Engine ist, beispielsweise eine OMG CMMN-Implementierung. Eine ganze Reihe von Geschäftslogik in einer Geschäftsebene, die mit einer Reihe von Entitäten aus der Datenebene arbeitet.

Nehmen wir weiterhin an, dass ich zwei Kunden habe, die Systemintegratoren sind, einer baut ein Legal-Case-Management-System auf und einer, der Health Care-Case-Management wünscht. beide sind Case Management, haben aber ihre eigenen Domain-Begriffe, Objekte, Prozeduren, Industriearchitekturen usw.

Jeder wird seine eigene Domänenschicht hinzufügen, damit er mit den Begriffen und Konzepten der jeweiligen Geschäftsdomäne arbeiten kann.

Ja, es enthält Geschäftslogik, aber eine Domänenschicht ist ein Weg, ein generisches wiederverwendbares Geschäft mit einem bestimmten Geschäft zu kapseln. 

Je „einfacher“ die Anwendung ist, desto ähnlicher sind das Domänenmodell und das Datenmodell sowie die Geschäftslogik und die Domänenlogik. Wenn Sie jedoch den "Nutzen" einer Komponente erhöhen, werden die Bedenken möglicherweise getrennt.

0
Chris