Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why use IKernel over IWindsorContainer?

I have seen in several code examples where people have used IKernel rather than use IWindsorContainer. Why is this?

Here is one example: http://docs.castleproject.org/(S(kwaa14uzdj55gv55dzgf0vui))/Windsor.Windsor-tutorial-part-two-plugging-Windsor-in.ashx

In the above example it came to bite me because I added a subresolver

Container.Kernel.Resolver.AddSubResolver(
        new CollectionResolver(Container.Kernel, true));

that will allow me to inject collections... but yet it wasnt working. I figured out that because just the IKernel was being used it couldnt use the full features of Windsor. Why would someone ever want to use the Kernel over the full container? I think if you are going to implement Windsor, use the full container. Am I wrong? Why?

like image 247
CrazyDart Avatar asked Jul 22 '11 20:07

CrazyDart


1 Answers

There are historical reasons for that. Originally Castle project had two containers: MicroKernel (IKernel) which provided all the base functionality and extension points, and Windsor IWindsorContainer which was a wrapper around MicroKernel providing additional features (like XML configuration, proxies etc) and was wrapping the MicroKernel.

Those were later (in v2.5) merged into a single project/assembly but to avoid breaking existing users the distinction was kept.

like image 178
Krzysztof Kozmic Avatar answered Nov 10 '22 02:11

Krzysztof Kozmic