Geeks With Blogs
John Conwell: aka Turbo Research in the visual exploration of data

This last Monday I was fortunate enough to attend a workshop hosted by Microsoft Research on Aspect Oriented Programming.  The workshop most mostly attended by researchers from different universities in the US and Europe (though Brazil was also represented).

I've worked on an implementation of AOP in .Net on and off over the past year, and it was interesting to see that several universities were working on implementations that were along the same lines as my own. 


I was surprised to see how many different ways there was to implement AOP.  The four predominant ways were:

  1. Static source weaving: this is where a tool weaves the aspects into the methods in the actual source code.  Then the normal compiler runs on the code
  2. Static byte weaving: this is where a post compile process modifies the compiled dll or exe by injecting the aspects into the actual byte code of the dll or exe
  3. Dynamic runtime weaving: this is where class factories are used to create instances of types that have aspects applied to them.  The factory uses System.Reflection.Emit to create new types, that inherit from the requested type.  This new type has the aspects woven into them.
  4. Modify the runtime / type loader: this is much more complex.  This is where the type loader of the runtime is changed to do the dynamic weaving.  This has the added benefit of not having to use class factories, but very complex to implement.


One thing that was interesting to see the lack of any guiding body on AOP within the .Net community.  The Java world has seemed to settle on (mostly) JAspect or JBoss.  There are now several large scale enterprise software implementations in Java that utilize AOP with either of these two AOP implementations. 


An interesting comment was raised during a discussion as to why the .Net community hasn’t embraced AOP like the Java community has.  In the Java arena, when someone creates something new, cool, and useful, companies aren't that afraid to integrate that new thing into their development process. 


But in the Microsoft world everybody waits to see what Microsoft will do.  Since the development environment and processes are so tightly integrated into MS products (even more so with MS Team System), companies don’t want to head off in one direction when there is a chance that MS might go in the other direction.  So if Microsoft doesn’t ever feel the need to implement AOP, most likely it will never grow into the mainstream.

Posted on Thursday, November 17, 2005 9:38 AM Ramblings | Back to top

Comments on this post: Aspect Oriented Programming Workshop

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

Copyright © John Conwell | Powered by: