Um CRUD Betrieb in Domain-Driven Design durchführen, habe ich eine Domain Service pro Wurzel Aggregat erstellen müssen, die Methode speichern müssen, wird diese Methode Repository-Schnittstelle aufrufen, die in Infrastrukturebene konkrete Umsetzung haben. Ist das der richtige Ansatz? Bitte korrigieren Sie mich, wenn ich falsch liege.CRUD in Domain-Driven Design
Antwort
ich meistens einig:
Die Repository-Schnittstellen Teil der Modellschicht und sind in der Infrastrukturebene implementiert. Bedenken Sie jedoch, dass Repositories wie vollständige Objekte gesammelt und gespeichert werden. Sie sind nicht wie eine Persistenzschicht modelliert und können daher keine Teile von Aggregatwurzeln speichern. Um komplexe Aggregatwurzeln zu konstruieren, kann eine Fabrik verwendet werden.
Denken Sie auch daran, dass ein effektives Design von den verwendeten (Persistenz-) Technologien abhängen muss.
CRUD funktioniert nicht gut mit domänengesteuertem Design. Im domaingesteuerten Design arbeiten Sie mit Verben und Substantiven der Domain. Anstatt einen neuen Auftrag zu erstellen, haben Sie einen Benutzer-Aggregatstamm, der "einen Auftrag erteilt". Wenn Ihr System voll von CRUD-Operationen ist, verwenden Sie kein domänengesteuertes Design, wie es verwendet werden sollte, und stattdessen fügen Sie einfach Komplexität zu einem ansonsten einfachen Problem hinzu.
Ein Verwaltungsbildschirm ist ein guter Kandidat für CRUD. Sie haben eine Liste mit einigen Elementen, bei denen Hinzufügen oder Ändern keine Geschäftsregeln (Domänenregeln) aufweist, die erzwungen werden müssen. Es ist einfach nur "neue Zeile einfügen, ändern Sie diese Zeile, löschen Sie diese Zeile".
Ein Auftragsbearbeitungssystem ist komplexer und wird vom domänenorientierten Design profitieren. "Eine Bestellung aufgeben". "Bestellung bezahlen". "Wenn eine Bestellung aufgegeben wurde und die Zahlung abgeschlossen ist, starten Sie den Versandvorgang". Diese haben komplexe Regeln, die in der Domäne modelliert werden müssen, und daher ist domänengesteuertes Design ein guter Kandidat.
- 1. Die besten Beispiele für CRUD Web Form Design
- 2. OO Design vs Datenbank Design
- 3. Gemeinsame CRUD-Funktionen in PHP
- 4. Wie CRUD-Operationen in Express?
- 5. Gerüst CRUD in Zend Framework
- 6. Implementierung von CRUD in MVC
- 7. Suche nicht in Lebensmittelgeschäft Crud
- 8. Lebensmittelgeschäft Crud ändern Standardthema
- 9. Datenmanagement/CRUD Generator AngularJS
- 10. Polymer RESTful CRUD App
- 11. Persistent: CRUD typeclass
- 12. Kohana Probe CRUD Anwendung
- 13. AJAX-Formularübermittlung mit CRUD
- 14. C# - Generische CRUD-Operation
- 15. Rails CRUD Parameter Problem
- 16. CQRS und CRUD Bildschirme
- 17. WCF SOA: CRUD Data Access Service ... warum stören (oder ist unser Design falsch)?
- 18. RESTful Design, wie nennt man Seiten außerhalb von CRUD et al.?
- 19. Node.js Mongoosejs Crud-Gerüst
- 20. Angular 2 CRUD Anwendung
- 21. Crud auf Amazon RDS
- 22. AngularJS 2 CRUD Komponenten
- 23. CRUD-Level-Sperre für Objekte - Entwurfsmuster
- 24. Erstellen einer dynamischen CRUD-Benutzeroberfläche in WPF
- 25. Löschen funktioniert nicht in grundlegenden CRUD-Anwendung
- 26. Azure, Easy Tische, CRUD + Suchoperationen in UWP
- 27. WCF Fehler in mehreren Tabelle CRUD
- 28. CRUD-Methoden in benutzerdefinierten Swift-Klassen
- 29. Yii-In-Place-Crud-Text-Widget
- 30. Google Drive API - PHP (CRUD)
Meiner Meinung nach brauchen Sie diesen "Domain Service" nicht, da er nur die Verantwortung an das Repository und nichts anderes delegiert. Warum nicht das Repository direkt aufrufen? – goenning