Sto cercando di imparare DDD e sto avendo qualche problema con i servizi di infrastruttura.
In effetti, capisco a cosa mirano, ma non vedo dove si inseriscono all'interno della mia applicazione.
In realtà, sto avendo le seguenti cose
- Un servizio di applicazione (API REST)
- Alcuni servizi di dominio (gestiti con Pattern di specifica)
- Alcuni servizi di infrastruttura (archivi e e-mail mittente)
Domanda 1 Mi chiedevo se fosse il ruolo del servizio di dominio da utilizzare (ovvero i servizi di infrastruttura inseriti nei servizi di dominio), qualcosa di simile (in un modo molto minimalista):
class UserDomainService {
constructor (userRepository, emailService) {
this.userRepository = userRepository
this.emailService = emailService
}
saveUser (user) {
/** Apply some business rules here ...*/
const user = this.userRepository.save(user)
this.emailService.send('New user added : ' + user.firstName)
}
}
O dovrebbe essere il ruolo del servizio Applicazione, in questo modo:
class ApplicationService {
constructor (userDomainService, userRepository, emailService) {
this.userDomainService = userDomainService
this.userRepository = userRepository
this.emailService = emailService
}
postUser (user) {
if (this.userDomainService.manageSomeRules(user)) {
this.userRepository.save(user)
this.emailService.send('New user added : ' + user.firstName)
return user
}
return new RuleNotSatisfied()
}
}
Domanda 2
Chi è responsabile della conversione dell'utente ricevuto, dagli endpoint POST (API REST), a una buona entità?
MODIFICA sulla domanda 2: Che tipo di servizio può convertire Entity in DTO e viceversa? Dove dovrei metterli?