A single-tier architecture is one in which the complete program is located on the user's computer. This was typically the design of choice before networking got so simple and inexpensive. The apparent disadvantage of a single-tier design is that the data is stored on a local workstation and cannot be accessed by anybody else. However, many users prefer this isolation from other users' data and the ability to control what software has access to their information.
Single-tier applications are often said to be "installed everywhere" because they do not require a server component. This advantage can be important for organizations that must comply with regulatory requirements regarding the storage of data about individuals. A single-tier application may also be easier to maintain than multi-tier systems because there is less complexity involved in updating or fixing one part of the system versus all parts of the system.
Disadvantages of single-tier applications include limited functionality (because most programs have some sort of licensing fee or another cost associated with them) and lack of scalability (since all processing power and memory is tied up in one location).
Multi-tier architectures separate the user interface from the business logic and data storage. The user interface can be packaged with the business logic and data storage components as a stand-alone product that can be installed anywhere. While this advantage seems obvious, it is important to understand that without this separation any enterprise-wide deployment project would be impossible to implement.
A multi-tier architecture is a software architecture in which various software components are arranged into tiers (layers) to offer specific functionality. A multi-tier architecture is conceptually the consequence of the client/server paradigm being applied repeatedly. In other words, it is a collection of separate servers or web nodes, each performing a different role within the system.
Multi-tier architectures can be further divided into "distributed" and "non-distributed" systems. In a distributed system, all the processing for a given task is performed by one or more servers. Users make requests of the server(s), which responds by returning data back to the user. Some examples of distributed computing technologies include Web services, Java Servlets, and Microsoft Windows Services. On the other hand, non-distributed systems consist of a single monolithic program that performs all the tasks associated with a given role within the system. Examples of these programs include word processors, email clients, and media players.
Multi-tier networks are those in which there are multiple layers of security. Each layer has its own purpose and controls who can access what. For example, an organization might have a multi-layer network where the first layer of security is based on username and password, the next layer uses role-based access control (RBAC), and then finally the top level of security is provided by physical security measures such as secure rooms and locked doors.
An N-tier design splits a program into logical layers and physical tiers. Layers are a technique for separating roles and managing dependencies. A presentation layer, a middle tier, and a database tier comprise a standard three-tier program. The middle tier is entirely optional. An N-tiered program may have any number of tiers greater than or equal to 3.
Each layer is responsible for something specific. A four-tier program includes an application server layer.
The purpose of the application layer is to provide a convenient interface for users to interact with the system. This layer can be as simple as providing a web site where users can enter data or perform other tasks. The application layer may also include tools that help programmers build efficient software faster, such as IDEs (integrated development environments) and runtime environments.
The purpose of the business logic layer is to provide structure and security to your data store. This layer should not contain any user-facing information since this will be provided by the presentation layer. For example, if you were building a website that allowed people to make purchases through it, the business logic layer would ensure that only authorized users could make changes to certain parts of the system. It might do this by creating a unique identifier for each user, and checking this value whenever they attempted to make a change. If they didn't have permission, it would simply deny the request.
The purpose of the data access layer is to communicate with the back-end database.