<?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: Layering &#8211; too simplistic to actually work</title>
	<atom:link href="http://www.udidahan.com/2007/06/03/layering-too-simplistic-to-actually-work/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.udidahan.com/2007/06/03/layering-too-simplistic-to-actually-work/</link>
	<description>Enterprise Development Expert &#38; SOA Specialist</description>
	<lastBuildDate>Sat, 11 Feb 2012 15:16:10 -0600</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Arnon Rotem-Gal-Oz</title>
		<link>http://www.udidahan.com/2007/06/03/layering-too-simplistic-to-actually-work/comment-page-1/#comment-2044</link>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
		<pubDate>Mon, 04 Jun 2007 13:16:50 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/03/layering-too-simplistic-to-actually-work/#comment-2044</guid>
		<description>@Henke:
If you were doing layered architecture the BL would know how to call the DL but it would have to use the DL objects not the BL - since the BL layer knows about the persistence layer below it but it doesn&#039;t know about the BL - as that would violate the layering.
The BL can use the DL objects but if it has to expose other objects (its own) for other more upper layers to use. 
If you are not doing a strict layers more upper layers (e.g. a UI) can see the objects of the DL even though they are not directly below them
You can create an interface for the &quot;entities&quot; if this interface belongs to the DL you are OK , if it belongs to the BL or external to both you can also be OK - but then it is not layers

Which brings us to what Udi said that these &quot;non-layers&quot; are not really useful and don&#039;t say much about the architecture 

@Udi
You probably know I agree that the &quot;layer diagrams&quot; (actually block diagrams) you talk about are not *the* architecture. but the fact the a lot of people don&#039;t fully understand a concept and don&#039;t use it correctly doesn&#039;t mean the concept is flawed (just think about SOA :) )

