Der Hauptgrund für diese Grenzen ist die Trennung von Bedenken . Der Code, der auf den Datenspeicher zugreift, muss sich nur um den Zugriff auf den Datenspeicher kümmern. Es sollte nicht dafür verantwortlich sein, Regeln für die Daten durchzusetzen. Darüber hinaus sollte die Benutzeroberfläche dafür verantwortlich sein, die Steuerelemente in der Benutzeroberfläche zu aktualisieren, Werte von Benutzereingaben abzurufen und diese in etwas zu übersetzen, das von der Domänenschicht verwendet werden kann, und nicht mehr. Es sollte Operationen aufrufen, die von der Domänenschicht bereitgestellt werden, um alle erforderlichen Aktionen auszuführen (z. B. diese Datei speichern). Ein aufgerufener Webdienst sollte für die Konvertierung vom Übertragungsmedium in einen Bereich verantwortlich sein, den die Domänenschicht verwenden kann, und dann die Domänenschicht aufrufen (die meisten Tools erledigen einen Großteil dieser Arbeit für Sie).
Wenn diese Trennung richtig implementiert ist, können Sie Teile Ihres Codes ändern, ohne andere zu beeinflussen. Möglicherweise muss die Sortierreihenfolge einer zurückgegebenen Sammlung von Objekten geändert werden. Da Sie wissen, dass die für die Datenmanipulation verantwortliche Schicht (normalerweise die Geschäftslogikschicht) diese Aufgaben übernimmt, können Sie leicht feststellen, wo der Code geändert werden muss. Außerdem müssen Sie nicht ändern, wie es aus dem Datenspeicher oder einer der Anwendungen abgerufen wird, die die Domäne verwenden (die Benutzeroberfläche und der Webdienst aus meinem obigen Beispiel).
Das ultimative Ziel ist es, Ihren Code so einfach wie möglich zu pflegen.
Nebenbei bemerkt, einige Dinge können nicht in eine bestimmte Ebene der Domäne eingeordnet werden (z. B. Protokollierung, Validierung und Autorisierung). Diese Elemente werden im Allgemeinen als Querschnittsthemen bezeichnet und können in einigen Fällen als eigenständige Ebene behandelt werden, die alle anderen Ebenen sehen und verwenden können.
Persönlich denke ich, dass der mehrschichtige Ansatz veraltet ist und dass der Service-Ansatz besser ist. Du hast immer noch die klare Linie im Sand, wer was tut, aber es zwingt dich nicht dazu, so hierarchisch zu sein. Beispielsweise stellen ein Bestellservice, ein Abrechnungsservice und ein Versandservice aus der Anwendungsperspektive alle diese Services Ihre Domain dar, und die oben beschriebene Übertragung der Verantwortung gilt in diesem Zusammenhang noch, sie wurde soeben geändert dass Ihre Domain an mehreren Orten vorhanden ist, wobei das Konzept der Trennung von Interessen weiter genutzt wird.