
It's what your application actually does. The service layer (sometimes called the business layer) deals with the business rules and logic of your application. This way, you can keep the same business functionality and expose it in different ways to the user. So the application layer converts messages back and forward to decouple the presentation from the business code.

The business logic of your application shouldn't have to deal with HTTP, or HTML, for example, even though that's how you communicate with the user. The user might interact with a mobile app, or a web page, which send requests over HTTP. The application layer is a thin layer that offers services to the presentation layer, maybe some coordination for the interactions with the user, and has the important role of decoupling the presentation technologies from the rest of the application. The presentation layer is usually tightly coupled to some presentation technologies like HTML, CSS, JavaScript and ways of communicating with the user, like HTTP, WebSockets, etc. Your application might have multiple presentation layers, for the web, for mobile applications, desktop applications, etc. It's the part the users see and can directly interact with. The presentation layer contains all the GUI elements, the things that handle presentation formatting, all the necessary command objects and actions the user can invoke on the application, etc. So, for your question, I think you will have this setup: Presentation layer WebAPI Application layerĮDIT: You will often find applications with the following layers: Presentation layer Application layer Service layer Persistence layer Does your Application layer handle HTTP requests directly? I'll assume it most likely does not, but is a library that the WebAPI calls. Think about it, why do you have the WebAPI if you will connect the presentation layer directly to your application service project? Also, think about what kind of messages the WebAPI and the Application layer are handling. I have a Web API project which has all the Web API methods for CRUD and I have another Application Service project will store application logic However, I'll provide an answer based on your definition: As its name says, it controls application logic, how the user interacts with the GUI, controlling screen navigation, etc.

An application layer is usually something that sits between the presentation layer and the business logic, translating GUI actions into/from messages understood by the objects in the business logic (for example, HTTP requests into method calls, and method results into HTTP responses). As Robert Harvey mentioned in his comment, a web API is part of the application layer.
