Application Layer (Software Architecture)
The Application Layer is an abstract functional division in a Layered Architecture that serves as the interface between the client and layers beneath the Application Layer, primarily the software system's Domain and Infrastructure Layer.
An Application Layer mainly digests and validates the client's input, then carries the input out as commands to the sub-systems and Services existing in the lower layers of the system, such as the Domain Layer often supported by an Infrastructure Layer.
If the results of a particular operation are returned to the client, the Application Layer can apply additional transformation to it, into a format the client understands.
The Application Layer is not to be confused with the User Interface: Well designed Application Layers are agnostic of the interface that is used for generating inputs, e.g. an application server implementing a REST Api is unaware of the client's nature as long as the client conforms to the required protocol.
In a Layered Architecture, the user interface would be part of the Client Layer.
In a client-server application, the Application Layer would consist of Controllers that receive input (
HTTP methods /
POST-parameters) and delegate to various services in the layer beneath. Responses are then transformed into Views that are returned to the client. Here, View is an abstract notion: A View is data formatted to a particular structure, such as
The Application Layer is often the thinnest layer in a Layered Architecture.