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.