Arnon</description>
		<content:encoded><![CDATA[<p>@Henke:<br />
If you were doing layered architecture the BL would know how to call the DL but it would have to use the DL objects not the BL &#8211; since the BL layer knows about the persistence layer below it but it doesn&#8217;t know about the BL &#8211; as that would violate the layering.<br />
The BL can use the DL objects but if it has to expose other objects (its own) for other more upper layers to use.<br />
If you are not doing a strict layers more upper layers (e.g. a UI) can see the objects of the DL even though they are not directly below them<br />
You can create an interface for the &#8220;entities&#8221; if this interface belongs to the DL you are OK , if it belongs to the BL or external to both you can also be OK &#8211; but then it is not layers</p>
<p>Which brings us to what Udi said that these &#8220;non-layers&#8221; are not really useful and don&#8217;t say much about the architecture </p>
<p>@Udi<br />
You probably know I agree that the &#8220;layer diagrams&#8221; (actually block diagrams) you talk about are not *the* architecture. but the fact the a lot of people don&#8217;t fully understand a concept and don&#8217;t use it correctly doesn&#8217;t mean the concept is flawed (just think about SOA <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<p>Arnon</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: thesoftwaresimplist</title>
		<link>http://www.udidahan.com/2007/06/03/layering-too-simplistic-to-actually-work/comment-page-1/#comment-2040</link>
		<dc:creator>thesoftwaresimplist</dc:creator>
		<pubDate>Mon, 04 Jun 2007 08:52:48 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/03/layering-too-simplistic-to-actually-work/#comment-2040</guid>
		<description>Arnon,

Of course you&#039;re right, my friend. I should have been more specific as to the use of layered architectures for application development.

Henke,

Thanks for backing me up. I need all the help I can get with Arnon :)

Mark,

I agree with your agreement. I find that the basic principle which guides me is: 

http://udidahan.weblogs.us/2007/05/12/first-principle-of-design-refined/

I find that the kind of questions/answer flow I did in the article helps architects and developers shift their thinking from layers to more actionable/workable designs. I have yet to be callled a heretic :)</description>
		<content:encoded><![CDATA[<p>Arnon,</p>
<p>Of course you&#8217;re right, my friend. I should have been more specific as to the use of layered architectures for application development.</p>
<p>Henke,</p>
<p>Thanks for backing me up. I need all the help I can get with Arnon <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Mark,</p>
<p>I agree with your agreement. I find that the basic principle which guides me is: </p>
<p><a href="http://udidahan.weblogs.us/2007/05/12/first-principle-of-design-refined/" rel="nofollow">http://udidahan.weblogs.us/2007/05/12/first-principle-of-design-refined/</a></p>
<p>I find that the kind of questions/answer flow I did in the article helps architects and developers shift their thinking from layers to more actionable/workable designs. I have yet to be callled a heretic <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Seemann</title>
		<link>http://www.udidahan.com/2007/06/03/layering-too-simplistic-to-actually-work/comment-page-1/#comment-2039</link>
		<dc:creator>Mark Seemann</dc:creator>
		<pubDate>Mon, 04 Jun 2007 08:37:29 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/03/layering-too-simplistic-to-actually-work/#comment-2039</guid>
		<description>I totally agree with this article. It&#039;s getting to the point that I&#039;ve more or less stopped thinking about applications in layers; these days, I just think about good application design as being built on a composable hierachy of isolatable libraries with clear separation of concern.

But when I talk to architects and lead developers about concrete designs, I still talk about layers, because the other thing is still too &#039;heretic&#039; :)</description>
		<content:encoded><![CDATA[<p>I totally agree with this article. It&#8217;s getting to the point that I&#8217;ve more or less stopped thinking about applications in layers; these days, I just think about good application design as being built on a composable hierachy of isolatable libraries with clear separation of concern.</p>
<p>But when I talk to architects and lead developers about concrete designs, I still talk about layers, because the other thing is still too &#8216;heretic&#8217; <img src='http://www.udidahan.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: henke</title>
		<link>http://www.udidahan.com/2007/06/03/layering-too-simplistic-to-actually-work/comment-page-1/#comment-2037</link>
		<dc:creator>henke</dc:creator>
		<pubDate>Mon, 04 Jun 2007 00:40:02 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/03/layering-too-simplistic-to-actually-work/#comment-2037</guid>
		<description>Arnon: If I got a data layer and a bll. By your reasoning, the bll and the services within ought to know about how to save stuff to the database. So you&#039;re saying it should have a dependency to the data layer. But then the data layer must know about the object model of bll in order to map to objects, so the data- must add a reference to bll- -- creating a circular dependency.

Let the definition of a layer be that it&#039;s agnostic of what&#039;s directly under it, instead, and let it define what&#039;s under itself by the use of interfaces, which in turn can be refactored to a &quot;vertical layer&quot; (not a layer really) which both bll and data uses, to know what they can expect of each other.

Or am I misinterpreting you?</description>
		<content:encoded><![CDATA[<p>Arnon: If I got a data layer and a bll. By your reasoning, the bll and the services within ought to know about how to save stuff to the database. So you&#8217;re saying it should have a dependency to the data layer. But then the data layer must know about the object model of bll in order to map to objects, so the data- must add a reference to bll- &#8212; creating a circular dependency.</p>
<p>Let the definition of a layer be that it&#8217;s agnostic of what&#8217;s directly under it, instead, and let it define what&#8217;s under itself by the use of interfaces, which in turn can be refactored to a &#8220;vertical layer&#8221; (not a layer really) which both bll and data uses, to know what they can expect of each other.</p>
<p>Or am I misinterpreting you?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Arnon Rotem-Gal-Oz</title>
		<link>http://www.udidahan.com/2007/06/03/layering-too-simplistic-to-actually-work/comment-page-1/#comment-2035</link>
		<dc:creator>Arnon Rotem-Gal-Oz</dc:creator>
		<pubDate>Sun, 03 Jun 2007 23:08:06 +0000</pubDate>
		<guid isPermaLink="false">http://udidahan.weblogs.us/2007/06/03/layering-too-simplistic-to-actually-work/#comment-2035</guid>
		<description>The problem is that when you add a &quot;Vertical layer&quot; all the layers that share that are no longer separate layers.
The defining character for layer is that they only know layers below them (or the layer directly below them if you are strict). Since the entities &quot;layer&quot; invalidated that you didn&#039;t see or get any value from it.
Layers do add complexity if all the layers use the same semantics - since what you do then is essentially translating data between formats (which is why you are tempted to add a  &quot;vertical layer&quot; which everybody knows) - Nevertheless, layers work well if you change the semantics when you move from layer to layer. just consider the TCP/IP stack which builds on the layered architectural style

Arnon</description>
		<content:encoded><![CDATA[<p>The problem is that when you add a &#8220;Vertical layer&#8221; all the layers that share that are no longer separate layers.<br />
The defining character for layer is that they only know layers below them (or the layer directly below them if you are strict). Since the entities &#8220;layer&#8221; invalidated that you didn&#8217;t see or get any value from it.<br />
Layers do add complexity if all the layers use the same semantics &#8211; since what you do then is essentially translating data between formats (which is why you are tempted to add a  &#8220;vertical layer&#8221; which everybody knows) &#8211; Nevertheless, layers work well if you change the semantics when you move from layer to layer. just consider the TCP/IP stack which builds on the layered architectural style</p>
<p>Arnon</p>
]]></content:encoded>
	</item>
</channel>
</rss>

