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 layerMy 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
VB.NET: Two tiers for three layers or three tiers for three layers
design patterns;vb.net
Is there any specific criteria that developers use to decide whether or not to use three tiers?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.While the concepts of layer and tier are often used interchangeably, one fairly common point of view is that there is indeed a difference. This view holds that a layer is a logical structuring mechanism for the elements that make up the software solution, while a tier is a physical structuring mechanism for the system infrastructure.http://en.wikipedia.org/wiki/Multitier_architecture