<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>Хабрахабр / Комментарии к посту «DI и IoC для начинающих» в блоге «.NET»</title>
	<link>http://habrahabr.ru/rss/post/62830/</link>
	<description><![CDATA[Новые комментарии к посту «DI и IoC для начинающих» в блоге «.NET»]]></description>
	<language>ru</language>
	<managingEditor>editor@habrahabr.ru</managingEditor>
	<generator>habrahabr.ru</generator>
	<pubDate>Sat, 11 Feb 2012 12:28:49 GMT</pubDate>
	<lastBuildDate></lastBuildDate>
	<image>
		<link>http://habrahabr.ru/</link>
		<url>http://habrahabr.ru/i/logo.gif</url>
		<title>Хабрахабр</title>
	</image>
	

	
	
	
	
	
		
	
		<item>
			<title>02.07.2009 14:27:12 acerv</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1760496</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1760496</link>
			<description><![CDATA[&gt;Вопрос такой, в какой системе IoC контейнер может быть полезен при разработке бизнес приложений и на бою?<br/>
<br/>
самое простое решение — архитектура черных ящиков, или «черных слоев», когда при пуске приложения контейнер проходит по всем слоям и регистрирует задаваемые слоями реализации. При этом в сборке реализацию можно скрыть от лишних глаз, т.е. добиться полной инкапсуляции в слое. А это очень круто.<br/>
<br/>
&gt;Чем IoC лучше?<br/>
Да ничем он не лучше. Это просто паттерн автоматического определения зависимостей. Он есть в контейнере Unity. Контейнер Юнити описывается автором только потому, что это типа «модное и современное» решение, хотя, судя по ответам на технические вопросы, автор только-только что-то прочитал. IoC можно вообще убрать, написав свой контейнер или взяв простой существующий. System.ComponentModel.Design.ServiceContainer, например (хотя, если вы джавист, то это вам ничего не скажет). <br/>
<br/>
Фишка удобства тестирования не выходит из концепции Unity, а выходит из концепции построения классов, которые удовлетворяют шаблону определения зависимостей. Ты должен или проставить зависимость в конструкторе или в свойстве класса, причем, желательно определив интерфейс. Значит, очень легко настроить mock зависимостей (мок интерфейса очень легко сделать) и протестировать фукнционал класса. Unity контейнер здесь не причем. Он всего лишь вставляет зависимости. <br/>
<br/>
]]></description>
			<pubDate>Thu, 02 Jul 2009 14:27:12 GMT</pubDate>
			<author>acerv</author>
		</item>
	

	
		<item>
			<title>27.06.2009 16:13:23 keith</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1746360</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1746360</link>
			<description><![CDATA[Можно конфигурировать содержимое IoC контейнера Spring.NET и в коде и даже в стиле Fluent.]]></description>
			<pubDate>Sat, 27 Jun 2009 16:13:23 GMT</pubDate>
			<author>keith</author>
		</item>
	

	
		<item>
			<title>26.06.2009 21:22:35 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1745210</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1745210</link>
			<description><![CDATA[Итак, какие у нас выводы? Unity, судя по всему, на порядок проще Spring и намного лучше подходит для обучения, имхо. Автопроксиинг всех объектов контейнера — зачем? Когда это действительно нужно? =)]]></description>
			<pubDate>Fri, 26 Jun 2009 21:22:35 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>26.06.2009 15:18:41 LunarFrog</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1744499</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1744499</link>
			<description><![CDATA[Есть, и с MEF и с MVC и просто c ASP.NET]]></description>
			<pubDate>Fri, 26 Jun 2009 15:18:41 GMT</pubDate>
			<author>LunarFrog</author>
		</item>
	

	
		<item>
			<title>26.06.2009 14:29:32 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1744369</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1744369</link>
			<description><![CDATA[Кстати да, как раз две темы которые, как мне кажется, стоит осветить (хотя в других блогах они есть) — это поддержка asp.net mvc и wpf (хотя постойте, у autofac с mef тоже интеграция есть что ли?). Другое дело что поскольку эта инфа уже есть где-то еще, не уверен что ее стоит пеперисывать. Может и стоит, ради того чтобы она была понятней.]]></description>
			<pubDate>Fri, 26 Jun 2009 14:29:32 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>26.06.2009 14:26:29 LunarFrog</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1744365</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1744365</link>
			<description><![CDATA[Я подумал… Я ее переделаю, расширю и выложу как несколько статей. В том числе и про использование Ninject совмесно с ASP.NET MVC.]]></description>
			<pubDate>Fri, 26 Jun 2009 14:26:29 GMT</pubDate>
			<author>LunarFrog</author>
		</item>
	

	
		<item>
			<title>26.06.2009 14:21:53 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1744358</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1744358</link>
			<description><![CDATA[На презентацию бы глянул :)]]></description>
			<pubDate>Fri, 26 Jun 2009 14:21:53 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>26.06.2009 14:20:22 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1744349</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1744349</link>
			<description><![CDATA[Ха! Ошибся. Не знаю что в голову ударило… конечно дефолтное поведение не синглтон :) Сорри!]]></description>
			<pubDate>Fri, 26 Jun 2009 14:20:22 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>25.06.2009 16:24:38 xibyte</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1741736</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1741736</link>
			<description><![CDATA[Это по сути и есть фабрика. В spring прямо так и называется BeanFactory. Т.е. BeanFactory и является IOC контейнером.<br/>
<br/>
BeanFactory factory = new XmlBeanFactory(«beans.xml»);<br/>
]]></description>
			<pubDate>Thu, 25 Jun 2009 16:24:38 GMT</pubDate>
			<author>xibyte</author>
		</item>
	

	
		<item>
			<title>25.06.2009 14:43:54 micbsv</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1741540</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1741540</link>
			<description><![CDATA[&gt;Ни одного реального, а главное уместного примера применения IoC контейнеров в бизнес приложениях пока не встречал…<br/>
<br/>
Давайте я дам конкретный пример.<br/>
У меня есть модуль–блог. Данные храню на своем сервере. Пришел заказчик, сказал, что у него уже есть блог на Google Blogger'e. Поскольку у меня был легкий сервис, отделенный от всей логики, который только и делал, что писал и читал в/из базы, я заменил его другим, который стал писать и читать в/из сервисов Google Blogger.<br/>
<br/>
Применив Unity, я заменил только тонкий сервис, не трогав ничего остального и не переписывая тесты главной логики.<br/>
<br/>
Если завтра придет другой чувак и попросит использовать другой движок – сделать это будет легко, и самое главное – у меня не будет болеть голова, что я что–то сломаю. Тесты проходят на главную логику, отдельные на сервис – значит все в порядке.]]></description>
			<pubDate>Thu, 25 Jun 2009 14:43:54 GMT</pubDate>
			<author>micbsv</author>
		</item>
	

	
		<item>
			<title>25.06.2009 13:05:50 alexzzam</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1741293</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1741293</link>
			<description><![CDATA[У меня дурацкий вопрос.<br/>
Если абстрагироваться от всяческих фреймворков и .NET… Правильно же, что IoC это такой хитрый контейнер, который может отдать объект по классу. А если он ещё и отслеживает зависимости и удовлетворяет их, то тут ещё и DI.<br/>
Так вот вопрос: если всё это так, то чем IoC-контейнер отличается от фабрики?]]></description>
			<pubDate>Thu, 25 Jun 2009 13:05:50 GMT</pubDate>
			<author>alexzzam</author>
		</item>
	

	
		<item>
			<title>25.06.2009 08:34:52 Qbit</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1740292</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1740292</link>
			<description><![CDATA[Предлагаю заглянуть в блог одного моего товарища: <a href="http://gandjustas.blogspot.com">gandjustas.blogspot.com</a> . Там есть толковые посты по теме, найти их можно по тегам «UNITY», «IOC-КОНТЕЙНЕР».]]></description>
			<pubDate>Thu, 25 Jun 2009 08:34:52 GMT</pubDate>
			<author>Qbit</author>
		</item>
	

	
		<item>
			<title>25.06.2009 07:09:13 porchini</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1740027</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1740027</link>
			<description><![CDATA[у нас в огромном проекте используется spring именно для IoC.<br/>
позволяет переконфигурировать приложение без перекомпиляции. Модули (jar'ки) добавляются, удалятся, заменяются, переопределяя друг друга — в итоге получаем нужную конфигурацию для конкретного деплоймента.]]></description>
			<pubDate>Thu, 25 Jun 2009 07:09:13 GMT</pubDate>
			<author>porchini</author>
		</item>
	

	
		<item>
			<title>25.06.2009 05:39:44 xibyte</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739843</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739843</link>
			<description><![CDATA[Я не согласен с Вами насчет юнит тестирования.<br/>
<br/>
Одна из идей IOC в том, чтобы собрать независимые модули системы вместе. А идея юнит тестирования чтобы эти независимые модули протестировать. Так что IOC и юнит тестирование тесно связаны и всегда используются вместе. ]]></description>
			<pubDate>Thu, 25 Jun 2009 05:39:44 GMT</pubDate>
			<author>xibyte</author>
		</item>
	

	
		<item>
			<title>25.06.2009 05:24:23 ostapbender</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739806</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739806</link>
			<description><![CDATA[Service Provider — это совсем не Dependency Injection.]]></description>
			<pubDate>Thu, 25 Jun 2009 05:24:23 GMT</pubDate>
			<author>ostapbender</author>
		</item>
	

	
		<item>
			<title>25.06.2009 02:41:25 paradoxs</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739688</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739688</link>
			<description><![CDATA[Кстати говоря, есть отличный майкрософтовский фреймворк, использующий паттерны DI и IoC. Называется Smart Client Software Factory (SCSF). Мы его юзаем в нашем проекте. Все довольны. А для Java, как уже было сказано выше существует Spring Framework.]]></description>
			<pubDate>Thu, 25 Jun 2009 02:41:25 GMT</pubDate>
			<author>paradoxs</author>
		</item>
	

	
		<item>
			<title>25.06.2009 01:36:18 beq</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739660</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739660</link>
			<description><![CDATA[<a href="http://habrahabr.ru/blogs/net/62830/#comment_1739659">habrahabr.ru/blogs/net/62830/#comment_1739659</a>]]></description>
			<pubDate>Thu, 25 Jun 2009 01:36:18 GMT</pubDate>
			<author>beq</author>
		</item>
	

	
		<item>
			<title>25.06.2009 01:35:58 beq</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739659</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739659</link>
			<description><![CDATA[Незнаю как в версии для .NET, но в версии для Java Spring уже давно поддерживает конфигурацию аннотациями.]]></description>
			<pubDate>Thu, 25 Jun 2009 01:35:58 GMT</pubDate>
			<author>beq</author>
		</item>
	

	
		<item>
			<title>25.06.2009 00:32:58 Qbit</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739637</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739637</link>
			<description><![CDATA[Категорически нужна.]]></description>
			<pubDate>Thu, 25 Jun 2009 00:32:58 GMT</pubDate>
			<author>Qbit</author>
		</item>
	

	
		<item>
			<title>24.06.2009 23:24:54 ashmind</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739593</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739593</link>
			<description><![CDATA[Если я правильно понимаю, ServiceContainer требует чтобы все объекты были созданы заранее, или явно создавились через callback.<br/>
Тогда непонятно в чём бонус.<br/>
<br/>
А разве можно написать хоть немного сложное приложение без использования сторонних фреймворков?]]></description>
			<pubDate>Wed, 24 Jun 2009 23:24:54 GMT</pubDate>
			<author>ashmind</author>
		</item>
	

	
		<item>
			<title>24.06.2009 22:05:10 muse</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739513</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739513</link>
			<description><![CDATA[* сделано — имелась в виду реализация ServiceContainer из System.ComponentModel.Design]]></description>
			<pubDate>Wed, 24 Jun 2009 22:05:10 GMT</pubDate>
			<author>muse</author>
		</item>
	

	
		<item>
			<title>24.06.2009 21:23:54 muse</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739446</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739446</link>
			<description><![CDATA[Хм. Чем вам не угодил IServiceProvider и IServiceContainer из 2.0? Использование новых версий C# это раз, использование стороннего фреймфорка — два. Когда можно сделать (а в этом случае уже сделано) проще, то зачем платить больше?]]></description>
			<pubDate>Wed, 24 Jun 2009 21:23:54 GMT</pubDate>
			<author>muse</author>
		</item>
	

	
		<item>
			<title>24.06.2009 20:17:22 andycaramba</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739306</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739306</link>
			<description><![CDATA[Мне это было бы очень интересно. Думаю я не один такой.]]></description>
			<pubDate>Wed, 24 Jun 2009 20:17:22 GMT</pubDate>
			<author>andycaramba</author>
		</item>
	

	
		<item>
			<title>24.06.2009 20:07:50 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739293</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739293</link>
			<description><![CDATA[Обязательно — возможно в следующем посте.]]></description>
			<pubDate>Wed, 24 Jun 2009 20:07:50 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:43:24 ashmind</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739257</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739257</link>
			<description><![CDATA[Спринг плох XML-настройкой, в большом приложении это просто лишняя работа как при разработке так и при поддержке.<br/>
<br/>
Если в бизнес приложении никогда нет необходимости в автоматическом IService[], то это не слишком удачная архитектура.<br/>
Фабрики надо писать и поддерживать, хороший контейнер — не надо (XML ни разу не использовал, зачем).<br/>
<br/>
В юнит тестировании очень помогает automocking container, но это не столь важно. Важнее то, что когда классы спроектированны так, чтобы <i>все вспомогательные объекты можно было переопределить через свойства или конструктор</i>, то чтобы создать их в самом приложении можно:<br/>
a) либо написать много кода, который ссылается на все библиотеки приложения и требует поддержки<br/>
б) использовать IoC<br/>
<br/>
Я обычно выбираю пункт б).]]></description>
			<pubDate>Wed, 24 Jun 2009 19:43:24 GMT</pubDate>
			<author>ashmind</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:41:07 brainunit</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739253</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739253</link>
			<description><![CDATA[Около года назад тоже озадачились выбоорм IoC фреймворка. Выбрали Autofac. Кроме различных <a href="http://code.google.com/p/autofac">вкусностей</a>, понравилась его легковесность и простота конфигурации. Всё-таки Unity немного громоздок, посмотрите например на код его материализатора объектов.<br/>
<br/>
P.S. IoC используем для разработки линейки продуктов.]]></description>
			<pubDate>Wed, 24 Jun 2009 19:41:07 GMT</pubDate>
			<author>brainunit</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:41:03 LunarFrog</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739252</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739252</link>
			<description><![CDATA[Хорошие скринкасты с введением в IoC контейнеры Castle Windsor (наверное, самый сейчас популярный), Ninject и StructureMap. На английском.<br/>
<br/>
<a href="http://dimecasts.net/Casts/ByTag/IoC">dimecasts.net/Casts/ByTag/IoC</a>]]></description>
			<pubDate>Wed, 24 Jun 2009 19:41:03 GMT</pubDate>
			<author>LunarFrog</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:40:54 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739251</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739251</link>
			<description><![CDATA[Да, кстате, спасибо за обзор в вашем блоге.]]></description>
			<pubDate>Wed, 24 Jun 2009 19:40:54 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:39:57 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739248</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739248</link>
			<description><![CDATA[Это тоже, кстати, вариант.]]></description>
			<pubDate>Wed, 24 Jun 2009 19:39:57 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:39:24 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739246</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739246</link>
			<description><![CDATA[Тогда есть сразу несколько вариантов ответа :) Например использовать <a href="http://msdn.microsoft.com/en-us/library/dd203208.aspx">InjectorProperty</a>. Или добавлять marker interface для обоих сервисов. Или декларировать их как конкретные типы. Или задать им имена и резолвить вручную, по имени. (но это уже не DI)]]></description>
			<pubDate>Wed, 24 Jun 2009 19:39:24 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:36:01 ashmind</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739239</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739239</link>
			<description><![CDATA[Вопрос в том различаются эти обекты, или нет.<br/>
По логике, если они имплементируют один и тот же интерфейс, то и использование у них будет однородное.<br/>
<br/>
В таком случае параметр можно заменить на IService[] services и дальше работать со всеми имплементациями сразу.]]></description>
			<pubDate>Wed, 24 Jun 2009 19:36:01 GMT</pubDate>
			<author>ashmind</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:33:48 ashmind</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739234</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739234</link>
			<description><![CDATA[Я делал сравнение (на английском), будет интересно почитать что изменилось.]]></description>
			<pubDate>Wed, 24 Jun 2009 19:33:48 GMT</pubDate>
			<author>ashmind</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:16:46 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739202</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739202</link>
			<description><![CDATA[Да, для WPF тоже есть свои особенности. Было бы неплохо все это покрыть, но я не знаю, нужна ли хабру серия постов про Unity/DI/IoC.]]></description>
			<pubDate>Wed, 24 Jun 2009 19:16:46 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:15:24 gimalay</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739199</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739199</link>
			<description><![CDATA[Для тех кому нравятся скринкасты, и не пугает технический английский <br/>
<a href="http://www.dnrtv.com/default.aspx?showNum=126">James Kovacs' roll-your-own IoC container</a>. Более доходчивого описания IoC не всречал.]]></description>
			<pubDate>Wed, 24 Jun 2009 19:15:24 GMT</pubDate>
			<author>gimalay</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:02:33 just_vladimir</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739166</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739166</link>
			<description><![CDATA[Я так понимаю спрашивалась ситуация, когда будет:<br/>
<code>public class MyFirstServiceImpl : IService{}<br/>
public class MySecondServiceImpl : IService{}<br/>
</code>]]></description>
			<pubDate>Wed, 24 Jun 2009 19:02:33 GMT</pubDate>
			<author>just_vladimir</author>
		</item>
	

	
		<item>
			<title>24.06.2009 19:00:56 acerv</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739162</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739162</link>
			<description><![CDATA[А вот есть прикольная задачка уже не для начинающих — связать ASP.NET MVC с Unity. Требований в целом три:<br/>
<br/>
— обеспечить связывание инфраструктуры контроллеров MVC с инъектором<br/>
— модульность<br/>
— уникальность контейнера в разрезе сессии<br/>
<br/>
Я бы расписал все, но блин, не успеваю вообще ничего, кроме работы. А вам в рамках обучающих методик будет полезно, имхо.]]></description>
			<pubDate>Wed, 24 Jun 2009 19:00:56 GMT</pubDate>
			<author>acerv</author>
		</item>
	

	
		<item>
			<title>24.06.2009 18:44:59 LunarFrog</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739136</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739136</link>
			<description><![CDATA[Unity предоставляет возможность конфигурирования без XML файлов. Вся конфигурация выполняется средствами языка, что гораздо удобнее и надежнее. Тоже самое можно сказать про фреймворки Autofac и Ninject — последний мой любимый, им я и пользуюсь. Если кому то это интересно, у меня есть PowerPoint презентация про Ninject — могу выложить.<br/>
<br/>
DI столь же уместны как и фабрики. В случае с DI код получается «прозрачнее» — обычно нет необходимости явного требования объекта, создание необходимых экземпляров проходит за сценой. К тому же, проще сконфигурировать одно правило, чем добавить фабрику.<br/>
<br/>
Переопределение свойств в ручную — это хорошо, но когда у тебя сотня классов, создавать связи в ручную не очень интересно. <br/>
<br/>
Цель DI — избежать самокофигурирующихся объектов, т.к. это снижает возможность их повторного использования и тестирования.]]></description>
			<pubDate>Wed, 24 Jun 2009 18:44:59 GMT</pubDate>
			<author>LunarFrog</author>
		</item>
	

	
		<item>
			<title>24.06.2009 18:44:55 mezastel</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739135</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739135</link>
			<description><![CDATA[Другие контейнеры тоже хороши. Правда, насколько я помню, Spring поддерживает только конфигурацию в XML, что лично мне не нравится. Обычно происходит так: с чем разработчик начинает работаеть, то и использует. Разница во фреймворках редко переманивает его с одного на другого.<br/>
<br/>
Примеров актуального использования контейнеров в сети — миллион. Один из примеров — когда при неправильно работающем приложении нужно заменить обычную реализацию на динамический прокси с детальным логгированием. Без перекомпиляции. На живой системе. Тут-то внешняя конфигурация и спасает — меняем XML и все. А вообще примеров много, если долго пользовать, то потом не сможешь без этого жить.<br/>
<br/>
Насчет Unit-тестирования — допустим объект А зависит от В, а от — от С. С создается в В без моего ведома. А теперь вопрос — как я могу подменить тот объект, который создается без моего участия вообще? Правильно, я не могу — если только не начну вообще все цепочки создавать вручную, что просто нереально. С контейнером же, я могу подменить реализацию объекта, независимо от того, на какой он «глубине» находится.<br/>
<br/>
Тут я имел ввиду что если, например, для использования какого-то сервиса его нужно настраивать (к пр. передавать гору данных в конструктор), то легче это действие централизовать чтобы потом можно было эту конфигурацию менять централизованно. В тех же unit-тестах, например.]]></description>
			<pubDate>Wed, 24 Jun 2009 18:44:55 GMT</pubDate>
			<author>mezastel</author>
		</item>
	

	
		<item>
			<title>24.06.2009 18:12:15 Ordos</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739084</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739084</link>
			<description><![CDATA[Вы не могли бы к этому элементарному примеру ещё сделать такой же пример по юнит тестам, про которые упомянули.]]></description>
			<pubDate>Wed, 24 Jun 2009 18:12:15 GMT</pubDate>
			<author>Ordos</author>
		</item>
	

	
		<item>
			<title>24.06.2009 18:10:13 timafyozzi</title>
			<guid isPermaLink="true">http://habrahabr.ru/blogs/net/62830/#comment_1739079</guid>
			<link>http://habrahabr.ru/blogs/net/62830/#comment_1739079</link>
			<description><![CDATA[<b>Другие контейнеры</b><br/>
Несколько лет назад я прочитал ту самую статью Фаулера и загорелся. И стал я использовать Spring Framework. Отличная, надо сказать, библиотечка. Представляет очень функциональность по гибкую xml-настройке DI.<br/>
Чем данный IoC контейнер (Unity) лучше хотя бы того же Spring?<br/>
<br/>
<b>Про бой и бизнес приложения</b><br/>
Ни одного реального, а главное уместного примера применения IoC контейнеров в бизнес приложениях пока не встречал, обычно их используют ради технологического фетишизма или из особой любви к Фаулеру. <br/>
Все места, где использовался IoC, в моем рабочем проекте были безжалостно заменены на обычные фабрики т.к. стало ясно, что без перекомпилляции никогда нет нужды подменять реализацию, а дополнительная, не нужная в боевых условиях, xml-конфигурация только отягощяет решение.<br/>
Вопрос такой, в какой системе IoC контейнер может быть полезен при разработке бизнес приложений и на бою?<br/>
Даже так, в каких реальных приложениях его использование может быть уместно?<br/>
<br/>
<b>Про unit тестирование</b><br/>
Если хочешь unit-тестировать код, спроектируй его так, чтобы IoC был не нужен, а все вспомогательные объекты можно было переопределить через свойства или конструктор.<br/>
Чем IoC лучше?<br/>
<br/>
<b>Про конфигурацию</b><br/>
«Если наш сервис требует настройки, его придется настраивать в каждом классе, который его использует.»<br/>
Что имел ввиду автор? Передавать константные параметры в конструктор? Чем тут IoC контейнер лучше фабрики и грамотно спроектированной структуры конфигурационного файла или даже объекта, который конфигурирует себя сам?]]></description>
			<pubDate>Wed, 24 Jun 2009 18:10:13 GMT</pubDate>
			<author>timafyozzi</author>
		</item>
	

	
</channel>
</rss>

