Last post Jun 04, 2012 03:56 PM by atconway
Jun 01, 2012 05:51 PM|tech2hjoshi|LINK
I have one very general question over here. In current solution i have 4 projects, UI, BAL, DAL, Common.
we have more than one data source to access from so i think keeping DAL layer separate makes lot of sense.
but i was asked to do merge with BAL and DAL because its given in the below book,
has anyone read this book and is there anything mention that we dont need 3-tier architecture anymore? and we can merge DAL with BAL?
please let me know i have lot more debate going on for this. I m on the side of keeping it separate and keeping it clean in each separate layer but i want to know thoughts. :)
Jun 01, 2012 06:45 PM|_Manvel_|LINK
Oh, if the book is only argument to deprecate 3-tier architecture, than you can bring another book as opposite
But I think it really depends on how big is you application, and how you separate the responsibilities between layers. Ideally all the business logic should be resisted within BLL, and DAL should be responsible for Data Storage/Retrival only. If you don't
have complex business logic, and to avoid compexity, you can merge BLL and DAL, but again it all depends on how you architected application at first.
Another good source of how systems should be architected and which are the best practices, and which patterns can be applied to have clean code, and Separation of Converns is the book of Martin Fowler
Jun 04, 2012 03:56 PM|atconway|LINK
That is Rocky Lhotka's book and I believe what you are trying to understand has been taken out of context. The argument is made for the efficiency of 'Smart Client' applications when possible becuase of the condensed layers. However this should be thoroghly
understood and not taken to be that layering is bad. It is just showing the pros and cons and helping the developer to understand the effects of logical and physical layering can have on an application.
I think you should most certainly make the DAL it's own logical layer (separate class library in VS.NET) which will help you adhere to an important OOP concept which is separation of concerns. Unless you have some extenuating circumstances, layering
as you initially wanted to do is a good idea.
Lastly, the following (2) links highlight this a bit more and explain layering further:
Should all apps be n-tier?
A variety of physical n-tier options: