Naturally, my research lead me to a post by Scott Hanselman (see it here) which lists some of the more popular IoC and dependency injection frameworks out there.
I started of looking at Spring.Net and was very impressed by its features, samples/tutorials and documentation but it felt like it would be too much for this project and the learning curve seemed somewhat steep. Its configuration syntax also looked very verbose. But if you want to learn more there is a good article over here.
It looked easier to learn/use than spring.net but there getting started section was incomplete even though Scott says that it is well documented. So that was a little discouraging.
I really liked there syntax and looked really easy to use and figure out, but the documentation was very limited. It was just a bunch of wiki pages in Google Code. Though, they did have instructions on how to integrate it with MVC
Initially, I learned about structure map from a post by Phil Haack’s and I kind of liked it right away. It was easy to pick up and figure out and Phil’s example helped to get me started quickly. I checked there website and it has an impressive list of features and is well documented.
PostSharp is really cool but is not an IoC container. It is a policy injector and a really easy way to do Aspect Oriented Programming (AOP). Rather than trying to explain what exactly it does and screw it up, take a look at the “About PostSharp” page. Even better check out this “getting started” walkthrough – you will be very impressed.
Must Pick One
I know there is a lot more IoC containers out there (which I glanced over), but these were sufficient for me. Initially, I thought about using AutoFac but when I started to actually use it and ran into some issues, the documentation was not helpful at all.
I have decided to go with StructureMap as my IoC Container and dependency injector. I might also use PostSharp to implement logging and tracing as aspects – there is no cleaner way.
For a good explanation of IoC Containers and the Dependency Injection patter, read this article by Martin Fowler.
This also a good explanation that might help you understand IoC Containers.
You should definilty take a look Matthew Podwysocki’s comparison of the different IoC containers out there and their different (or rather similar) configuration and syntax.
Books you must Read
And Martin Fowler’s indispensable reference for software patterns Patterns of Enterprise Application Architecture
Validate my Choice
What do you think of my choice? Does it really matter which one I go with? Do you prefer a different IoC container and why?
Time to choose a unit testing framework… I love choices!!!