<?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: HowTo: Dependency Injection &amp; Service Locator</title>
	<atom:link href="http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/feed/" rel="self" type="application/rss+xml" />
	<link>http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/</link>
	<description>Webdevelopment with ASP.NET MVC, jQuery &#38; the Microsoft Stack</description>
	<lastBuildDate>Thu, 02 Feb 2012 18:16:52 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
	<item>
		<title>By: HowTo: WCF ClientChannel &#252;ber Windsor Castle erstellen&#8211;WCF &#38; IoC&#8230; &#124; Code-Inside Blog</title>
		<link>http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/comment-page-1/#comment-64267</link>
		<dc:creator>HowTo: WCF ClientChannel &#252;ber Windsor Castle erstellen&#8211;WCF &#38; IoC&#8230; &#124; Code-Inside Blog</dc:creator>
		<pubDate>Wed, 27 Jul 2011 22:30:20 +0000</pubDate>
		<guid isPermaLink="false">http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/#comment-64267</guid>
		<description>[...] Es wird aber etwas knifflig, wenn man es nun sich den Proxy für den WCF Aufruf über einen DI (Was ist eigentlich “Dependency Injection/DI”?) Container aufbauen lassen möchte. In diesem Beispiel wird der DI Container Windsor Castle benutzt [...]</description>
		<content:encoded><![CDATA[<p>[...] Es wird aber etwas knifflig, wenn man es nun sich den Proxy für den WCF Aufruf über einen DI (Was ist eigentlich “Dependency Injection/DI”?) Container aufbauen lassen möchte. In diesem Beispiel wird der DI Container Windsor Castle benutzt [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: HowTo: Alle Implementationen vom Interface X &#252;ber Castle Windsor per DI aufl&#246;sen &#124; Code-Inside Blog</title>
		<link>http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/comment-page-1/#comment-42113</link>
		<dc:creator>HowTo: Alle Implementationen vom Interface X &#252;ber Castle Windsor per DI aufl&#246;sen &#124; Code-Inside Blog</dc:creator>
		<pubDate>Sun, 27 Jun 2010 22:24:45 +0000</pubDate>
		<guid isPermaLink="false">http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/#comment-42113</guid>
		<description>[...] kleinen Einstieg hab ich hier bereits gegeben. In meinem Beispiel nutze ich Castle Windsor, genauso gut hätte ich wahrscheinlich [...]</description>
		<content:encoded><![CDATA[<p>[...] kleinen Einstieg hab ich hier bereits gegeben. In meinem Beispiel nutze ich Castle Windsor, genauso gut hätte ich wahrscheinlich [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Mühsig</title>
		<link>http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/comment-page-1/#comment-41500</link>
		<dc:creator>Robert Mühsig</dc:creator>
		<pubDate>Thu, 10 Jun 2010 14:18:27 +0000</pubDate>
		<guid isPermaLink="false">http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/#comment-41500</guid>
		<description>Hallo Ron,
das hast du genau richtig erkannt. Die IInstanceFactory geht eher in die Richtung &quot;Worst-Practices&quot; weil es quasi ein ServiceLocator ist. 
Dort ist das Problem halt, dass man a) nie genau weiß, was die Klasse überhaupt für Abhängigkeiten hat und b) dass man keine wirkliche Kontrolle hat, weil die Klasse ganz wild Services aufrufen kann.

Mein unteres Beispiel mit WindsorCastle und dem Aufruf von &quot;container.Resolve&lt;IUserService&gt;();&quot; würde automatisch die Abhängigkeiten aufschlüsseln und hätte die Intelligenz die du ansprichst. 

Dabei sucht WindsorCastle automatisch nach dem Konstruktor, welcher die meisten Abhängigkeiten entgegennimmt und schlüsselt diese dann immer weiter auf.</description>
		<content:encoded><![CDATA[<p>Hallo Ron,<br />
das hast du genau richtig erkannt. Die IInstanceFactory geht eher in die Richtung &#8220;Worst-Practices&#8221; weil es quasi ein ServiceLocator ist.<br />
Dort ist das Problem halt, dass man a) nie genau weiß, was die Klasse überhaupt für Abhängigkeiten hat und b) dass man keine wirkliche Kontrolle hat, weil die Klasse ganz wild Services aufrufen kann.</p>
<p>Mein unteres Beispiel mit WindsorCastle und dem Aufruf von &#8220;container.Resolve<iuserservice>();&#8221; würde automatisch die Abhängigkeiten aufschlüsseln und hätte die Intelligenz die du ansprichst. </p>
<p>Dabei sucht WindsorCastle automatisch nach dem Konstruktor, welcher die meisten Abhängigkeiten entgegennimmt und schlüsselt diese dann immer weiter auf.</iuserservice></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ron</title>
		<link>http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/comment-page-1/#comment-41418</link>
		<dc:creator>Ron</dc:creator>
		<pubDate>Tue, 08 Jun 2010 15:06:16 +0000</pubDate>
		<guid isPermaLink="false">http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/#comment-41418</guid>
		<description>Hallo Robert,

es gibt bekanntlich keine dumme Fragen, also riskierÂ´ ichÂ´s mal...

Die Klasse UserService: IUserService stellt ja einen Konstruktor für Constructor Injection bereit:
UserService(IInstanceFactory factory) { ... }

Mit IOC-Containern wie Castle Windsor oder LightCore kann man nun über die Konfigurationsdateien &quot;anmelden&quot;, dass der Konstruktor der Klasse UserService (oder bzw. die Klasse als solche) eine Abhängigkeit von IInstanceFactory besitzt. Soweit richtig?

Ich hätte mir aber folgendes von einem IOC-Container gewünscht: Damit ich mich beim Schreiben der Konfiguration für den IOC-Container eben NICHT MEHR darum kümmern muss, welche Abhängigkeiten die Klasse Kunde per Constructor Injection nennt, soll der IOC-Container selbst erkennen (bspw. über Reflection), dass UserService eine IInstanceFactory benötigt, selbständig prüfen, ob es schon eine Instanz von ILogger gibt, und wenn nicht, selbige aufgrund der Konfiguration eigenständig instanzieren und dann erst den Konstruktor von UserService aufrufen.

Anders ausgedrückt: Soweit ich das Konzept von LightCore oder CastleWindsor richtig verstanden habe, muss ich mich ja immer noch selbst darum kümmern, dass die Abhängigkeit der Klasse X vom Typ Y (weil als Konstruktorargument erwartet) irgendwo (z.B. in der Konfiguration) &quot;angemeldet&quot; wird.
Erhofft hätte ich mir eine entsprechende Intelligenz des IOC-Containers; habe ich hier etwas übersehen oder ist das so?

Herzlichen Dank für Deine Meinung,
Gruß
Ron</description>
		<content:encoded><![CDATA[<p>Hallo Robert,</p>
<p>es gibt bekanntlich keine dumme Fragen, also riskierÂ´ ichÂ´s mal&#8230;</p>
<p>Die Klasse UserService: IUserService stellt ja einen Konstruktor für Constructor Injection bereit:<br />
UserService(IInstanceFactory factory) { &#8230; }</p>
<p>Mit IOC-Containern wie Castle Windsor oder LightCore kann man nun über die Konfigurationsdateien &#8220;anmelden&#8221;, dass der Konstruktor der Klasse UserService (oder bzw. die Klasse als solche) eine Abhängigkeit von IInstanceFactory besitzt. Soweit richtig?</p>
<p>Ich hätte mir aber folgendes von einem IOC-Container gewünscht: Damit ich mich beim Schreiben der Konfiguration für den IOC-Container eben NICHT MEHR darum kümmern muss, welche Abhängigkeiten die Klasse Kunde per Constructor Injection nennt, soll der IOC-Container selbst erkennen (bspw. über Reflection), dass UserService eine IInstanceFactory benötigt, selbständig prüfen, ob es schon eine Instanz von ILogger gibt, und wenn nicht, selbige aufgrund der Konfiguration eigenständig instanzieren und dann erst den Konstruktor von UserService aufrufen.</p>
<p>Anders ausgedrückt: Soweit ich das Konzept von LightCore oder CastleWindsor richtig verstanden habe, muss ich mich ja immer noch selbst darum kümmern, dass die Abhängigkeit der Klasse X vom Typ Y (weil als Konstruktorargument erwartet) irgendwo (z.B. in der Konfiguration) &#8220;angemeldet&#8221; wird.<br />
Erhofft hätte ich mir eine entsprechende Intelligenz des IOC-Containers; habe ich hier etwas übersehen oder ist das so?</p>
<p>Herzlichen Dank für Deine Meinung,<br />
Gruß<br />
Ron</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rainer Hilmer</title>
		<link>http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/comment-page-1/#comment-37929</link>
		<dc:creator>Rainer Hilmer</dc:creator>
		<pubDate>Tue, 16 Mar 2010 10:10:50 +0000</pubDate>
		<guid isPermaLink="false">http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/#comment-37929</guid>
		<description>Hallo Robert,
schöne Einführung in das Thema. Was hier vielleicht nicht so ganz deutlich geworden ist: Ein weiterer Vorteil von DI und IOC ist, neben der Testbarkeit, die einfache Möglichkeit, Komponenten auszutauschen (Komponentendesign). So ist es z.B. ein Leichtes Serialisierungskomponenten auszutauschen (XML gegen binary or whatever). Wichtig dabei ist nur daß diese Komponenten eine gemeinsame Kommunikationsschnittstelle (Interface) implementieren. Mit diesem Verfahren lassen auch Presentation Layer austauschen. Mit der richtigen Architektur kann man die gleiche Applikation mit einem Web-UI verbinden oder z.B. mit Windows Forms.
Gruß
Rainer</description>
		<content:encoded><![CDATA[<p>Hallo Robert,<br />
schöne Einführung in das Thema. Was hier vielleicht nicht so ganz deutlich geworden ist: Ein weiterer Vorteil von DI und IOC ist, neben der Testbarkeit, die einfache Möglichkeit, Komponenten auszutauschen (Komponentendesign). So ist es z.B. ein Leichtes Serialisierungskomponenten auszutauschen (XML gegen binary or whatever). Wichtig dabei ist nur daß diese Komponenten eine gemeinsame Kommunikationsschnittstelle (Interface) implementieren. Mit diesem Verfahren lassen auch Presentation Layer austauschen. Mit der richtigen Architektur kann man die gleiche Applikation mit einem Web-UI verbinden oder z.B. mit Windows Forms.<br />
Gruß<br />
Rainer</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alexander Groß</title>
		<link>http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/comment-page-1/#comment-37926</link>
		<dc:creator>Alexander Groß</dc:creator>
		<pubDate>Tue, 16 Mar 2010 08:37:07 +0000</pubDate>
		<guid isPermaLink="false">http://code-inside.de/blog/2010/03/15/howto-dependency-injection-service-locator/#comment-37926</guid>
		<description>Hallo Robert,

eine sehr schöne Zusammenfassung!

Alex</description>
		<content:encoded><![CDATA[<p>Hallo Robert,</p>
<p>eine sehr schöne Zusammenfassung!</p>
<p>Alex</p>
]]></content:encoded>
	</item>
</channel>
</rss>

