Multitier architecture

Short description: Computing system architecture

Several terms redirect here. For other uses, see Three-tier system (disambiguation), Tier 1 (disambiguation), Tier 2 (disambiguation), Tier 3 (disambiguation) and Tier 4 (disambiguation).

Overview of a three-tier application.

In software engineering, multitier architecture (often referred to as n-tier architecture) is a client–server architecture in which various levels of software architecture are physically separated. The most common use of multitier architecture is the three-tier architecture, which separates presentation, application processing and data management functions, such as in the case of Cisco's hierarchical internetworking model. Other tiers of separation may include the service layer, business layer, data access layer, and persistence layer.

N-tier application architecture provides a model by which developers can modify or add to a specific tier in the software development process instead of reworking the entire application. It is commonly used for small and simple applications because of its simplicity and low cost.[1][2] In web development, three-tier architecture is often used to describe websites that comprise a front-end web server serving static content and some cached dynamic content, a middle dynamic content processing and generation application server, and a back-end database or data store.

In a strict layered system, each layer depends on the layer below it and can exist without the layers above it. In a relaxed layered system, a layer can also depend on all of the layers below it, creating additional couplings between layers.[3] Some multitier architectures use a hybrid approach so that some layers are strict while other layers are relaxed.[4][5] N-tier architecture may also be implemented with the model–view–presenter pattern.

The terms layer and tier are often used interchangeably, although layer is sometimes used to refer to a conceptual software logic structuring mechanism, while tier is used to refer to the physical hardware structuring mechanism for system infrastructure.[6][7] In this usage, a three-layer solution could be deployed on a single tier, as in the case of an some database-centric architectures called RDBMS-only architecture or in personal workstations.[8][9]

## Contents

* 1 Layers
* 1.1 Common layers
* 1.2 Three-tier architecture
* 1.2.1 Web development
* 1.3 Other considerations
* 2 Traceability
* 3 See also
* 4 References
* 5 External links

## Layers

### Common layers

In a logical multilayer architecture for an information system with an object-oriented design, the following four are the most common:[3]

* Presentation layer (a.k.a. UI layer, view layer, presentation tier in multitier architecture)
* Application layer (a.k.a. service layer[10][11] or GRASP Controller Layer [12])
* Business layer (a.k.a. business logic layer (BLL), domain logic layer)
* Data access layer (a.k.a. persistence layer, logging, networking, and other services which are required to support a particular business layer)

