1

Kollege von mir erzählte mir - wir haben keine Business-Logik, wir haben nur CRUD wie GetById, GetBySearchTerm, GetByParentID .... so begann ich zu fragen über diese Worte.GetById, GetByX CRUD oder Business-Logik-Methoden oder beide

Nach dem Lesen über DDD, diese Methoden sind CRUD, sie haben einen Mechanismus zum Abrufen von Daten (auch speichern, aktualisieren, löschen ...) basierend auf bestimmten Code (in der Regel SQL).

Wenn Business Analyst mich sagen: "Wir müssen Daten über bestimmte Kunden zeigen". Meiner Meinung nach ist dieser IS (GetById) ein Geschäftsprozess, GetById sollte innerhalb des Geschäftslogik-Teils der Anwendung platziert werden und kontaktiert das Repository, um Daten zu holen. Das Repository mit CRUD-Methoden ist dafür verantwortlich, Daten basierend auf bestimmten Kriterien zu erhalten.

Ich weiß, diese Frage kann dazu führen, Debatte mit atomaren Methoden Repository (GetById, GetBySearchTerm, GetByParentiId ...) zu haben, aber meine Frage ist nur einfach - sind diese Methoden CRUD oder Business-Logik-Methoden.

Antwort

1

Die kurze Antwort ist, dass Sie nicht Ihre Domain-Modell aus einem anderen Grund als Domain-Operationen, die/Transaktions Seite der Dinge Teil des Schreib sind werden die Abfrage sollte. Diese Seite der Dinge ist mehr an Befehlen interessiert, die in Ihrer Domäne ausgegeben werden, um tun/durchzuführen Operationen.

Alles, was zur Anzeige Daten im Zusammenhang sollte so einfach ein/Lese Modell Abfrage kommt wie möglich ist.

Wenn Sie feststellen, dass Ihre Abfragen Domäneninteraktion erfordern, haben Sie wahrscheinlich ein Szenario, in dem Sie Ihrer Domäne möglicherweise etwas mitteilen müssen. Nach Abschluss können Sie die Daten über die Abfrageseite anfordern.

+0

Wenn App Abfrage eine Daten ist es auch Transaktionsprozess. Ich denke, ich habe dich nicht verstanden. Können Sie das ausarbeiten oder vereinfachen? – user2457382

+0

Wenn Sie Daten abfragen, ist dies normalerweise nicht transaktional. Es wäre nicht sinnvoll, eine Transaktion für Selects zu verwenden. In jedem Fall meine ich transaktionale im Sinne der Befehls-/Schreibseite der Dinge (OLTP) im Gegensatz zum Lesen von Daten (viel enger mit OLAP verwandt). –

0

Nicht jede Anwendung ist eine DDD-Anwendung. Einige Anwendungen sind einfach CRUD

Die Geschäftslogik wäre der Teil der Anwendung, in dem Eingaben validiert werden (wie get by ID und id ist eine Zahl zwischen 1 und 99999). Dies wird dann an das Repository für die tatsächliche Abfrage übergeben.

Aber wenn Ihre Anwendung wirklich eine Crud-Anwendung ist, wird Ihnen der Versuch, DDD anzuwenden, nicht helfen.

0

Diese Methoden können nicht die Geschäftsmethoden überhaupt sein. Als CQRS-Praktiker würde ich Ihnen vorschlagen, verschiedene Modelle für die Befehls- und Abfrageseite zu haben. Möglicherweise erstellen Sie einen anderen beschränkten Kontext, der den gesamten Lese- (Query-) Prozess bedient (Sie können hier anämische/DTOs erstellen) und ein anderes Domänenmodell, das reinen Geschäftslogikzwecken dient.

Sie können in meinem Blog einen Blick auf die Trennung von Befehlen und Abfragen werfen.

https://aspxsushil.wordpress.com/2015/10/18/command-and-query-object-pattern/

Verwandte Themen