Eigenständiger BegriffMusterKapitel I · Domäne · Baustein 3 von 18

Domain Service

Ein Domain Service macht eine domänensprachliche Operation sichtbar, die mehrere fachliche Werte verbindet.

  1. FaktenWerte der fachlichen Regel.
  2. OperationBenannte Entscheidung.
  3. ErgebnisFachlich verständliche Ausgabe.

Einordnung

Warum das wichtig ist

Fachliche Regeln ohne natürlichen Objektbesitzer präzise modellieren und unabhängig prüfen.

Fachliche Berechnung mit expliziten Eingaben; Infrastruktur und Prozesskoordination bleiben eigene Zuständigkeiten.

Shop-Beispiel · Zuordnung

Objektverhalten oder Domain Service

Die Versandfähigkeitsregel prüft Werte aus Bestellung, Katalog und Versandoptionen innerhalb des Sieben-Modul-Shops.

So liest du das Bild

  1. Fakten Eingaben
  2. Operation Regel
  3. Ergebnis Antwort
Objektverhalten oder Domain Service
KriteriumRegelGeeigneter Ort
Direkte InvarianteEntity oder Value ObjectEntity oder Value Object
Mehrere FaktenDomain ServiceDomain Service
Die Matrix ordnet Regeln nach ihrem natürlichen Besitzer.

Nutzen & Grenzen

Hilft, wenn

  • Eine Entscheidung verbindet Fakten mehrerer Objekte und gehört keinem davon allein.
  • Eine fachliche Operation braucht einen klaren, unabhängig prüfbaren Vertrag.

Grenzen

  • Ein Service pro Entity erzeugt prozedurale Schichten und verteilt zusammengehörige Regeln.
  • Infrastrukturaufrufe und Prozesssteuerung gehören in passende Anwendungs- oder Integrationsbausteine.

In der Praxis

  1. Formuliere die Regel in der Sprache der Fachleute als Entscheidung mit klarer Eingabe und Ergebnis. Notiere außerdem, welche fehlenden oder widersprüchlichen Werte eine fachliche Antwort erfordern.
  2. Prüfe zunächst, ob eine Entity oder ein Value Object alle relevanten Fakten besitzt und die Regel als eigenes Verhalten ausdrücken kann. Erst wenn kein Objekt der natürliche Besitzer ist, ziehe einen Domain Service heran.
  3. Gib die übrigen Fakten über einen schmalen Vertrag hinein und liefere ein fachlich benanntes Ergebnis zurück. Teste Grenzfälle ohne Datenbank oder Netzwerk und halte Seiteneffekte in einer passenden Anwendungsschicht.
Ausführliche Erklärung lesen

Der Service beschreibt eine Operation wie „Versandfähigkeit bestimmen“. Er erhält die Fakten, die er für die Regel benötigt, und liefert ein fachliches Ergebnis zurück. Er trägt keinen langlebigen eigenen Zustand und versteckt keine Datenbank- oder Netzwerkzugriffe.

Gehört die Regel eindeutig zu einer Entity oder einem Value Object, bleibt sie dort. Regeln über mehrere Konsistenzgrenzen benötigen eine bewusst gestaltete Prozesskoordination. Ein Domain Service ist weder ein allgemeiner Anwendungsschritt noch automatisch ein verteilter Transaktionsmanager.

Prüfe zuerst, ob die Regel zu einer Entity oder einem Value Object gehört; die Konsistenzgrenze erklärt das Aggregate.

Selbst prüfen

Teste dich in drei Stufen

  1. AblesenIm Bild nachsehen

    Welche Fakten prüft die Shopregel?

    Lösung mit Begründung ansehen

    Gewicht, Lieferregion und Versandart.

  2. AnwendenAuf eine neue Lage übertragen

    Eine Regel gehört natürlich zum Warenkorb. Wo liegt sie?

    Lösung mit Begründung ansehen

    Als Verhalten des passenden Warenkorbobjekts.

  3. BewertenEine Alternative abwägen

    Wann ist eine separate Domain Service gerechtfertigt?

    Lösung mit Begründung ansehen

    Wenn kein Objekt die Operation natürlich besitzt und Eingaben sowie Ergebnis fachlich klar sind.

Weiter im Lernpfad

Als Nächstes in Domänenmodellierung & DDD: Event Storming.