2009-05-11 9 views
8

Ich bin ratlos, warum Adoption von AO so langsam war. Es gibt viele reichhaltige Implementierungen für die vorherrschenden Sprachen. Meine Vermutung ist, dass es, wie OO heute, genug Paradigmenwechsel ist, dass die Menschen die Orte nicht erkennen, an denen sie ihnen helfen könnten.Was ist Ihre reale Welt für Aspect Oriented Programming?

also über nicht-invasive Protokollierung, was sind einige der Möglichkeiten, die Sie verwendet haben, oder planen, AO zu verwenden, die die Komplexität reduziert, verbessert die Wartung, verbessert die System "ilities"?

Antwort

2

Transaktionsverwaltung. Ich weiß, es ist eine kanonische Verwendung von AOP, aber es scheint wirklich, wenn es dafür verwendet wird.

Und während ich keine Gelegenheit hatte, es in einer realen Situation zu verwenden, sehe ich "um Ratschlag" als unglaublich leistungsfähig, insbesondere für den Wert, den es hinzufügt, um die Komplexität des Codes durch Entfernen zu vereinfachen die Notwendigkeit für viele Kontrollen für seltene Bedingungen.

0

Nach meiner Erfahrung scheint mit Spring AOP ziemlich häufig zu sein.

Ich denke, die Schwierigkeit besteht darin, dass Menschen einfach nicht daran gewöhnt sind, in Aspekten zu denken, und Webcode selbst zur Kompilierzeit kann etwas beängstigend sein, da es schwieriger ist zu sehen, was tatsächlich jede Methode beeinflusst. Zum Beispiel, wenn Sie eine Mischung aus Weben zur Kompilierzeit und zur Laufzeit verwenden.

Ich habe es in Situationen verwendet, in denen ich einen Controller habe, und ich füge hinzu, ob es zum Beispiel ein Servlet oder ein Webservice ist. Ich habe es auch verwendet, um die Datenbank zu abstrahieren, damit die Datenbankverbindungen und datenbankoptimierten Abfragen in die Anwendung einfließen können.

1

Ich stimme für Feder AOP.

AOSD (wir sprechen nicht mehr über AOP, ich weiß nicht genau warum) ist wirklich nützlich für Middleware/Service orientierte Architektur, wo Sie bereits einige Modularität haben.

Ich habe es in diesem Zusammenhang für Telefoniedienste mit einigen wirklich begrenzten Billing-Service verwendet.

Ich habe es auch verwendet, um eine Art von modularen Interpreter/Compiler zu erstellen, um einige Analysen um einige Code durchzuführen.

Ein Problem sind meiner Meinung nach die Pointcut-Sprachen, die manchmal schwierig zu beschreiben sind, wo genau Sie Ihren Rat anwenden möchten. Ein weiteres Problem ist die Zusammensetzung, ich weiß nicht, ob es gelöst wurde, aber es könnte schwer zu verstehen sein, wenn Sie Ihre Ratschläge bestellen ....

1

AOP ist üblich, außer Menschen nennen es selten AOP. Sehen Sie sich alle Stellen in der .NET-Programmierung an, in denen Attribute verwendet werden. Attribute sind im Wesentlichen übergreifende Verhaltensweisen, die auf viele Klassen/Methoden/Parameter angewendet werden können.

In jüngerer Zeit hat die ASP.NET MVC-Plattform eine starke Verwendung von Attributen für eine breite Palette von übergreifenden Komponenten wie Sicherheit, Datenbindung und Ausnahmebehandlung verwendet.

+0

Was wäre also ein Beispiel aus der realen Welt, das das veranschaulicht? –

+0

Zum Beispiel In ASP.NET MVC können Sie eine Controller-Klasse oder -Methode mit dem Attribut [Autorisieren] taggen, und das Framework stellt sicher, dass beim Aufrufen des Controllers die Autorisierung ausgelöst wird (z. B. Weiterleitung zur Anmeldeseite). Es gibt viele andere ... – DSO

3

ich zur Zeit AOP bin mit über EntLib/Einheit in der Produktion für:

  • Protokollierung
  • Caching
  • Sicherheit
  • Ausnahme Berichterstattung
  • Leistungsindikatoren

Take a Blick auf http://www.agileatwork.com/unit-of-work-with-unity-and-aspnet-mvc/ für einen Kobold lementation der Arbeitseinheit Muster mit AOP

[UnitOfWork] 
public void Process(Job job) 
{ 
    ... 
} 
+0

Hilfe beim Umwandeln eines Objekts in ein Objekt zur Verwendung im Beobachtermuster. Durch Hinzufügen eines Aufrufs zur Benachrichtigung an das Ende aller Mutator-Methoden. –

Verwandte Themen