April 17, 2009

IoC != Resolve<>()

Thanks to Lars Corneliussen, I just ran across the new Horn Package Manager, promising a Maven-like automatic resolution of package dependencies to allow you building a whole OSS stack from scratch.

Not directly related to horn, but on horn architecture introduction I read:


Talking about Inversion of Control and showing a ServiceLocator - even worse: a static one (!) - piece of code always makes me very nervous. Imho SL is one of the worst patterns ever because it claims to be IoC, but still couples your code to the container - or at least the SL. I always wondered, why People keep asking for extended ServiceLocator-style support in Spring.NET - such bad examples are one of the major reasons I guess.

There has also been quite some talk about CommonServiceLocator as a means to make the container interchangable. Mark Pollack, Ayende and others (like Rinat Abdullin)  posted statements what CommonServiceLocator is for and what it is not.

Dear developers out there: IoC is about removing dependencies from your code, not replacing them with new ones!

P.S: NTL, horn sounds interesting and I will definitely check it out ;-)