Fragen zu DDD - u.A. Wie DDD (Serverseitig) über Webservice verwenden



  • Meine Fragen sind an sich Sprach- und Frameworkneutral, daher in "Rund um die Programmierung" gestellt, falls es doch relevant sein sollte: Die Implementierung würde voraussichtlich unter C# mit Nutzung der Web API erfolgen.

    DDD über Webservice verwenden

    Alle Beispiele zu DDD (Domain Driven Design) die ich bislang gefunden habe, nutzen DDD direkt ohne das zwischen der fachlichen Logik (DDD-Servicelayer und DDD-Domainlayer) und der Präsentation eine Kommunikationsschicht (z.B. ein Webservice) existiert.

    Wie ist ein Webservice am besten mit dem DDD-Ansatz zu verbinden? Nach meinem bisherigen Verständnis von DDD wiederspricht ein klassischer REST-Service dem DDD-Ansatz (Aufgrund der möglichen Anbindung an Fremdsysteme könnte dennoch ein solcher zusätzlich bei bestimmten Anwendungsteilen nötig sein).

    Stammdatenpflege

    Wir haben eine "Legacy"-Anwendung bei der Stammdatenpflege einen nicht unwesentlichen Teil der Anwendung ausmacht. Haufig ist dabei abgesehen von Konsistenzprüfungen wenig Logik im Spiel, wir haben dort recht häufig den klassischen CRUD-Ansatz (Create, Read, Update, Delete) mit wenig Logik (von Konsistenzprüfungen und prüfung der bisherigen Verwendung beim Löschen [z.B. Verbieten wir das Löschen von Datensätzen wenn diese in bestimmten anderen Bereichen in verwendung sind] einmal abgesehen). Sprich: Eine Liste mit Datensätzen und darauf lassen sich die typischen CRUD-Befehle nutzen (Anzeigen, Anlegen, Bearbeiten, Löschen).

    DDD ist ja nicht für jeden Ansatz optimal, beisielsweise werden hier die einfachen CRUD-Operationen genannt. Wir haben aber auch einige Operationen auf den Stammdaten die nur Teilaspekte eines Stammdatums betreffen ebenso wie in bestimmten Bereichen komplexere Logik, bei der aus meiner sicht der DDD-Ansatz greift.

    Nehmen wir an wir haben Stammdaten die sowohl CRUD-Operationen als auch "Abläufe" unterstützen. Trennt man dann das Verhalten auf, das ein Teil in einem Domain Model (Bounded Context), aber z.B. CRUD seperat davon behandelt wird? Wie ist es eigentlich mit Validierungen die in beiden Teilen benötigt werden, hier habe ich bislang das Gefühl das man mit DDD ggf. viel Code dupliziert (Und damit meine ich nicht vom Modell her, bei dem in einem Domain Model ja immer unterschiedliche Teile von einem Element betrachtet werden können - so das man nur bedingt von Duplikation sprechen kann).


Anmelden zum Antworten