I asked a question on StackOverflow in November about separating a very large application into layers and tiers: https://stackoverflow.com/questions/13342626/net-divorcing-layers. The previous developer included data logic and business logic in the business logic layer
My question is about the tiers element. I researched on here and concluded that it is better to separate layers into tiers contained in separate DLLs i.e. the presentation layer, business logic layer and data access layer all have separate DLLs as described here: https://stackoverflow.com/questions/13342626/net-divorcing-layers. This seems to be consistent with what I lEarnt at university.
However, since then all the examples I am finding online suggest having two tiers (One for the presentation layer and one tier for the BLL and DAL).
Is there any specific criteria that developers use to decide whether or not to use three tiers?
I am using ADO.NET and have a shared SQL Helper class in the data access layer. The SQLHelper class is similar to this but for VB.NET: http://www.sharpdeveloper.net/source/SqlHelper-Source-Code-cs.html
Best Answer
Whether or not the software layer must be capable of running on a separate machine. That's the difference between a tier and a layer; a tier is a hardware abstraction.
http://en.wikipedia.org/wiki/Multitier_architecture