Anders and AOP
There's a whiteboard session with Anders Hejlsberg on the MSDN site entitled "Whiteboard with Anders Hejlsberg". The very first question that Anders addresses relates to AOP and his reaction was interesting. I get the impression that the Microsoft C# heavy-weights get asked about an AOP direction for .NET regularly - well regularly enough that "wait and see" is the canned response. This is just an impression from reading Microsoft blogs and the aforementioned whiteboard session i.e. it may not be related to the reality.
One of Anders responses to the AOP question was that a lot of what AOP does can be achieved by a hosting environment e.g. attributes affecting how code is hosted in an ASP.NET environment. My reaction to this is that it's another deployment dependancy in addition to the .NET runtime itself. I was following Java progress in the late nineties and was a bit disappointed with the direction that Enterprise Java went in. A lot of this was related to my disappointment with the EJB abstractions they chose to go with, but some of it was that high-end vendors got into the picture with EJB containers which resulted in correspondingly high prices for the vendor products. So, though I accept that a hosting environment can be used to solve many of the types of problems AOP assists with, it would be a shame to become beholden to those hosting environments.
This started another train of thought related to an interview with Marc Fleury from JBoss on IT Conversations. During the interview he mentioned the JBoss work with AOP. More information can be found here and also in an article from Linux Magazine. Java annotations (equivalent to .NET attributes) are used to mark which parts of a program an aspect applies to. See this previous post for something similar I'd like to see for .NET.
The approach of using annotations/attributes to mark what aspects to apply to a class/method/property addresses many of the concerns that people have with AOP. It's clearly defined at the local code location, which aspects will be applied. I'd like to see the .NET runtime itself be aware of aspects and to provide a defined mechanism for application code or higher level hosting environments to define the code that gets injected for that aspect.