Geeks With Blogs
Donald King's Blog Implements IQuestionable

I recently saw this article on TheServerSide.NET and thought it was a very well written article on AOP implementation with .NET. The author also did a nice job of discussing the basics of AOP including terms associated with and the overall purpose of the paradigm. A very long time ago I had come across an introductory article in Software Development magazine that focused on AspectJ. Touted as the the world's first Aspect-Oriented compiler, it seemed (at least to me) to speak of the next revolution in software design to come. The author even quoted:

“Mark my words, aspects are going to cause an epochal shift in programming right up there with the object shift of a decade ago”

I immediately went to the project web site, downloaded the compiler and did my first “Hello World” using aspects. I was fired up and fascinated at this new idea and at the time was still fairly heavy into Java in my alternate life. I ended up entering into the Masters program at the University of Kansas under the School of Engineering to pursue my graduate degree. Needless to say, I had to drop out (here come the excuses) because my son Jonathan came along and he takes up all of my spare time and I love it. I wouldn't change a thing about that. Another issue was the drive over to the Edwards Campus in Kansas City in the evenings I had classes, three hours in the classroom and then a drive back to Topeka. I usually would get home close to 12:00 A.M. on those nights. Just a bit too much for me so I left the program. Anyway, I digress, my point was going to be that I ended up focusing on Aspects for my thesis work that I did while I was there. This included research and production of a term paper on AOP for my Object-Oriented Software Engineering Class (EECS 816?). While researching I came across a posting by John Lam who runs Here is the post reproduced at Sam Gentile's blog. For some reason it seems that John has removed the resource from his web site. The posting was in regards to a tool John had been working on called CLAW (Cross Langauge Aspect Weaving). In the posting John discusses his wavering support for AOP and points out what are glaring shortcomings centered mostly around the idea of unintended side-effects and oblivious behavior. To give you an idea of what that means, suppose that you were debugging an application and someone was interjecting an aspect into your method (before, during or after) based on its signature. So for example, everytime you called the ToString() method an aspect interjected and provided behavior you have no control over or have no need for. In most respects this might be something more along the lines of logging or security checks but you can see how this could be dangerous. From an unintended side effects perspective the idea is basically the same and I guess could be considered somewhat synonymous. For instance, if a conditional operation is short circuited, and one of the operators is a method, an aspect might be injected (or fail to be injected) and the uninteded side-effect occurs. Of course Lam does not propose that AOP is a completely lost cause but as he says:

“I believe that AOP, as it stands today, is too complicated to use as a general-purpose development methodology“

He also goes on to mention how many of these problems might be solved by a good IDE.

The point to all of this is that it really took the wind out of my sails and made my thesis work seem somewhat pointless. I am encouraged by some of the seeming ressurgence of AOP I have seen lately in the community or at least interest if nothing else. It has sparked me to pick back up the AOP book if you will and keep reading.

Please let me know your thoughts or any experiences you have had with AOP. I would love to hear them.

Posted on Wednesday, July 6, 2005 9:54 AM .NET , AOP , OOA&D | Back to top

Comments on this post: AOP

No comments posted yet.
Your comment:
 (will show your gravatar)

Copyright © Donald King | Powered by: