Question for you dear reader, what do you like most in your IoC framework of choice, what is lacking and what would you want to see?
Love Autofac for:
-Compact and unobtrusive design
-Responsive project owners
Have not yet found it wanting for anything.
NInject because it supports CF.Net
I second the love for AutoFac. I assume, Ben, that Auto-wiring support is a given?
Support for collections (ie, dependencies of type IEnumerable<T>) is another thing I've found very useful.
The WCF/ASP.Net integration is great.
It's useful that there's also a Silverlight implementation.
Windsor. Mostly for convention over configuration and extensibility. Also proven on several projects already and have absolutely no complaints.
Samuel - Yes, I had auto-wiring as a given. However, I did not realise that Autofac auto-wiring was as smart as it is (just re-read the wiki page). So I add that to my list, and crank up my Autofac fanboy level.
I'll have to do another survey of the available options some time soon, as I haven't done one in a good while now, but when last I checked Structure Map won out on its good balance of feature set vs. performance but even moreso on its assistance in getting a convention-based assembly scanning and component registration process up and running easily without forcing us to adopt an arbitrary pattern of assembly organization, component interface base interfaces, naming patterns, etc. Instead we were able to design one that worked best for our project and then add a tiny amount of code to get SM working with that convention.
Here we uses Spring.Net.
- None invasive IoC container, never get in your way when you code. You don't need to inherit or implement anything, neither to added any attribute. But if you want, there are available and give you more power and/or convenience.
- Most of features mentioned about except SilverLight support (not 100% sure but I don't think it does).
- Modularized, use only when you need.
- Option of auto-wiring or take full control, or somewhere in between.
- Convenient data access support.
* Consistent data access exception abstraction, make you service layer code much easier to write.
* NHibernate integration.
* Loaded ADO support feature to simplifies ADO code and automatically database neutral.
* Declarative Transaction Support
- Factories automatically expose PONO class as WebService (asmx or WCF), Remoting object or maybe something else that I don't know.
- Common Logger think adapter layer make your choose of logging framework as a simply configuration task. This is not exactly part of Spring but was built by the same team. NHibernate is adopting it.
- Ported from Java's proven No.1 IoC container.
I want to see:
- Hopefully, it will still keep the philosophy as an non-invasive framework.
- programmable configuration in addition to XML configuration.
- Detailed tutorial
- Integrate with some advanced AOP, for example PostSharp, so that you can inject dependency into objects created by the new keyword.
One of the biggest reasons is there's a lot of guidance on the Autofac website on how to use IoC correctly rather than using the container in a service-locator style.
good post. thanks.
I like NInject and Autofac, because they are lightweight, easy to use and the syntax, Autofac also support lambda, it's cool.