aymanmsh started a new conversation+100 XP
2w ago
I’m currently learning Domain-Driven Design (DDD) and trying to properly structure the Application Layer in a Laravel-based project.
I keep seeing different terms used, sometimes interchangeably, such as:
- Use Case
- Action
- Application Service
From my understanding, they all seem to represent “application logic” that orchestrates domain behavior, but I’m struggling to clearly distinguish their responsibilities and when to use each one.
For example, in a typical authentication flow (like login or register):
-
Should I create a
LoginUseCase,LoginAction, orLoginService? -
Are these just naming conventions, or do they have real architectural differences?
-
Is it correct that:
- A Use Case represents a single business interaction?
- An Application Service coordinates domain objects and infrastructure?
- An Action is just a Laravel-style way of structuring a single task?
Also, how do these concepts relate in practice:
- Should a Use Case call an Application Service?
- Or is an Application Service itself the Use Case?
- Where do DTOs and domain services fit in this structure?
I’m looking for a clear explanation with practical examples (preferably in Laravel or PHP), especially from people who have applied DDD in real projects.
Thanks in advance!