The more usual convention is that the application layer (or service layer) is considered a sublayer of the business layer, typically encapsulating the API definition surfacing the supported business functionality. The application/business layers can, in fact, be further subdivided to emphasize additional sublayers of distinct responsibility. For example, if the model–view–presenter pattern is used, the presenter sublayer might be used as an additional layer between the user interface layer and the business/application layer (as represented by the model sublayer). If the application architecture has no explicit distinction between the business layer and the presentation layer (i.e., the presentation layer is considered part of the business layer), then a traditional client-server (two-tier) model has been implemented.{{citation needed|date=February 2014} Some also identify a separate layer called the business infrastructure layer (BI), located between the business layer(s) and the infrastructure layer(s). It is also sometimes called the "low-level business layer" or the "business services layer". This layer is very general and can be used in several application tiers (e.g. a CurrencyConverter).[13]

The infrastructure layer can be partitioned into different levels (high-level or low-level technical services).[13] Developers often focus on the persistence (data access) capabilities of the infrastructure layer and therefore only talk about the persistence layer or the data access layer (instead of an infrastructure layer or technical services layer). In other words, the other kind of technical services is not always explicitly thought of as part of any particular layer. . The Data Access layer normally contains an object known as the Data Access Object (DAO).

In a strict layered system, each layer depends on the layer below it and can exist without the layers above it. In a relaxed layered system, a layer can also depend on all of the layers below it and not merely the layer directly below it.[3] The relaxed layered system has more couplings and is more difficult to change. Some multitier architectures use a hybrid approach so that some layers are strict while other layers are relaxed.[4][5]

### Three-tier architecture

Three-tier architecture is a client-server software architecture pattern in which the user interface (presentation), functional process logic ("business rules"), computer data storage and data access are developed and maintained as independent modules, most often on separate platforms.[14] It was developed by John J. Donovan in Open Environment Corporation (OEC), a tools company he founded in Cambridge, Massachusetts. .

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 multitiered itself (in which case the overall architecture is called an "n-tier architecture").[15]

* 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 which it puts out the results to the browser/client tier and all other tiers in the network. It is a layer that users can access directly (such as a web page, or an operating system's GUI).
* Application tier (business logic, logic tier, or middle tier)
* The logical tier is pulled out from the presentation tier and, as its layer, controls an application’s functionality by performing detailed processing.
* Data tier
* The data tier includes the data persistence mechanisms (database servers, file shares, etc.) and the data access layer that encapsulates the persistence mechanisms and exposes the data. The data access layer should provide an API to the application tier that exposes methods of managing the stored data without exposing or creating dependencies on the data storage mechanisms. Avoiding dependencies on the storage mechanisms allows for updates or changes without the application tier clients being affected by or even aware of the change. As with the separation of any tier, there are costs for implementation and often costs to performance in exchange for improved scalability and maintainability.

#### Web development

In the web development field, three-tier is often used to refer to websites, commonly electronic commerce websites, which are built using three tiers:

1. 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.
2. A middle dynamic content processing and generation level application server (e.g., Symfony, Spring, ASP.NET, Django, Rails, Node.js).
3. 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.

### Other considerations

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.

## Traceability

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" refers to a logical grouping of components which may or may not be physically located on one processing node.

## See also

* Abstraction layer
* Database-centric architecture
* Front-end and back-end
* Load balancing (computing)
* Monolithic application
* Open Services Architecture
* Rich web application
* Web application

## References

1. ↑ Richards, Mark (2020). Fundamentals of Software Architecture: An Engineering Approach (1st ed.). O'Reilly Media. ISBN 978-1492043454.
2. ↑ Richards, Mark (2022). Software Architecture Patterns. O'Reilly Media, Inc.. ISBN 9781098134273.
3. ↑ 3.0 3.1 3.2 Buschmann, Frank; Meunier, Regine; Rohnert, Hans; Sommerlad, Peter; Stal, Michael (1996-08). Pattern-Oriented Software Architecture, Volume 1, A System of Patterns. Wiley, August 1996. ISBN 978-0-471-95869-7. Retrieved from http://www.wiley.com/WileyCDA/WileyTitle/productCd-0471958697.html.
4. ↑ 4.0 4.1 Richards, Mark (March 3, 2020). Fundamentals of Software Architecture: An Engineering Approach (1st ed.). O'Reilly Media. ISBN 978-1492043454.
5. ↑ 5.0 5.1 Richards, Mark. Software Architecture Patterns. O'Reilly Media, Inc.
6. ↑ Deployment Patterns (Microsoft Enterprise Architecture, Patterns, and Practices)
7. ↑ Fowler, Martin "Patterns of Enterprise Application Architecture" (2002). Addison Wesley.
8. ↑ Deployment Patterns (Microsoft Enterprise Architecture, Patterns, and Practices)
9. ↑ Vicente, Alfonso; Etcheverry, Lorena; Sabiguero, Ariel (2021). "An RDBMS-only architecture for web applications". 2021 XLVII Latin American Computing Conference (CLEI). pp. 1–9. doi:10.1109/CLEI53233.2021.9640017. ISBN 978-1-6654-9503-5.
10. ↑ Martin Fowler's Service Layer
11. ↑ Martin Fowler explains that Service Layer is the same as Application Layer
12. ↑ Comparison/discussion of the GRASP Controller Layer vs. Application/Service Layer
13. ↑ 13.0 13.1 Applying UML and Patterns, 3rd edition, page 203 ISBN 0-13-148906-2
14. ↑ 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)
15. ↑ This article is based on material taken from three-tier at the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.

## External links

* Linux journal, Three Tier Architecture
* Microsoft Application Architecture Guide

* v
* t
* e

Software design patterns

Creational|

* Abstract factory
* Builder
* Dependency injection
* Factory method
* Lazy initialization
* Multiton
* Object pool
* Prototype
* RAII
* Singleton

Structural|

* Adapter
* Bridge
* Composite
* Decorator
* Delegation
* Facade
* Flyweight
* Front controller
* Marker interface
* Module
* Proxy
* Twin

Behavioral|

* Blackboard
* Chain of responsibility
* Command
* Interpreter
* Iterator
* Mediator
* Memento
* Null object
* Observer
* Servant
* Specification
* State
* Strategy
* Template method
* Visitor

Functional|

* Closure
* Currying
* Function composition
* Functor
* Monad
* Generator

Concurrency|

* Active object
* Actor
* Balking
* Barrier
* Binding properties
* Coroutine
* Compute kernel
* Double-checked locking
* Event-based asynchronous
* Fiber
* Futex
* Futures and promises
* Guarded suspension
* Immutable object
* Join
* Lock
* Messaging
* Monitor
* Nuclear
* Proactor
* Reactor
* Read write lock
* Scheduler
* Thread pool
* Thread-local storage

Architectural|

* ADR
* Active record
* Broker
* Client–server
* CBD
* DAO
* DTO
* DDD
* ECB
* ECS
* EDA
* Front controller
* Identity map
* Interceptor
* Implicit invocation
* Inversion of control
* Model 2
* MOM
* Microservices
* MVA
* MVC
* MVP
* MVVM
* Monolithic
* Multitier
* Naked objects
* ORB
* P2P
* Publish–subscribe
* PAC
* REST
* SOA
* Service locator
* SN
* SBA
* Specification

Cloud
Distributed|

* Ambassador
* Anti-Corruption Layer
* Bulkhead
* Cache-Aside
* Circuit Breaker
* CQRS
* Compensating Transaction
* Competing Consumers
* Compute Resource Consolidation
* Event Sourcing
* External Configuration Store
* Federated Identity
* Gatekeeper
* Index Table
* Leader Election
* MapReduce
* Materialized View
* Pipes
* Filters
* Priority Queue
* Publisher-Subscriber
* Queue-Based Load Leveling
* Retry
* Scheduler Agent Supervisor
* Sharding
* Sidecar
* Strangler
* Throttling
* Valet Key

Other|

* Business delegate
* Composite entity
* Intercepting filter
* Lazy loading
* Mangler
* Mock object
* Type tunnel
* Method chaining

Books|

* Design Patterns
* Enterprise Integration Patterns

People|

* Christopher Alexander
* Erich Gamma
* Ralph Johnson
* John Vlissides
* Grady Booch
* Kent Beck
* Ward Cunningham
* Martin Fowler
* Robert Martin
* Jim Coplien
* Douglas Schmidt
* Linda Rising

Communities|

* The Hillside Group
* The Portland Pattern Repository

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Multitier architecture. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Multitier_architecture&oldid=3989266"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template