November 2005 Entries

Interfaces or abstract classes, or There is no silver bullet

A few weeks ago I attended an AOP workshop at Microsoft. One of the AOP flavors that was presented requires you to implement an interface for every class that you want to apply aspects too. I find this fairly annoying and constricting. When I voiced my concern about having to create one interface for every class in my 600 class architecture, I was told by the majority of the people there, from both academia and the CLR team, that this is how you should design your framework anyway. That interfaces ......

The Eight Fallacies of Distributed Computing

Someone on GeeksWithBlogs posted this link, but I think it was so important that it deserves a second showing. Its the 8 fallacies of distributed computing. As anyone who has looked through my blog knows, I'm not a big fan of the Web Service storm thats blowing through the programming world. It just doesnt make sense to blindly make massive distributed architectures inside your own fire walls. But companies are doing it. ......

Microsoft AOP workshop highlights

I previously posted that I had attended a workshop hosted by Microsoft Research on the topic of Aspect Oriented Programming. The core purpose of AOP I’m a firm believer of: to modularize systems more effectively. But I’m still not sold on the AOP implementation of this directive. But, I do fine AOP intriguing and have developed an implementation that uses dynamic runtime weaving (more about this below). It works pretty well, and doesn’t degrade the application performance too bad. ......

Who else is using / implementing / interested in AOP

How much attention does Aspect Oriented Programming have in the .Net community?  Are people using it?  implementing it?  know what it is? 

Aspect Oriented Programming Workshop

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 ......

Getting VisualStudio assemblies to work with Cecil

One thing I finally figured out, through the help of the guy that wrote Cecil, is that Cecil wont load Incremental builds. What does that mean? You know how VisualStudio has two build options: Build and Rebuild. Well when you use Build only the methods that change get recompiled. This causes some weirdness in the assembly with the metadata tables that Cecil cant (wont) handle. How do you get around this? Recompile is the answer! :-) Recompile compiles all your code and creates proper metadata tables ......

More about code uniqueness and....Cecil ROCKS!!!!!

The tool I referred to in my last post about code uniqueness was FxCop. I'm sure most people have heard of FxCop, but for those that haven't: FxCop provides a way to validate your compiled assemblies against a list of about 200 canned rules. These rules are anything from design guidelines, security checks, performance checks, to globalization standards. FxCop also provides a way for you to create your own rules and hook them into its validation process. Behind the scenes FxCop uses what Microsoft ......

How unique is your code?

Recently I found a tool that will parse a .Net assembly(s) and return back an object graph of the underlying structure: Assemblies, Namespaces, Types, Members...all the way down to the IL opcodes in each method. This opens a lot of doors to writing tools that can look at the overall architecture of your application, across many assemblies. One tool I wrote creates a MD5 hash of the contents of each method, based on the IL opcodes and the values they are operating on. From this I can then figure out ......