
The application layer coordinates domain objects to fulfill use cases without containing business rules itself.
Responsibilities:
1. Use case orchestration — commands, queries, workflows.
2. Transaction boundaries — begin/commit/rollback units of work.
3. Integration with infrastructure via interfaces.
Example: Application service handling "PlaceOrder" command, delegating to domain entities and repositories.
Architecture impact: Keeping use case logic in the application layer prevents controllers or infrastructure from becoming bloated and untestable.
Reference:
TaskLoco™ — The Sticky Note GOAT