In a more literal sense, Aspects are application infrastructure components, as a foundation is to a house, Aspects are to a software application. Now how does this differ from OOP?
The intention of Aspect Oriented Programming is two fold:
- Separation of Concern: the separation and centralization of application logic in a non redundant fashion.
- Cross Cutting: entanglement of application logic within a program resulting in scattering tangling or both.
Some of you may argue AOP is no more than another level of abstraction in OOP, and you'd be correct in saying that. I personally find the theory interesting, but the practice a bit defeatist. As a .Net developer, I'm sure I'd prefer using the built in .Net Roles & Members over AOP, but, heck, if I can make my code more readable I'm up for giving it a shot.
Here are some interesting articles which talk to AOP, and a simple AspectF implementation (which isn't real AOP) by the creator of pageflakes.com:
Aspect Oriented Programming Wikipedia
AspectF Fluent Way to Add Aspects for Cleaner Maintainable Code
AspectF Simple way to cache objects and collections for greater performance and scalability
What do you think about AOP?
Over and Out