<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: How to decouple your code from ORM (XPO) while granting it the power to IoC?</title>
	<link>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/</link>
	<description>Moving towards the efficient development of smart software solutions</description>
	<pubDate>Wed, 20 Aug 2008 13:58:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
		<item>
		<title>By: How to inject ORM with some IoC? at Rinat Abdullin</title>
		<link>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-393</link>
		<dc:creator>How to inject ORM with some IoC? at Rinat Abdullin</dc:creator>
		<pubDate>Thu, 06 Mar 2008 14:42:37 +0000</pubDate>
		<guid>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-393</guid>
		<description>[...] post continues the discussion initiated by &#8220;How to decouple your code from ORM (XPO) while granting it the power to IoC?&#8221; and comments that [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] post continues the discussion initiated by &#8220;How to decouple your code from ORM (XPO) while granting it the power to IoC?&#8221; and comments that [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rinat Abdullin</title>
		<link>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-392</link>
		<dc:creator>Rinat Abdullin</dc:creator>
		<pubDate>Mon, 03 Mar 2008 07:33:42 +0000</pubDate>
		<guid>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-392</guid>
		<description>Jeremy,

You have a great point on the network effect in systems.

It is amazing to see how some small logical and architecture bits can stack up if you keep them in mind while working within the scope of subsystems (i.e. Automation Engine, Data Server, Web UI, Desktop UI).

Basically the components and their relations start turning into higher level meta-programming language that you can use to assemble sub-solutions dealing with business objects, processes and workflows.

