Frage

Wir haben eine Anwendung, die zusammen mit vielen Dingen einige Änderungen an Active Directory durchführt (Benutzer aus der Gruppe hinzufügen, die Attributwerte für den Benutzer ändern usw.).

Wir sind jetzt dabei, es neu zu gestalten (von "Spaghetti-Code" in eine mehr geschichtete Lösung). Die Active Directory -Management -Funktionen möchten wir in der Domänenschicht bis zu einem gewissen Grad abstrahieren, aber gleichzeitig sind die meisten Funktionen sehr technologisch abhängig.

Sollten wir alle Active Directory-Zugriffscode zusammen mit unserem DB-Access in die Datenzugriffsebene einfügen, oder ist es in Ordnung, eine Active Directory-Funktionsbibliothek von Funktionen zu erstellen und diese Bibliothek direkt aus dem Domänenmodell aufzurufen? Das macht das Domain -Objekt anhaltend bewusst und das ist wahrscheinlich eine schlechte Idee?

Oder sollte stattdessen alle Active Directory -Zugriff in der Serviceschicht durchgeführt werden und nicht einmal die Domänenschicht beinhalten?

War es hilfreich?

Lösung

Domänenmodelle sollten sein Technologie-agnostisch, Setzen Sie Ihren Anzeigencode also nicht in das Domänenmodell.

Im Wesentlichen könnten Sie sagen, dass AD -Code nur eine andere Form des Datenzugriffs ist, so dass er zum Datenzugriff gehört Schicht (Dal). Es gehört jedoch nicht mit Ihrem Datenbankmodul zusammen, da dies ein Verstoß gegen das wäre Einzelverantwortungsprinzip (SRP - Es gilt sowohl für Module als auch für einzelne Typen).

Implementieren Sie es in einer eigenen Bibliothek, anstatt es zusammen mit dem Datenbankzugriff zu bilden. Konzeptionell gehört es in die gleiche Ebene, aber es macht unterschiedliche Dinge, so dass Sie jetzt zwei Bibliotheken in derselben Ebene haben. Das ist absolut in Ordnung - Sie können so viele Bibliotheken in jeder Ebene haben, wie Sie benötigen.

Behandeln Sie im Domänenmodell den AD -Zugang (und den DB -Zugang) als Abstraktionen. Abstrakt Repositorys sind der Standardansatz. Die AD -Bibliothek enthält Implementierungen des Ad -Repository, und die DB -Bibliothek enthält Implementierungen der DB -Repositories.

Dies passt gut zu Domänengetriebenes Design und das Konzept eines Antikorruptionsschicht.

Sie können verwenden Abhängigkeitsspritze (Di) Um die Betonrepositories mit Ihrem Domänenmodell zu verdrahten.

Andere Tipps

Ich denke, die technologischen spezifischen Dinge sind Implementierungsdetails, sollten nicht in das Domänenmodell eingestuft werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top