||It has been suggested that Multilayered architecture be merged into this article. (Discuss) Proposed since July 2013.|
|This article needs additional citations for verification. (January 2008)|
In software engineering, multi-tier architecture (often referred to as n-tier architecture) is a client–server architecture in which presentation, application processing, and data management functions are logically separated. For example, an application that uses middleware to service data requests between a user and a database employs multi-tier architecture. The most widespread use of multi-tier architecture is the three-tier architecture.
N-tier application architecture provides a model by which developers can create flexible and reusable applications. By segregating an application into tiers, developers acquire the option of modifying or adding a specific layer, instead of reworking the entire application. A Three-tier architecture is typically composed of a presentation tier, a business or data access tier, and a data tier.
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. 
Three-tier architecture is a client–server architecture in which the user interface, functional process logic ("business rules"), computer data storage and data access are developed and maintained as independent modules, most often on separate platforms. It was developed by John J. Donovan in Open Environment Corporation (OEC), a tools company he founded in Cambridge, Massachusetts.
The three-tier model is a software architecture pattern.
Apart from the usual advantages of modular software with well-defined interfaces, the three-tier architecture is intended to allow any of the three tiers to be upgraded or replaced independently in response to changes in requirements or technology. For example, a change of operating system in the presentation tier would only affect the user interface code.
Typically, the user interface runs on a desktop PC or workstation and uses a standard graphical user interface, functional process logic that may consist of one or more separate modules running on a workstation or application server, and an RDBMS on a database server or mainframe that contains the computer data storage logic. The middle tier may be multi-tiered itself (in which case the overall architecture is called an "n-tier architecture").
Three-tier architecture has the following three tiers:
- Presentation tier
- This is the topmost level of the application. The presentation tier displays information related to such services as browsing merchandise, purchasing and shopping cart contents. It communicates with other tiers by outputting results to the browser/client tier and all other tiers in the network. (In simple terms it is a layer which users can access directly such as a web page, or an operating systems GUI)
- Application tier (business logic, logic tier, data access tier, or middle tier)
- The logical tier is pulled out from the presentation tier and, as its own layer, it controls an application’s functionality by performing detailed processing.
- Data tier
- This tier consists of database servers. Here information is stored and retrieved. This tier keeps data neutral and independent from application servers or business logic. Giving data its own tier also improves scalability and performance.
Comparison with the MVC architecture
|This section does not cite any references or sources. (December 2013)|
Three-tier architecture and model-view-controller are both separation of concerns design patterns. Unlike multitier architecture, MVC, and the similar model-view-presenter (MVP) pattern, apply exclusively to the presentation layer.
In an MVC design, the view sends updates to the controller, the controller updates the model, and the model updates the view. In three-tier architecture, the client tier never communicates directly with the data tier; all communication must pass through the middle tier.
Three-tier architecture emerged in the 1990s from observations of distributed systems (e.g., web applications) in which the client, middleware, and data tiers ran on physically separate platforms. MVC comes from the previous decade (by work at Xerox PARC in the late 1970s and early 1980s) and is based on observations of applications that ran on a single graphical workstation; MVC was applied to distributed applications later in its history (see Model 2).
Web development usage
- A front-end web server serving static content, and potentially some cached dynamic content. In web based application, Front End is the content rendered by the browser. The content may be static or generated dynamically.
- A middle dynamic content processing and generation level application server, for example Ruby on Rails, Java EE, ASP.NET, PHP, ColdFusion, Perl platform.
- A back-end database or data store, comprising both data sets and the database management system software that manages and provides access to the data.
Data transfer between tiers is part of the architecture. Protocols involved may include one or more of SNMP, CORBA, Java RMI, .NET Remoting, Windows Communication Foundation, sockets, UDP, web services or other standard or proprietary protocols. Often middleware is used to connect the separate tiers. Separate tiers often (but not necessarily) run on separate physical servers, and each tier may itself run on a cluster.
The end-to-end traceability of data flows through n-tier systems is a challenging task which becomes more important when systems increase in complexity. The Application Response Measurement defines concepts and APIs for measuring performance and correlating transactions between tiers. Generally, the term "tiers" is used to describe physical distribution of components of a system on separate servers, computers, or networks (processing nodes). A three-tier architecture then will have three processing nodes. The term "layers" refer to a logical grouping of components which may or may not be physically located on one processing node.
- Client–server model
- Database-centric architecture
- Front-end and back-end
- Hierarchical internetworking model
- Open Services Architecture
- Rich Internet application
- Service layer
- Web application
- Load balancing (computing)
- Multilayered architecture
- Linux journal, Three Tier Architecture
- Microsoft Application Architecture Guide
- Example of free 3-tier system
- Deployment Patterns (Microsoft Enterprise Architecture, Patterns, and Practices)
- Fowler, Martin "Patterns of Enterprise Application Architecture" (2002). Addison Wesley.
- Eckerson, Wayne W. "Three Tier Client/Server Architecture: Achieving Scalability, Performance, and Efficiency in Client Server Applications." Open Information Systems 10, 1 (January 1995): 3(20)