<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Architecture</title><link>http://forums.asp.net/16.aspx</link><description>Discuss and debate ASP.NET application designs. &lt;a href="http://aspadvice.com/SignUp/list.aspx?l=8&amp;c=17" target="_blank"&gt;Email List&lt;/a&gt;</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2739229.aspx</link><pubDate>Wed, 12 Nov 2008 01:16:19 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2739229</guid><dc:creator>LudovicoVan</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2739229.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2739229</wfw:commentRss><description>&lt;p&gt;Momcilo, 
&lt;p&gt;&amp;gt; Ah, angry or crazy, who knows...&lt;br /&gt;&amp;gt; I spent last hour trying to actually write some code, but couldn&amp;#39;t help thinking about how to help our friend Abhi&lt;/p&gt;
&lt;p&gt;Bad bad, you should know! As for our friend Abhi, if s/he needs help, then s/he can wait, IMHO.&lt;/p&gt;
&lt;p&gt;&amp;gt; For me, the most important question here is - who is responsible for this confusion?&lt;br /&gt;&amp;gt; Developers themselves, universities, software companies not willing to invest into education?&lt;br /&gt;&amp;gt; Or the internet where everybody is an &amp;quot;expert&amp;quot; and people get confused by &amp;quot;layers&amp;quot;, &amp;quot;tiers&amp;quot; and &amp;quot;angry monkeys&amp;quot;?&lt;/p&gt;
&lt;p&gt;So, that is your top question, and your list of candidates. Moreover, shall I be looking forward to the web form for registering as an &amp;quot;expert&amp;quot; and get the e-badge?&lt;/p&gt;
&lt;p&gt;&amp;gt; &amp;quot;Writing software would be a lot easier if it weren&amp;#39;t for customers&amp;quot;&lt;/p&gt;
&lt;p&gt;Writing software would be a lot easier if it weren&amp;#39;t for the vendors, for instance. Does it matter? My top question would rather have been: how to solve the given problem.&lt;/p&gt;
&lt;p&gt;-LV&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2739112.aspx</link><pubDate>Tue, 11 Nov 2008 23:07:20 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2739112</guid><dc:creator>benhart</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2739112.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2739112</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="/Themes/fan/images/icon-quote.gif"&gt; &lt;strong&gt;LudovicoVan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The quote I&amp;#39;d paraphrase like this:&lt;/p&gt;
&lt;p&gt;&amp;lt;&amp;lt; In software, lots of the practices on projects exist because “that’s the way all the cool people do it.” In other words, because of crazy monkeys. &amp;gt;&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;&lt;p&gt;Perhaps I&amp;#39;m missing the intended humour here, but I&amp;#39;d paraphrase it as&lt;/p&gt;&lt;p&gt;&amp;lt;&amp;lt; In software, lots of the practices on projects exists because people adopt those of the people that came before them without ever questioning and (more importantly) understanding why they originally adopted them. &amp;gt;&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Momcilo, there are doubtless many reasons for much confusion. Our really young industry has a particularly low barrier to entry, and an extremely long path to mastery. This puts us in a fairly unique position where we are, for the most part, the partially-sighted leading the blind. Good advice has the habit of repeating though, and, even if ignored the first time, will be remembered when it&amp;#39;s learned the hard way. Please continue to keep giving it &lt;img src="http://forums.asp.net/emoticons/emotion-1.gif" alt="Smile" /&gt;.&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2738945.aspx</link><pubDate>Tue, 11 Nov 2008 20:52:24 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2738945</guid><dc:creator>Momcilo</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2738945.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2738945</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="/Themes/fan/images/icon-quote.gif"&gt; &lt;strong&gt;LudovicoVan:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; 
&lt;p&gt;Momcilo,&lt;/p&gt;
&lt;p&gt;I couldn&amp;#39;t agree more with your first post.&lt;/p&gt;
&lt;p&gt;As to the second, I&amp;#39;m afraid not. The quote I&amp;#39;d paraphrase like this:&lt;/p&gt;
&lt;p&gt;&amp;lt;&amp;lt; In software, lots of the practices on projects exist because “that’s the way all the cool people do it.” In other words, because of crazy monkeys. &amp;gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Or so I see it.&lt;/p&gt;
&lt;p&gt;-LV&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;
&lt;p&gt;Ah, angry or crazy, who knows... I spent last hour trying to actually write some code, but couldn&amp;#39;t help thinking about how to help our friend Abhi: &lt;a href="http://forums.asp.net/t/1346305.aspx"&gt;http://forums.asp.net/t/1346305.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For me, the most important question here is - who is responsible for this confusion? Developers themselves, universities, software companies not willing to invest into education? Or the internet where everybody is an &amp;quot;expert&amp;quot; and people get confused by &amp;quot;layers&amp;quot;, &amp;quot;tiers&amp;quot; and &amp;quot;angry monkeys&amp;quot;?&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2738900.aspx</link><pubDate>Tue, 11 Nov 2008 20:24:19 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2738900</guid><dc:creator>LudovicoVan</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2738900.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2738900</wfw:commentRss><description>&lt;p&gt;Momcilo,&lt;/p&gt;
&lt;p&gt;I couldn&amp;#39;t agree more with your first post.&lt;/p&gt;
&lt;p&gt;As to the second, I&amp;#39;m afraid not. The quote I&amp;#39;d paraphrase like this:&lt;/p&gt;
&lt;p&gt;&amp;lt;&amp;lt; In software, lots of the practices on projects exist because “that’s the way all the cool people do it.” In other words, because of crazy monkeys. &amp;gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Or so I see it.&lt;/p&gt;
&lt;p&gt;-LV&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2738892.aspx</link><pubDate>Tue, 11 Nov 2008 20:17:16 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2738892</guid><dc:creator>benhart</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2738892.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2738892</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;Momcilo, that&amp;#39;s a great quote. Thanks &lt;img src="http://forums.asp.net/emoticons/emotion-2.gif" alt="Big Smile" /&gt;&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2738831.aspx</link><pubDate>Tue, 11 Nov 2008 19:32:53 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2738831</guid><dc:creator>Momcilo</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2738831.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2738831</wfw:commentRss><description>&lt;p&gt;&amp;quot;Back in the 1960s (when scientists were allowed to do all kinds of crazy things), behavioral&lt;br /&gt;scientists conducted an experiment where they placed five monkeys in a room with a&lt;br /&gt;stepladder and a bunch of bananas hanging from the ceiling. The monkeys quickly figured out&lt;br /&gt;that they could climb the ladder and eat the bananas, but every time the monkeys got near&lt;br /&gt;the stepladder, the scientists would douse the entire room in ice cold water. You can guess&lt;br /&gt;what that generated: angry monkeys. Soon, none of the monkeys would go near the ladder.&lt;/p&gt;
&lt;p&gt;Then, the scientists replaced one of the monkeys with a new monkey, who had not been subject&lt;br /&gt;to the blasts of water. The first thing he did was make a beeline for the ladder, and all the other&lt;br /&gt;monkeys beat him up. He didn’t know why they were beating him up, but he quickly learned:&lt;br /&gt;don’t go near the ladder. Gradually, the scientists replaced the original monkeys with new&lt;br /&gt;monkeys until they had a group of monkeys who had never been doused with cold water, yet&lt;br /&gt;they would still attack any monkey that approached the ladder.&lt;/p&gt;
&lt;p&gt;The point? In software, lots of the practices on projects exist because “that’s the way we’ve&lt;br /&gt;always done it.” In other words, because of angry monkeys.&amp;quot;&lt;/p&gt;
&lt;p&gt;(&amp;quot;The Productive Programmer&amp;quot;, Neal Ford, p144)&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2738715.aspx</link><pubDate>Tue, 11 Nov 2008 18:31:03 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2738715</guid><dc:creator>Momcilo</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2738715.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2738715</wfw:commentRss><description>&lt;p&gt;&amp;quot;Three Layer/Tier Architecture&amp;quot; is oversimplification of some very important programming principles and is widely misunderstood. Some people really write useless “proxy” classes just to call them “business layer”, but (I saw this with my own eyes) then pass SQL strings from their “presentation layer” back to “data access layer”… That is no better than procedural code, but is in fact much worse.&lt;/p&gt;
&lt;p&gt;“Layers” evolve naturally where the complexity is. It is very hard work to identify logical units, encapsulate them properly and keep your code/classes clean and simple. It is not known in advance, it is our job to figure out while analyzing and coding. And we are always surprised by what happens.&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2738177.aspx</link><pubDate>Tue, 11 Nov 2008 13:59:00 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2738177</guid><dc:creator>joycsharp</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2738177.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2738177</wfw:commentRss><description>&lt;p&gt;@EntitySpaces &lt;br /&gt;@TATWORTH &lt;br /&gt;@LudovicoVan &lt;/p&gt;
&lt;p&gt;Agreed&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2738112.aspx</link><pubDate>Tue, 11 Nov 2008 13:35:13 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2738112</guid><dc:creator>LudovicoVan</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2738112.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2738112</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="/Themes/fan/images/icon-quote.gif"&gt; &lt;strong&gt;TATWORTH:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; 
&lt;p&gt;Mike Griffin &amp;gt;My short answer &amp;quot;No, you don&amp;#39;t&amp;quot; &lt;/p&gt;
&lt;p&gt;You Sir are brave to state that opinion. I agree with you. We may both be flamed.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;If 3-layer fulfills a need, then fine. However, I have seen 3-layer systems that seem to be more of an exercise in in complexity, than fulfilling a genuine need.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;
&lt;p&gt;Feel free to count me in.&lt;/p&gt;
&lt;p&gt;Most of current architectural trends are just that, trendy over-engineering, richer vendors&amp;#39; catalogues, unjustified costs of development, unmanageable extra-complexity, flooding the software arena with sellable nonsense, hooligans of this or that new techno-religion, et similia.&lt;/p&gt;
&lt;p&gt;(Call it pre-emptive counter-flaming if you like. ;)&lt;/p&gt;
&lt;p&gt;-LV&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2737828.aspx</link><pubDate>Tue, 11 Nov 2008 11:23:13 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2737828</guid><dc:creator>TATWORTH</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2737828.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2737828</wfw:commentRss><description>&lt;p&gt;Mike Griffin &amp;gt;My short answer &amp;quot;No, you don&amp;#39;t&amp;quot; &lt;/p&gt;&lt;p&gt;You Sir are brave to state that opinion. I agree with you. We may both be flamed.&lt;br /&gt;&lt;/p&gt;&lt;p&gt; If 3-layer fulfills a need, then fine. However, I have seen 3-layer systems that seem to be more of an exercise in in complexity, than fulfilling a genuine need.&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2732042.aspx</link><pubDate>Fri, 07 Nov 2008 18:48:16 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2732042</guid><dc:creator>EntitySpaces</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2732042.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2732042</wfw:commentRss><description>&lt;p&gt;My short answer &amp;quot;No, you don&amp;#39;t&amp;quot;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is the way we do it at EntitySpaces and hope I can contribute here a little.&lt;/p&gt;
&lt;p&gt;1) We generate a set of classes from your database schema, we call them the generated classes. &lt;br /&gt;2) We then generate (one time only) a set of custom classes that inherit from the generated classes &lt;/p&gt;
&lt;p&gt;public class Custom : Generated &lt;br /&gt;{ &lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;You can override almost everything in the &amp;quot;Generated&amp;quot; classes, including the properties accessors.&lt;/p&gt;
&lt;p&gt;Your custom class is originally empty but you can add business logic to them as you see fit. The nice thing about this is your Custom class has only your code in it and none of our underlying infrastructure, so all you see is your true business logic. Also, our system is provider independent so you never use SqlClient or OracleClient and you can switch providers without even recompiling by just changing your connection string in the config. This approach makes for a very rapid development system with almost zero maintenance impact incurred by changing your database schema. Just regenerate and you&amp;#39;re off. &lt;/p&gt;
&lt;p&gt;The generated class is a kind of &amp;quot;BusinessObject/DataObject combo&amp;quot;, however we never use the term DAL, DAL died 8 years ago or so for me, even in previous architectures. The code is simple, and 8 year old could crank out a system on it.&lt;/p&gt;
&lt;p&gt;Employee emp = new Employee(); &lt;br /&gt;emp.FirstName = &amp;quot;Joe&amp;quot;; &lt;br /&gt;emp.LastName = &amp;quot;Smith&amp;quot;; &lt;br /&gt;emp.Save(); &lt;/p&gt;
&lt;p&gt;That&amp;#39;s it, of course, we have a killer dynamic query API so you can fetch things on the fly. But in the above code you can overload Save, and the two property accessors if you needed to. There&amp;#39;s so much more too, you can use dynamic SQL or stored procs by merely indicating so in the config file. &lt;/p&gt;
&lt;p&gt;Overall, it&amp;#39;s meant to allow you knock out projects quickly, and it&amp;#39;s extremely fast performance wise, no layers, no facades, no dals, no xml, no reflection, just get er&amp;#39; done. Also runs on Mono, Compact Framework, and Medium Trust environments.&lt;/p&gt;
&lt;p&gt;Mike Griffin&lt;br /&gt;EntitySpaces LLC&lt;br /&gt;Persistence Layer and Business Objects for Microsoft .NET &lt;br /&gt;&lt;a href="http://www.entityspaces.net/"&gt;http://www.entityspaces.net&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2730559.aspx</link><pubDate>Fri, 07 Nov 2008 07:23:18 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2730559</guid><dc:creator>benhart</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2730559.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2730559</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;As I&amp;#39;ve intimated, I don&amp;#39;t have a layer (separate project or otherwise) called BLL or DAL, so I find it hard to imagine what a loosely intimate layered model might be. Is this a term that you&amp;#39;ve coined? Is it written up somewhere so I can understand better what you&amp;#39;re referring to?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;I define object shapes and behaviours centrally, and make use of an ORM to map these to a database. These entities are loaded via &amp;#39;abstracted&amp;#39; repositories (a known interface, for which the implementation is injected to calling code via an IoC container). Thus there is very little intimacy between what I suppose is my DAL and BLL, but using those terms does lead one immediately to think of a Pet Store type architecture. (Apologies if I&amp;#39;m misrepresenting the Pet Store - I seem to remember it being a reference architecture I looked through some time ago, in summary central data class definitions in a common assembly, a corresponding BLL which called a corresponding DAL to load one of these entities, &amp;quot;pass-through&amp;quot; business logic.) I moved away from this for the reasons I think I mentioned, but am not knocking it &lt;i&gt;per se&lt;/i&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;A previous poster has linked to an article regarding active record vs. objects. You preference either way, and the nature of the system being developed will without doubt impact your decisions architecturally and the language you use to describe it.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;In a nutshell, what&amp;#39;s preferable to me is long term maintainability, and I&amp;#39;m always open to ideas that improve this...&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2730529.aspx</link><pubDate>Fri, 07 Nov 2008 07:01:30 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2730529</guid><dc:creator>joycsharp</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2730529.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2730529</wfw:commentRss><description>&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="/Themes/fan/images/icon-quote.gif"&gt; &lt;strong&gt;joycsharp:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; 
&lt;p&gt;Now we need to consider whether we need to consider Tight or Loose Intimacy between Layers.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;For instance we have two data/business entities: School and Student, where we have some business rule included in School entity, where as vthe Student entity doesn’t have. For a “Tightly Intimate Layered” model, we may have SchoolBLL, StudentBLL at business logic layer, following which we’ll have SchoolDAL and StudentDAL at data access layer. For a “Loosely Intimate Layered” model, we’ll have SchoolBLL only in business logic layer along with SchoolDAL and StudentDAL. &lt;/p&gt;
&lt;p&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;
&lt;p&gt;&lt;BLOCKQUOTE&gt;&lt;div&gt;&lt;img src="/Themes/fan/images/icon-quote.gif"&gt; &lt;strong&gt;benhart:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Done incorrectly you can find yourself with the same mesh of code with low cohesion and high coupling. I&amp;#39;ve seen BLL classes with nothing in them, just more coupling to instance or static calls to the corresponding dal code. This to me is the waste I referred to, you have another class implemented to follow a pattern, but which serves no purpose, and still needs to be maintained. If you have a lot of these you might wish to consider why.&lt;br /&gt;&lt;/div&gt;&lt;/BLOCKQUOTE&gt;&lt;/p&gt;
&lt;p&gt;So in that case,&amp;nbsp;&amp;quot;Loosely Intimate Layered Model&amp;quot; is preferable?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2729675.aspx</link><pubDate>Thu, 06 Nov 2008 20:41:08 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2729675</guid><dc:creator>Chuck M.</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2729675.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2729675</wfw:commentRss><description>&lt;p&gt;This is a really broad question that lacks context, but here’s my 2 cents:&lt;/p&gt;&lt;p&gt;First, note what most consider layers and tiers: &lt;a href="http://blogs.msdn.com/jmeier/archive/2008/09/06/layers-and-tiers.aspx" target="_blank"&gt;http://blogs.msdn.com/jmeier/archive/2008/09/06/layers-and-tiers.aspx&lt;/a&gt;, as people on this thread seem to be using the two interchangeably.&lt;/p&gt;&lt;p&gt;“Do We Really Need Three Layer Architecture”&lt;/p&gt;&lt;p&gt;Layers are just logical organization for common features, just like creating namespaces, classes, and functions. Layered architecture is very useful; the number of layers is irrelevant. The bigger problem is building the right level of abstraction to solve your problem, while accommodating readability and extensibility.&lt;/p&gt;&lt;p&gt;“How many of your data entities include business logic”&lt;/p&gt;&lt;p&gt;Are you modeling behavior or data in your code? There is a difference. Bob Martin wrote a good post on this a while back: &lt;a href="http://blog.objectmentor.com/articles/2007/11/02/active-record-vs-objects" target="_blank"&gt;http://blog.objectmentor.com/articles/2007/11/02/active-record-vs-objects&lt;/a&gt;. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;“I know for sure my database vendor is not going to be changed, then why we need another layer?”&lt;br /&gt;&lt;/p&gt;&lt;p&gt;How many API’s has Microsoft created for SQL Server over the years? Vendors might not change much, but it is important to abstract persistence API’s, as they change a lot and it’s low level detail that doesn’t need to be spread throughout your codebase. If I’m reading code that validates and saves data, I want to read a high level abstraction, not what query is called or what SQL data types are being used.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description></item><item><title>Re: Debate: Do We Really Need Three Layer Architecture?</title><link>http://forums.asp.net/thread/2727304.aspx</link><pubDate>Wed, 05 Nov 2008 23:49:18 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2727304</guid><dc:creator>chadmyers</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2727304.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=16&amp;PostID=2727304</wfw:commentRss><description>&lt;p&gt;As with any architectural optional, the choice must be well considered and should be seriously scrutinized. So let&amp;#39;s scrutinize the n-tier architecture model...&amp;nbsp;&lt;/p&gt;&lt;p&gt;What is the motivation of the layered (I would argue that what you&amp;#39;re calling &amp;#39;layers&amp;#39; are actually &amp;#39;tiers&amp;#39;, but I digress) architecture?&lt;/p&gt;&lt;p&gt;What do you gain by this approach?&lt;/p&gt;&lt;p&gt;How easy will it be to reverse this decision in the future?&lt;/p&gt;&lt;p&gt;How easy will it be to test this approach?&lt;/p&gt;&lt;p&gt;How easy will it be to maintain and add new features going forward?&lt;/p&gt;&lt;p&gt;Will this architecture scale up or out?&amp;nbsp; What effect will that have on the infrastructure supporting this decision?&lt;/p&gt;&lt;p&gt;There&amp;#39;s a million other questions to ask, but so far, these are good questions to start with.&lt;/p&gt;&lt;p&gt;For me, reversibility is key. No architecture survives first contact with developers. There is no amount of planning up front that will account for every situation. So the architecture plan must account for sweeping changes and reversal of failures and bad assumptions.&lt;/p&gt;&lt;p&gt;From my experience, trying to achieve a stratospheric approach (having hard tiering between &amp;#39;data&amp;#39; and &amp;#39;business logic&amp;#39;, and &amp;#39;ui&amp;#39;), reversibility suffers significantly and a lot of optimization and effort goes into each tier, but not into the whole system which ultimately suffers because of it.&lt;/p&gt;&lt;p&gt;A more holistic approach might be in order that allows logic to exist where it&amp;#39;s most appropriate, but stay consistent with respect to the entire system might be a better approach.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>