<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Micro-rant: Ninject and IKernel</title>
	<atom:link href="http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/</link>
	<description>Life, .NET, and Cats</description>
	<lastBuildDate>Wed, 10 Mar 2010 13:53:57 -0800</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Joe</title>
		<link>http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/comment-page-1/#comment-58686</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Sat, 11 Jul 2009 02:51:32 +0000</pubDate>
		<guid isPermaLink="false">http://blog.excastle.com/?p=2866#comment-58686</guid>
		<description>Anthony: I&#039;m not sure what good that&#039;s supposed to do me, since the Ninject classes don&#039;t implement IContainer.</description>
		<content:encoded><![CDATA[<p>Anthony: I&#8217;m not sure what good that&#8217;s supposed to do me, since the Ninject classes don&#8217;t implement IContainer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe</title>
		<link>http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/comment-page-1/#comment-58671</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Fri, 10 Jul 2009 23:12:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.excastle.com/?p=2866#comment-58671</guid>
		<description>P.S. The kernel may be the central point of Ninject, but it&#039;s sure not the central point of my app, so it makes no sense for &lt;em&gt;me&lt;/em&gt; to refer to it as a &quot;kernel&quot;. :-)</description>
		<content:encoded><![CDATA[<p>P.S. The kernel may be the central point of Ninject, but it&#8217;s sure not the central point of my app, so it makes no sense for <em>me</em> to refer to it as a &#8220;kernel&#8221;. <img src='http://blog.excastle.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joe</title>
		<link>http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/comment-page-1/#comment-58670</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Fri, 10 Jul 2009 23:11:51 +0000</pubDate>
		<guid isPermaLink="false">http://blog.excastle.com/?p=2866#comment-58670</guid>
		<description>Nate:

First, you make a good point about the &quot;container&quot; name. I was thinking of it as a container because that&#039;s what we built for our homegrown Delphi service locator (ours is basically a hashtable, so it really &lt;em&gt;is&lt;/em&gt; a container). I&#039;m still getting a handle on how IoC differs from that. One could make the case that the dependency injector does sort of contain the Singleton instances (something&#039;s got to hold onto the references so it can return the same one again) -- but that&#039;s just as much an implementation detail as &quot;kernel&quot;, so you&#039;re right, &quot;container&quot; is a bad name. Sometimes it&#039;s a factory, but again, implementation detail. &quot;Provider&quot; might be a good alternative that describes how it&#039;s actually used, without being tied to implementation. Or just &quot;dependency injector&quot;, when it&#039;s being used to get a concrete class.

Second, I&#039;ve heard the &quot;nobody needs the [container/kernel/provider] after startup&quot; party line before, and I just don&#039;t buy it. That could work for tiny apps that are a single window with a single ViewModel, but as soon as you get more complicated than that, you need more than startup-time injection. As soon as you switch to another screen that does a different kind of analysis, you&#039;re going to need to spin up a new View with a new ViewModel and even a new Model behind it, and they&#039;re going to need dependencies injected into them somehow. The dependency injector is designed to do exactly that, so I don&#039;t get why everybody says you shouldn&#039;t use it after app startup.</description>
		<content:encoded><![CDATA[<p>Nate:</p>
<p>First, you make a good point about the &#8220;container&#8221; name. I was thinking of it as a container because that&#8217;s what we built for our homegrown Delphi service locator (ours is basically a hashtable, so it really <em>is</em> a container). I&#8217;m still getting a handle on how IoC differs from that. One could make the case that the dependency injector does sort of contain the Singleton instances (something&#8217;s got to hold onto the references so it can return the same one again) &#8212; but that&#8217;s just as much an implementation detail as &#8220;kernel&#8221;, so you&#8217;re right, &#8220;container&#8221; is a bad name. Sometimes it&#8217;s a factory, but again, implementation detail. &#8220;Provider&#8221; might be a good alternative that describes how it&#8217;s actually used, without being tied to implementation. Or just &#8220;dependency injector&#8221;, when it&#8217;s being used to get a concrete class.</p>
<p>Second, I&#8217;ve heard the &#8220;nobody needs the [container/kernel/provider] after startup&#8221; party line before, and I just don&#8217;t buy it. That could work for tiny apps that are a single window with a single ViewModel, but as soon as you get more complicated than that, you need more than startup-time injection. As soon as you switch to another screen that does a different kind of analysis, you&#8217;re going to need to spin up a new View with a new ViewModel and even a new Model behind it, and they&#8217;re going to need dependencies injected into them somehow. The dependency injector is designed to do exactly that, so I don&#8217;t get why everybody says you shouldn&#8217;t use it after app startup.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: anthony</title>
		<link>http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/comment-page-1/#comment-58480</link>
		<dc:creator>anthony</dc:creator>
		<pubDate>Thu, 09 Jul 2009 03:33:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.excastle.com/?p=2866#comment-58480</guid>
		<description>&lt;code&gt;interface IContainer : IKernel
{

}&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p><code>interface IContainer : IKernel<br />
{</p>
<p>}</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh</title>
		<link>http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/comment-page-1/#comment-58476</link>
		<dc:creator>Josh</dc:creator>
		<pubDate>Thu, 09 Jul 2009 03:17:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.excastle.com/?p=2866#comment-58476</guid>
		<description>Pointless rant?</description>
		<content:encoded><![CDATA[<p>Pointless rant?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh</title>
		<link>http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/comment-page-1/#comment-58475</link>
		<dc:creator>Josh</dc:creator>
		<pubDate>Thu, 09 Jul 2009 03:17:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.excastle.com/?p=2866#comment-58475</guid>
		<description>Pointless rant?</description>
		<content:encoded><![CDATA[<p>Pointless rant?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Kohari</title>
		<link>http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/comment-page-1/#comment-58473</link>
		<dc:creator>Nate Kohari</dc:creator>
		<pubDate>Thu, 09 Jul 2009 03:13:39 +0000</pubDate>
		<guid isPermaLink="false">http://blog.excastle.com/?p=2866#comment-58473</guid>
		<description>Sorry you feel that way, Joe. ;)

Ninject inherits the term &quot;kernel&quot; from Windsor, which was one of the DI frameworks I used before writing Ninject. In contrast with you, I absolutely despise the phrase &quot;inversion of control container&quot;. In Ninject, the kernel doesn&#039;t &lt;em&gt;contain&lt;/em&gt; anything. It is the central point of access, but delegates everything to something else. As the &lt;em&gt;central point of operation&lt;/em&gt; for Ninject -- and therefore basically heart of an application based on Ninject, I believe &quot;kernel&quot; is a proper term. Maybe IPuppeteer? :)

Incidentally, if you&#039;re interacting with the kernel directly often, you may want to rethink your design. Applications written with DI in mind should rarely touch the kernel itself, instead receiving dependencies through chains of activation whenever possible. In reality, the kernel should be your application&#039;s Godfather, pulling the strings behind the scenes.</description>
		<content:encoded><![CDATA[<p>Sorry you feel that way, Joe. <img src='http://blog.excastle.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ninject inherits the term &#8220;kernel&#8221; from Windsor, which was one of the DI frameworks I used before writing Ninject. In contrast with you, I absolutely despise the phrase &#8220;inversion of control container&#8221;. In Ninject, the kernel doesn&#8217;t <em>contain</em> anything. It is the central point of access, but delegates everything to something else. As the <em>central point of operation</em> for Ninject &#8212; and therefore basically heart of an application based on Ninject, I believe &#8220;kernel&#8221; is a proper term. Maybe IPuppeteer? <img src='http://blog.excastle.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Incidentally, if you&#8217;re interacting with the kernel directly often, you may want to rethink your design. Applications written with DI in mind should rarely touch the kernel itself, instead receiving dependencies through chains of activation whenever possible. In reality, the kernel should be your application&#8217;s Godfather, pulling the strings behind the scenes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dew Drop &#8211; July 8, 2009 &#124; Alvin Ashcraft's Morning Dew</title>
		<link>http://blog.excastle.com/2009/07/07/micro-rant-ninject-and-ikernel/comment-page-1/#comment-58404</link>
		<dc:creator>Dew Drop &#8211; July 8, 2009 &#124; Alvin Ashcraft's Morning Dew</dc:creator>
		<pubDate>Wed, 08 Jul 2009 14:55:38 +0000</pubDate>
		<guid isPermaLink="false">http://blog.excastle.com/?p=2866#comment-58404</guid>
		<description>[...] Micro-rant: Ninject and IKernel (Joe White) [...]</description>
		<content:encoded><![CDATA[<p>[...] Micro-rant: Ninject and IKernel (Joe White) [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
