2010-02-15 10 views
7

Ich mache Forschung und einen Punkt, den ich behandeln möchte, ist "Was ist die Beziehung zwischen Domain-driven Design und Aspect-orientierte Programmierung?"Wie kann domänengesteuertes Design mit aspektorientierter Programmierung kombiniert werden?

Ich weiß, dass ein Hauptprinzip in DDD Trennung von Bedenken ist und ich verstehe das. Was ich nicht wirklich sicher bin, ist, ob sich Aspekte in AOP in DDD wie "Subdomains" in unserer Domäne verhalten.

Sind diese beiden Konzepte, im Grunde die gleiche Sache. Ich meine, wenn ich eine Anwendung nach AOP und DDD entwickle, wird es am Ende des Tages wahr sein, dass "eine Subdomain" == "ein Aspekt" ist.

Ich werde auch andere Meinungen zu schätzen, was ist die gemeinsame zwischen AOP und DDD.

Antwort

7

Eines der Ziele von DDD ist eine reine Darstellung Ihrer Geschäftslogik, die nicht von Ihrer Infrastruktur beeinflusst wird. Ein sehr mächtiges Werkzeug, um dies zu erreichen, ist AOP. Ich verwende AOP hauptsächlich für Infrastruktur-Sub-Domains wie Logging, Caching, Validierung und Exception-Handling. Normalerweise verwende ich AOP nicht für die eigentliche Geschäftslogik, aber die Validierung ist sowohl eine Art Infrastruktur- als auch Geschäftslogik.

In den Fällen, in denen AOP in Geschäftslogik blutet, verwende ich Attribute/Annotationen, um das Verhalten aufzurufen. Für andere Anliegen verwende ich die Richtlinie/Konfiguration, um Aspekte anzuwenden.