Frage

Wer weiß, was AOP Features unterscheiden zwischen AspectJ und Postsharp (ja, ich weiß, sie sind für verschiedene Sprachen und Plattformen)?

Ich versuche zu verstehen, welche Art von Dingen AspectJ erlauben würde, dass Postsharp würde nicht, und umgekehrt.

War es hilfreich?

Lösung

Postsharp 2.0 ist viel näher an AspectJ als Postsharp 1,5 war. Der Vergleich von Postsharp 1,5 bis Frühling AOP gerechtfertigt war, ist aber nicht mehr mit Postsharp 2.0.

Es gibt jedoch noch einige starke Unterschiede in der Herangehensweise.

  1. Der Ansatz zur pointcuts ist radikal anders. AspectJ bietet eine komplexe pointcut Sprache. Postsharp bietet ein grundlegendes deklaratives pointcut System und kann Sie unbedingt pointcuts entwickeln, so dass Sie Code schreiben können (in der Regel unter Verwendung von System.Reflection), den die pointcut bei der Kompilierung ausgewertet wird. Anstatt also eine pointcut Sprache zu haben, unterstützt Postsharp Ebene C # oder Linq.

  2. Es gibt in der Tat keine bedingte pointcut (cflow).

  3. Postsharp unterstützt Semantik von höherer Ordnung, wie Ereignisse und Eigenschaften. AspectJ, mein Wissen, nicht (da kein Ereignis oder eine Eigenschaft in Java afaik).

  4. Postsharp Aspekte typischerweise instanziiert werden und bei der Erstellung initialisiert, dann in die Baugruppe serialisiert und deserialisiert zur Laufzeit ausgeführt werden. Dies ermöglicht es den Aspekt „initialisieren“ bei der Erstellung, so Laufzeitleistung ist besser. Es erlaubt auch beliebig komplexe Logik zur Buildzeit auszuführen (in der Regel der Initialisierung pointcut Auswertung, joinpoint Validierung).

  5. Postsharp hat echte Unterstützung für die Seite Zusammensetzung, das heißt mehrere Aspekte oder Hinweise auf den gleichen joinpoint in einer prädiktiven Art und Weise anwenden kann. Postsharp ist für ein Multi-Vendor-Szenario entwickelt, in denen mehrere Aspekte Anbieter weiß nicht, über die jeweils anderen. Es verfügt über ein komplexes System von Abhängigkeiten, wo Aspekt Entwickler / Anbieter deklarativ Beschränkungen, Anforderungen und Konflikten angeben Bestellung.

Ab Version 2.0 Postsharp kommen mit IDE Werkzeugen, die die Funktionalität von "AJDT" für Eclipse teilweise abdecken.

Andere Tipps

Aus ihrer Dokumentation von Postsharp: http://doc.postsharp.org/ 1.5 / ## PostSharp.HxS / Userguide / Laos / AspectKinds / overview.html

Unterstützte Arten von Punkten verbinden: http://doc.postsharp.org/ 1.5 / ## PostSharp.HxS / Userguide / CoreLibrary / Codeweavers / overview.html

AspectJ bietet sehr viel mehr Flexibilität als die Punkte verbinden kann entschieden komplexer sein, um das zu tun, was Sie wollen.

Es dass cflow erscheint, kann beispielsweise nicht mit Postsharp erfolgen.

Es ist wie Frühling, dass es sich um eine Version von AOP nach unten abgezogen wird, um es einfacher zu machen, zu verwenden.

Update: Obwohl ich glaube es nicht vollständig aktualisiert wird, ist dies eine gute Idee, was AspectJ unterstützt: http://www.eclipse.org/aspectj/doc/released/ progguide / index.html

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