tiers have been introduced in order to splitt the logic according their concerns. In practise we have tiers like presentation, business logic, integration and data access or data storage.
This splitting is individual according to the needs. So there is no exact written defined rule how many tier a system must have. This means one systems has 2 tiers another 4 tiers or to keep it generic n-tiers.
Best practise has shown that the application code should be organized into presentation, application logic (business logic) and data access. This improves the not only the maintenance, also the extensibility as the reusage of the logic components could be easier realized.
Today not only more the logic alone should be packaged regarding this also the whole systems are going to be distributed according their concerns. This means you have server(s) for presentation, server(s) for the business logic and server(s) for the data access. Of course one or more tier could consist on a single server. The decision how many presentation servers or application servers etc. are needed depends on the service level requirements i.e.performance , response time etc.
n-tier means you can have as many tiers as you like. Some architects design security or integration of external systems in separate layers. This is depending how big and different your requirments are. i.e. If you have to connect to different external systems like IIOP, HTTP, SOAP, MOM etc. then it would make sense to design a seperate tier for this.
So I hope I could explain your question.
Joined: Apr 24, 2004
Hello Mark, Thanks a lot for your detailed reply! Can you please confirm that 3 tiers means: Tier one: web browser Tier two: app server Tier three: database I am right? Thanks in advance, Julien.
Although a J2EE application can consist of the three or four tiers shown in Figure 1-1, J2EE multitiered applications are generally considered to be three-tiered applications because they are distributed over three locations: client machines, the J2EE server machine, and the database or legacy machines at the back end. Three-tiered applications that run in this way extend the standard two-tiered client and server model by placing a multithreaded application server between the client application and back-end storage.