N Tier Development standards
Am new user of the n-tier development, and am wondering how can i determine the number of layers to use? i know the structure and divisions DAL and BLL, but some user may divide their projects into more tiers, depending on what reasons should developer make it more or less tiers? is it performance and functionality reasons? please explain. also is there a standard number of tiers?
To manage the application development and maintenance, one needs to divide the application into logical (and physical) units/group - each devoted to specific concern (in terms of functionality or in terms of infrastructure or in some other terms). Division can be vertical and/or horizontal. Layer is a horizontal split while vertical splits get driven from domain perspective (modules/sub-modules). At a very broad level, number of layers get decided based on degree of separation of concerns that you want to achieve. Common layers are data access, business logic, presentation. But you can more such as business facade that provides simpler API on top of business logic, or services layer that allow external application to integrate with yours and so on. Each layer can have sub-layers and so on. And there can be cross-cutting concerns such as logging, security, audit trails etc
Tier indicates physical separation of layer(s) - tiering is done so that different layers can be scaled independently of each other. So you can have database server, application server (hosing business layer) and web server (hosting presentation) as tiers.
Will recommend reading this article to understand more on layers and tiers.