views:

446

answers:

6

I've used Spring and Spring.NET quite a bit, but I would like to see what else is out there. Can anyone recommend a good Java or .NET framework that I could try to learn?

+3  A: 

Here is a list of IoC containers from the good Mr. Hanselman...

Dave Swersky
Thanks. I like Autofac and Ninject.
Scott Hanselman
+4  A: 

On the .Net side, Ninject is probably the most interesting, on the Java side, I would say check out Google Guice. That being said, DI is DI, and they all more or less do the same thing. The differences are mostly in how they are configured.

Matt Briggs
+2  A: 

Google Guice is very good - unless you really need it, there are no .xml configuration files - everything is done via annotations, and in an ideal world you can avoid setter methods, injecting your dependencies via the constructor.

Rich
+4  A: 

Castle Windsor is very popular, you could do worse than learn that.

Ian Nelson
Agreed. It's very mature and feature rich, and at the same time it managed to stay surprisingly non-bloated. IMHO the best tool for the job.
Krzysztof Koźmic
A: 

I'd suggest JBoss Seam. It has a very different dependency injection model than Spring. Seam's DI is bidirectional and able to inject values at every stage in an object's life (not just during initialization).

It's certainly not a good for for everything, but if your looking to try different things in DI, this is interesting.

Look at Seam's home page.

Paul
A: 

So in the wide world of software you feel the need to learn what is 'assumed plumbing' rather than expand your base? You just use IoC. It's not even optional for anyone serious. This is going on like a decade now.

Go master Functional Programming in say F#. Master the new IObserver and related work coming in .NET 4.0 as the conceptual pairing to IEnumerable. Write a domain specific language for your domain of choice. Create New abstractions, don't simply relearn old ones.