* as voted on by me, the impartial developer of StructureMap who has never used any of the other equivalent tools. If nothing else, StructureMap predates both Spring.Net and Castle.
StructureMap is a Dependency Injection framework that can be used to improve the architectural qualities of an object oriented system by reducing the mechanical costs of good design techniques. StructureMap can enable looser coupling between classes and their dependencies, improve the testability of a class structure, and provide generic flexibility mechanisms. Used judiciously, StructureMap can greatly enhance the opportunities for code reuse by minimizing direct coupling between classes and configuration mechanisms.
I made a new release of StructureMap this evening that incorporates 15 months of enhancements and refactorings that I've made to support our project work. We've used StructureMap successfully as the configuration subsystem of a rules engine and to smooth out the deployment reliability and testability of a large legacy system. The new functionality includes:
New terser Attribute Normalized Xml configuration style
The ability to include secondary configuration files
Set a default profile at the top level of configuration
StructureMapExplorer, a WinForms tool to explore and debug StructureMap configurations
New ancillary NAnt tasks, including functionality to create a file "manifest" to verify the contents of an application deployment
New configuration storage choices
New Instance lifecycle scoping options (PerRequest, Singleton, ThreadLocal, etc.)
The "TemplatedMementoSource" option for large instance graphs
Streamlined codebase with less coupling and greater test coverage. Greatly improved diagnostics.
New methods on ObjectFactory
- GetAllInstances() - returns all instances of a certain type
- WhatDoIHave() - for runtime troubleshooting
- GetInstance(Type, InstanceMemento)
See the release notes at:
http://StructureMap.sourceforge.net or download at:
http://sourceforge.net/projects/structuremap
I wasn't sure I was ever going to get around to putting out another release (I honestly thought I'd get a release out last year before Revenge of the Sith came out), but I'm sitting here watching the Clippers win a playoff game, so I think you can say that anything is possible.