What's the difference between application layer and business logic layer?

What's the difference between application layer and business logic layer? I kind of understand that business layer provides business specific services and application layer couples business services and provides services to the end user (Web Service, UI, etc). Am I right?


Solution 1:

That sounds about correct.

The business layer implements the Domain Model in a boundary-technology-neutral way. In other words, it doesn't depend on any particular UI or service interface-related technology, such as web libraries or windowing APIs. You should be able to consume the business layer from any type of application - web, rich client, web service, etc.

The application layer bridges the gap between the business layer and the boundary technology.

Solution 2:

To summarize:

  • The application layer consists of those elements that are specific to this application. So that would contain the UI, back-end processing for the UI, and any bindings between the application and your business logic layer. In a perfect world, this layer would not contain any logic of the business domain.

  • The business logic layer (BLL) contains logic specific to the business domain. Also, if you are going to create a separate BLL, this layer should contain logic that could be used by other applications as well as this one. For example, a set of web services exposing a well-defined API. This de-couples the BLL from your application and allows you the flexibility to build other applications on top of it in the future.