I had a discussion with sendhil
in the morning about using the interception application block. After the discussion i wanted to explore the concepts of AOP. I googled and found some interesting links about AOP.
One of the article describes AOP as
"To intercept method calls and do something meaningful either before it’s executed or afterwards".
What is AOP?
Like structured programming and Object-Oriented programming introduced a new approach for designing programs and a set of guidelines to make more readable and reusable code, AOP is a philosophy that is related to style of programming. It addresses issues that can be solved in other approaches, but in a more elegant way. To understand the spirit of AOP, you must understand the following issues:
- separation of concerns: referring the Law of Demeter, a project’s efficiency increases if all the concerns are well modularized and if you only have to speak to your direct friends to make a modification of the program (this is a very old principle and the OOP gives some answers)
- crosscutting: in a complex system, there are always some concerns that are not easily modularized, especially common-interest concerns that, by essence, are used by several modules (i.e. several modules use/share a well-known service of a module — such as a logging or a persistence service)
- dependencies inversion: the best way to avoid crosscutting is to NOT use the well-known services that crosscut. This is possible by reversing the dependencies (i.e. the well-known service shall use the other modules instead of the contrary). This dependency inversion is implemented by aspects
The AOP approach has a number of benefits. First, it improves performance because the operations are more succinct. Second, it allows programmers to spend less time rewriting the same code. Overall, AOP enables better encapsulation of distinct procedures and promotes future interoperation.
Some useful links