AOP Docs: Introduction
Aspect Oriented Programming as a programming paradigm that has grown in popularity over the past several years for many reasons. It's goal is to increase modularity within software by providing the means to cleanly keep separate "cross-cutting concerns", otherwise known as aspects from other portions of your code base. Aspects are parts of a program that affect other parts. Clear as mud, right?
Logging is a perfect example of a possible cross-cutting concern as it's implementation within a program is usually wide-spread and in traditional approaches, requires logging algorithms to be intermingled within the source code that requires the behavior. With the application of an aspect (a.k.a, cross-cutting concern / advice) at a specific join-point (point at which aspect interception occurs), a greater degree of modularity is realized by separating aspect logic (logging in this example) from it's target consumer.
While the implementation of AOP facilities between programming languages varies greatly, the end result is generally the same. Here's a rundown on the terminology as it relates to this API;
| Cross-Cutting Concern: | Conceptual aspects of your program that influence or affect other parts of the system. |
| Advice or Aspect: | An implementation encapsulating the desired behavior of the cross-cutting-concern to be applied at a specific join point. |
| Join Point: | The point or position at which advice or an aspect will be applied to a point-cut; usually before, after, or around. |
| Point Cut: | The target or subject influenced by a cross-cutting concern (aspect or advice). |