Es ist schwer, die Bedeutung der expliziten Grenze um das Domänenmodell zu überschätzen. Es geht nicht nur darum, ein separates Verzeichnis für Domänenklassen zu haben. Es geht auch darum, diese Domänenklassen von out-of-Process-Abhängigkeiten und allen anderen Anwendungsbedenken zu isolieren, sodass sie rein und fokussiert bleiben. Die “London Software Craftsmanship Community” (LSCC) wurde 2010 gegründet und ist heute mit mehr als 5000 Handwerkern die größte und aktivste Software Craftsmanship Community der Welt. 2014 veröffentlichte Sandro Mancuso, einer seiner Mitbegründer, ein Buch The Software Craftsman: Professionalism, Pragmatism, Pride. Es brachte der Software-Handwerksbewegung zusätzliche Sichtbarkeit und verstärkte die Bemühungen um höhere technische Exzellenz und Kundenzufriedenheit. Die Kombination aus der Anwendungsdienstschicht und der Domänenschicht bildet ein Sechseck, das selbst Ihre Anwendung darstellt. Es kann mit anderen Anwendungen interagieren, die mit ihren eigenen Sechsecke n. Chr. dargestellt werden. Bei diesen anderen Anwendungen kann es sich um einen SMTP-Dienst, ein Drittanbietersystem, einen Nachrichtenbus usw.

Eine Reihe interagierender Sechsecke bildet eine sechseckige Architektur: Das Zuweisen des Domänenmodells mit einer expliziten Grenze hilft Ihnen, diesen Teil des Codes besser zu visualisieren und zu begründen. Die Grenze selbst kann die Form einer separaten Assembly oder eines Namespace annehmen. Die Angaben sind nicht so wichtig, solange die gesamte Domänenlogik unter einen einzigen, eindeutigen Schirm gestellt wird. Die Verwendung von Befehlen anstelle von DTOs ähnelt der Verwendung von Domänenentitäten für denselben Zweck, was für die Kapselung Ihrer Anwendung äußerst schädlich ist. Die Verwendung von Befehlen ist natürlich nicht so schlecht, da die Befehle selbst keine Geschäftslogik enthalten, aber die Nachteile sind ähnlich – die Verwendung von Entitäten oder Befehlen anstelle von DTOs behindert Ihre Fähigkeit, das Domänenmodell umzugestalten. Befehle lösen eine Reaktion im Domänenmodell aus. Ereignisse sind das Ergebnis dieser Reaktion Wenn wir eine Architekturdiskussion führen, sprechen wir über Abstraktionen, wobei Begriffe wie Komponente, Modul und Ebene verwendet werden. Diese Abstraktionen spiegeln unser mentales Modell eines Softwaresystems wider, das nützlich ist, wenn wir unsere architektonischen Ideen und Absichten beschreiben. Dieselben Abstraktionen gibt es in der Regel nicht in den Programmiersprachen, die wir verwenden. Es gibt z. B.

kein Layer-Schlüsselwort in Java. Um diese Abstraktionen zu implementieren, müssen wir eine Kombination der Konstrukte verwenden, die in unseren Programmiersprachen verfügbar sind; wie Klassen, Schnittstellen, Objekte, Funktionen, Pakete, Namespaces, Dateien und Ordner.