But in order to get that synergy effect, a certain degree of logical flexibility and abstraction is needed in the right spots. Spots that do not gain enough from being flexible are better to be hardcoded.</description>
		<content:encoded><![CDATA[<p>Jeremy,</p>
<p>You have a great point on the network effect in systems.</p>
<p>It is amazing to see how some small logical and architecture bits can stack up if you keep them in mind while working within the scope of subsystems (i.e. Automation Engine, Data Server, Web UI, Desktop UI).</p>
<p>Basically the components and their relations start turning into higher level meta-programming language that you can use to assemble sub-solutions dealing with business objects, processes and workflows.</p>
<p>But in order to get that synergy effect, a certain degree of logical flexibility and abstraction is needed in the right spots. Spots that do not gain enough from being flexible are better to be hardcoded.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rinat Abdullin</title>
		<link>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-391</link>
		<dc:creator>Rinat Abdullin</dc:creator>
		<pubDate>Mon, 03 Mar 2008 07:19:45 +0000</pubDate>
		<guid>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-391</guid>
		<description>Alex,

I absolutely agree with you on the importance of the resources in any given project. Obviously, the time, money and available development pool are the constraints that affect any development process, architectural and logical decisions (they'd better or the project will be inefficient).

And frequently due to the resource pool limitations one has to "stay low" in the code and trade away some ease of change and extension for maintainability in order to deliver project successfully.

However, in xLim implementations I have the luxury of trying to get as much extensibility and abstraction as possible while keeping it logical, just to see how things work out together and what "silver bits" are the most rewarding.</description>
		<content:encoded><![CDATA[<p>Alex,</p>
<p>I absolutely agree with you on the importance of the resources in any given project. Obviously, the time, money and available development pool are the constraints that affect any development process, architectural and logical decisions (they&#8217;d better or the project will be inefficient).</p>
<p>And frequently due to the resource pool limitations one has to &#8220;stay low&#8221; in the code and trade away some ease of change and extension for maintainability in order to deliver project successfully.</p>
<p>However, in xLim implementations I have the luxury of trying to get as much extensibility and abstraction as possible while keeping it logical, just to see how things work out together and what &#8220;silver bits&#8221; are the most rewarding.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeremy Gray</title>
		<link>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-390</link>
		<dc:creator>Jeremy Gray</dc:creator>
		<pubDate>Sun, 02 Mar 2008 23:38:22 +0000</pubDate>
		<guid>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-390</guid>
		<description>PS to all - I know that I could easily create service-utilizing entities through the use of things like singleton service accessors, use of service locators, etc., but given that we're all talking in the context of IoC, with a focus on DI, I'm sure you can see that I would love to be able to achieve these goals without breaking out the singletons, (also singleton) service locators, "provider" models rife with config, backwards hacks for testability, etc.</description>
		<content:encoded><![CDATA[<p>PS to all - I know that I could easily create service-utilizing entities through the use of things like singleton service accessors, use of service locators, etc., but given that we&#8217;re all talking in the context of IoC, with a focus on DI, I&#8217;m sure you can see that I would love to be able to achieve these goals without breaking out the singletons, (also singleton) service locators, &#8220;provider&#8221; models rife with config, backwards hacks for testability, etc.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jeremy Gray</title>
		<link>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-389</link>
		<dc:creator>Jeremy Gray</dc:creator>
		<pubDate>Sun, 02 Mar 2008 23:35:12 +0000</pubDate>
		<guid>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-389</guid>
		<description>Alex,

So many of these techniques and technologies are mutually supporting and have so many great network effects that it can often be hard to see which angle someone might be coming at it from, and as such I can totally understand your comment.

My primary "angle" is that I need testable code, in this case specifically testable entities. I would also like to avoid the anemic domain model anti-pattern. To avoid it, I need entities that can make use of services. To make those entities testable, I need their service dependencies injected. It can be hard to do that, however, when instantiation of the entities is out of my control, eg. when an ORM instantiates and populates the entity objects.

For me, at least, it is this testability that is key. Abstraction is useful, but as you point out must always be treated solely as a means to a reasonable end. For me, abstraction is secondary to testability, though it often can be achieved in good support of testability.</description>
		<content:encoded><![CDATA[<p>Alex,</p>
<p>So many of these techniques and technologies are mutually supporting and have so many great network effects that it can often be hard to see which angle someone might be coming at it from, and as such I can totally understand your comment.</p>
<p>My primary &#8220;angle&#8221; is that I need testable code, in this case specifically testable entities. I would also like to avoid the anemic domain model anti-pattern. To avoid it, I need entities that can make use of services. To make those entities testable, I need their service dependencies injected. It can be hard to do that, however, when instantiation of the entities is out of my control, eg. when an ORM instantiates and populates the entity objects.</p>
<p>For me, at least, it is this testability that is key. Abstraction is useful, but as you point out must always be treated solely as a means to a reasonable end. For me, abstraction is secondary to testability, though it often can be achieved in good support of testability.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alex Hoffman</title>
		<link>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-388</link>
		<dc:creator>Alex Hoffman</dc:creator>
		<pubDate>Sun, 02 Mar 2008 22:58:04 +0000</pubDate>
		<guid>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-388</guid>
		<description>Thanks for an interesting post.

Just a small point, but from a manager's perspective I would question whether you are going down a slippery slope of continually trying to abstract away everything from everything.  When does adding "just one more" layer of abstraction end?  In a large organization with a diverse developer base, such an approach leads to less maintainable code given average developer skills, and that is less desirable than testability or re-usability.  The journey to a "silver bullet" framework that is loosely coupled in all circumstances, too often ends up in a complex framework that only the author(s) can use.</description>
		<content:encoded><![CDATA[<p>Thanks for an interesting post.</p>
<p>Just a small point, but from a manager&#8217;s perspective I would question whether you are going down a slippery slope of continually trying to abstract away everything from everything.  When does adding &#8220;just one more&#8221; layer of abstraction end?  In a large organization with a diverse developer base, such an approach leads to less maintainable code given average developer skills, and that is less desirable than testability or re-usability.  The journey to a &#8220;silver bullet&#8221; framework that is loosely coupled in all circumstances, too often ends up in a complex framework that only the author(s) can use.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rinat Abdullin</title>
		<link>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-387</link>
		<dc:creator>Rinat Abdullin</dc:creator>
		<pubDate>Sun, 02 Mar 2008 19:42:37 +0000</pubDate>
		<guid>http://rabdullin.com/how-to-decouple-your-code-from-orm-xpo-while-granting-it-the-power-to-ioc/#comment-387</guid>
		<description>Jeremy,

I may not post right away, since the logic behind ORM+IoC repository needs some thought, but my next post in the weblog will be on the subject.

I usually try to stick to my words and if you notice any big statement of mine that feels fallible or simply wrong, feel free to tell me. I will really appreciate that.

Rinat

PS: The joke about the hours in day comes from the Google group on autofac where Nick wished to increase the default values on the weekends))
http://groups.google.com/group/autofac/msg/a7fa1e26dc4b1767</description>
		<content:encoded><![CDATA[<p>Jeremy,</p>
<p>I may not post right away, since the logic behind ORM+IoC repository needs some thought, but my next post in the weblog will be on the subject.</p>
<p>I usually try to stick to my words and if you notice any big statement of mine that feels fallible or simply wrong, feel free to tell me. I will really appreciate that.</p>
<p>Rinat</p>
<p>PS: The joke about the hours in day comes from the Google group on autofac where Nick wished to increase the default values on the weekends))<br />
<a href="http://groups.google.com/group/autofac/msg/a7fa1e26dc4b1767" rel="nofollow">http://groups.google.com/group/autofac/msg/a7fa1e26dc4b1767</a></p>
]]></content:encoded>
	</item>
</channel>
</rss>
