Understanding the responsibilities of the layers
Separating your business logic into application and domain layers allows you to create multiple applications on the same domain, as explained in the Dealing with multiple applications section of Chapter 9, Understanding Domain-Driven Design. Large systems typically have multiple applications and isolating the core domain from application-specific logic is a key principle to not mix the logic of different applications. Creating a separate application layer for each application makes it possible to design our application service methods best suited to different application requirements.
To successfully separate the application and domain layers, we should have a good understanding of each layer’s responsibilities. In the last three chapters, I have already mentioned these responsibilities while explaining the DDD building blocks. In the next sections, I will summarize these responsibilities to understand them better.