R – differences between IoC containers

ioc-containernet

I'm looking for some guidance about how to chose an IoC container for an ASP.NET MVC application.

What are the differences between (for example) StructureMap, Ninject, Castle Windsor, Unity, autofac and others? Can anyone give some hints or links to resource that might help chosing one library?

Update: there is one question (Enterprise Library Unity vs Other IoC Containers) which talks about the differences in the initialization of the IoC containers.

But are there any differences in functionality, which would make some IoC containers a better choice for an ASP.NET MVC application?

Best Answer

One thing which is different between the various IoC containers are the lifecycle or instantiation modes which are supported out of the box (when to create a new instance of the component):

  • StructureMap
    • transient (called per-request), singleton, thread-local, per-HttpContext, per-HttpSession, Hybrid
  • Ninject
    • transient, singleton, per-thread, per-HttpRequest
  • Castle windsor
    • singleton, transient, per-thread, pooled, per-HttpRequest (additional available through facilities)
  • autofac
    • transient (factory), singleton, per-HttpRequest
  • Unity
    • transient, singleton, per-thread