I was first dadgummit!

I get an email like this or a query fairly regularly:

I was wondering why you decided to write StrucutreMap
rather than utilizing one of the existing .NET IoC containers (Spring.NET,
Castle etc.).

StructureMap was first.  The port of Spring for .Net was announced right after I released StructureMap in June 2004, and I’m not sure when Castle was released but it was later.

Arguably StructureMap was the first production ready IoC/DI tool for .Net, but I’m not sure when, and if, PicoContainer.Net was ready for real usage.  At the time I released StructureMap I got a little grief from the Pico guys for building a new one instead of using Pico.Net.

Moral of the story?  If you want you’re open source tool to succeed, do a better job getting publicity and a community than I did with StructureMap.

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • jmiller

    My preference is still to use StructureMap, but starting now? I’d pick Castle/Windsor. I probably wouldn’t use it as extensively as I do StructureMap though.

    Regardless, building StructureMap was definitely worth the time. I used it originally to learn .Net (fear not, that code’s all dead), TDD, and try out some design ideas. I’ve had to hit the interview cycle recently, and having an open source tool on my resume has been beneficial — at least in the places you would want to work. I did interview with a member of the Spring.Net team and it never came up though.

  • http://haacked.com/ Haacked

    If you were to start over, would you create StructureMap or choose one of the existing ones?

  • jmiller

    Nah, it’s more like a wasted opportunity on my part

  • Jason

    Seems like I hit a raw nerve there!

  • jmiller

    Haacked,

    Oh, they’re somewhat different. I think any of the main tools are going to give you what you most likely would want. StructureMap and Spring.Net are rough equivalents with plenty of unique features. Just off the top of my head Spring has AoP, but StructureMap has a bunch of configuration management support. Castle is more like PicoContainer (but I think Castle is implemented better) from the Java world that enables you to completely divorce yourself from any configuration if you so choose. I think StructureMap has much stronger support for auto-wiring than Spring, but maybe I just don’t know how to do it in Spring.

    I don’t think there’s any value in rolling StructureMap into one of the other tools. I don’t know about Spring, but I think you could add some of the additional functionality of StructureMap on top of Castle. Then again, if anybody thought that it was useful it would already be there anyway.

  • http://haacked.com/ Haacked

    Is StructureMap significantly different from the other container frameworks? Have you considered trying to roll it into the others? Just curious.