<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Coming Up For Air</title>
	<atom:link href="http://kohari.org/2007/09/24/coming-up-for-air/feed/" rel="self" type="application/rss+xml" />
	<link>http://kohari.org/2007/09/24/coming-up-for-air/</link>
	<description>Rambling and occasional wisdom from Nate Kohari</description>
	<lastBuildDate>Thu, 21 Jul 2011 13:50:18 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Nicholas Blumhardt</title>
		<link>http://kohari.org/2007/09/24/coming-up-for-air/#comment-79</link>
		<dc:creator><![CDATA[Nicholas Blumhardt]]></dc:creator>
		<pubDate>Sun, 18 Nov 2007 09:01:56 +0000</pubDate>
		<guid isPermaLink="false">http://kohari.org/2007/09/24/coming-up-for-air/#comment-79</guid>
		<description><![CDATA[Nate, guess that is a fair stumbling block :) As you&#039;ve pointed out, most of the decision to use one container over another revolves around the API.

Modules might play a big part in some people&#039;s decisions - e.g. if I&#039;m using NHibernate then a pre-built NHibernate module will make a particular container more attractive.

99% of registrations in any container will be (name, type, service, lifecycle) - perhaps a common adapter onto a minimal subset of each container API would be enough that we could write many modules in a container-agnostic fashion?

I can see a stumbling-block or two (or three) here of course, but it would be really neat to be able to use a single module implementation on Ninject, Windsor, or whatever. I&#039;m probably dreaming big-time :)

Sounds like a really interesting project you&#039;re working on, BTW.]]></description>
		<content:encoded><![CDATA[<p>Nate, guess that is a fair stumbling block <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  As you&#8217;ve pointed out, most of the decision to use one container over another revolves around the API.</p>
<p>Modules might play a big part in some people&#8217;s decisions &#8211; e.g. if I&#8217;m using NHibernate then a pre-built NHibernate module will make a particular container more attractive.</p>
<p>99% of registrations in any container will be (name, type, service, lifecycle) &#8211; perhaps a common adapter onto a minimal subset of each container API would be enough that we could write many modules in a container-agnostic fashion?</p>
<p>I can see a stumbling-block or two (or three) here of course, but it would be really neat to be able to use a single module implementation on Ninject, Windsor, or whatever. I&#8217;m probably dreaming big-time <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Sounds like a really interesting project you&#8217;re working on, BTW.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Kohari</title>
		<link>http://kohari.org/2007/09/24/coming-up-for-air/#comment-78</link>
		<dc:creator><![CDATA[Nate Kohari]]></dc:creator>
		<pubDate>Mon, 12 Nov 2007 12:09:30 +0000</pubDate>
		<guid isPermaLink="false">http://kohari.org/2007/09/24/coming-up-for-air/#comment-78</guid>
		<description><![CDATA[@Nicholas: The code that supports injection and lifecycle is pretty much the same throughout all of the DI frameworks -- because there&#039;s not a whole lot of different ways to write it. The main difference between the frameworks is the API.

Ninject&#039;s API is vastly different than the other containers... not because it uses a fluent interface, but because it&#039;s geared around the idea of evaluating conditions based on context rather than just key associations. This, of course, has benefits and detriments, and isn&#039;t perfect for all situations. It&#039;s more expensive to evaluate conditions than it is to look up component keys like Windsor or Spring does. However, it lets you come up with some pretty exotic binding situations.

I think that a standard container will only happen if Microsoft creates one themselves. That&#039;s not to say that they will create the One Container To Rule Them All, but (as I think we&#039;ll see with the upcoming ASP.NET MVC framework) when Microsoft throws its weight behind an idea, it becomes mainstreamed much faster than if it&#039;s just the OSS community.]]></description>
		<content:encoded><![CDATA[<p>@Nicholas: The code that supports injection and lifecycle is pretty much the same throughout all of the DI frameworks &#8212; because there&#8217;s not a whole lot of different ways to write it. The main difference between the frameworks is the API.</p>
<p>Ninject&#8217;s API is vastly different than the other containers&#8230; not because it uses a fluent interface, but because it&#8217;s geared around the idea of evaluating conditions based on context rather than just key associations. This, of course, has benefits and detriments, and isn&#8217;t perfect for all situations. It&#8217;s more expensive to evaluate conditions than it is to look up component keys like Windsor or Spring does. However, it lets you come up with some pretty exotic binding situations.</p>
<p>I think that a standard container will only happen if Microsoft creates one themselves. That&#8217;s not to say that they will create the One Container To Rule Them All, but (as I think we&#8217;ll see with the upcoming ASP.NET MVC framework) when Microsoft throws its weight behind an idea, it becomes mainstreamed much faster than if it&#8217;s just the OSS community.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nicholas Blumhardt</title>
		<link>http://kohari.org/2007/09/24/coming-up-for-air/#comment-77</link>
		<dc:creator><![CDATA[Nicholas Blumhardt]]></dc:creator>
		<pubDate>Mon, 12 Nov 2007 10:36:36 +0000</pubDate>
		<guid isPermaLink="false">http://kohari.org/2007/09/24/coming-up-for-air/#comment-77</guid>
		<description><![CDATA[@ShaunC, if you dig into Ninject you&#039;ll find it is quite different to Windsor. Windsor is great but the open source culture thrives on diversity.

container.Bind().To();

.. is easier on my eyes (and wrists.) By the gradual accumulation improvements we move on. In five years, will we all be using Windsor? I never thought it would happen, but no sooner has Subversion reached mass acceptance than we&#039;re moving on to Git/Darcs/Mercurial/Bzr....

Nate, do you think it is possible a &#039;standard&#039; container configuration API will emerge the way JPA did? Perhaps something like that would turn into a lowest-common-denominator approach. It couldn&#039;t hurt to have a standard API for the commonest scenarios like the one above though......??]]></description>
		<content:encoded><![CDATA[<p>@ShaunC, if you dig into Ninject you&#8217;ll find it is quite different to Windsor. Windsor is great but the open source culture thrives on diversity.</p>
<p>container.Bind().To();</p>
<p>.. is easier on my eyes (and wrists.) By the gradual accumulation improvements we move on. In five years, will we all be using Windsor? I never thought it would happen, but no sooner has Subversion reached mass acceptance than we&#8217;re moving on to Git/Darcs/Mercurial/Bzr&#8230;.</p>
<p>Nate, do you think it is possible a &#8216;standard&#8217; container configuration API will emerge the way JPA did? Perhaps something like that would turn into a lowest-common-denominator approach. It couldn&#8217;t hurt to have a standard API for the commonest scenarios like the one above though&#8230;&#8230;??</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ShaunC</title>
		<link>http://kohari.org/2007/09/24/coming-up-for-air/#comment-82</link>
		<dc:creator><![CDATA[ShaunC]]></dc:creator>
		<pubDate>Wed, 03 Oct 2007 16:34:16 +0000</pubDate>
		<guid isPermaLink="false">http://kohari.org/2007/09/24/coming-up-for-air/#comment-82</guid>
		<description><![CDATA[But, you don&#039;t have to use an XML config file.

 container.AddComponent(typeof(TImplementation).FullName, typeof(TService), typeof(TImplementation))

also the footprint required is very small (as far as managed apps go anyhow).]]></description>
		<content:encoded><![CDATA[<p>But, you don&#8217;t have to use an XML config file.</p>
<p> container.AddComponent(typeof(TImplementation).FullName, typeof(TService), typeof(TImplementation))</p>
<p>also the footprint required is very small (as far as managed apps go anyhow).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Kohari</title>
		<link>http://kohari.org/2007/09/24/coming-up-for-air/#comment-81</link>
		<dc:creator><![CDATA[Nate Kohari]]></dc:creator>
		<pubDate>Thu, 27 Sep 2007 15:22:40 +0000</pubDate>
		<guid isPermaLink="false">http://kohari.org/2007/09/24/coming-up-for-air/#comment-81</guid>
		<description><![CDATA[The Castle Project is great, and Windsor is one of the best IoC solutions out there, particularly for large, enterprise projects. I use MonoRail and ActiveRecord in my own work.
However, I believe Windsor&#039;s reliance on XML for configuration is a major weakness. Through its fluent interface, Ninject lets you take advantage of your language (type-safety) and your IDE (code completion).
Windsor is also pretty sizable. If you&#039;re writing a large application, that&#039;s not a problem, but I believe inversion of control can be applied to projects of all sizes. Ninject was created specifically to be small, fast, and simple. (In fact, I have a version that I use on the compact framework.)
Windsor does have a lot of nice integration points, but they&#039;re largely due to the maturity of the project. Ninject is very young, but is built to be extensible as well. I&#039;m writing integrations as I need them. (In fact, there&#039;s an extension to integrate with Castle MonoRail. :)
In the end, Ninject and Windsor just attack the same problem from different angles. Comparisons between the two are often apples-to-oranges... they both have strengths and weaknesses. It&#039;s also largely a matter of taste. I would never say &quot;don&#039;t use Windsor&quot; -- but I would say give Ninject a shot.]]></description>
		<content:encoded><![CDATA[<p>The Castle Project is great, and Windsor is one of the best IoC solutions out there, particularly for large, enterprise projects. I use MonoRail and ActiveRecord in my own work.<br />
However, I believe Windsor&#8217;s reliance on XML for configuration is a major weakness. Through its fluent interface, Ninject lets you take advantage of your language (type-safety) and your IDE (code completion).<br />
Windsor is also pretty sizable. If you&#8217;re writing a large application, that&#8217;s not a problem, but I believe inversion of control can be applied to projects of all sizes. Ninject was created specifically to be small, fast, and simple. (In fact, I have a version that I use on the compact framework.)<br />
Windsor does have a lot of nice integration points, but they&#8217;re largely due to the maturity of the project. Ninject is very young, but is built to be extensible as well. I&#8217;m writing integrations as I need them. (In fact, there&#8217;s an extension to integrate with Castle MonoRail. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
In the end, Ninject and Windsor just attack the same problem from different angles. Comparisons between the two are often apples-to-oranges&#8230; they both have strengths and weaknesses. It&#8217;s also largely a matter of taste. I would never say &#8220;don&#8217;t use Windsor&#8221; &#8212; but I would say give Ninject a shot.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ShaunC</title>
		<link>http://kohari.org/2007/09/24/coming-up-for-air/#comment-80</link>
		<dc:creator><![CDATA[ShaunC]]></dc:creator>
		<pubDate>Thu, 27 Sep 2007 14:52:31 +0000</pubDate>
		<guid isPermaLink="false">http://kohari.org/2007/09/24/coming-up-for-air/#comment-80</guid>
		<description><![CDATA[Not sure why you invented ninject - Castle Windsor/Microkernel does the job and the amount of facilities it has are really good - supporting threading issues with UI for one. We have recently adopted it and we are amazed about what we get for free   plus it&#039;s well supported - less to fix in your own app.]]></description>
		<content:encoded><![CDATA[<p>Not sure why you invented ninject &#8211; Castle Windsor/Microkernel does the job and the amount of facilities it has are really good &#8211; supporting threading issues with UI for one. We have recently adopted it and we are amazed about what we get for free   plus it&#8217;s well supported &#8211; less to fix in your own app.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

