Ho un requisito aziendale che ogni account visualizzato deve essere registrato. Sto cercando di capire dove questo requisito dovrebbe essere nel mio codice. Questo è un evento di tipo query e non richiede di passare attraverso l'entità stessa come la maggior parte degli eventi del mio dominio.
Devo incapsulare tutti i miei repository in servizi di dominio che il servizio dell'applicazione chiamerà?
public class AccountService
{
private readonly IAccountRepository repository;
private readonly IDomainEventDispatcher dispatcher;
public AccountService(IAccountRepository repository, IDomainEventDispatcher dispatcher)
{
this.repository = repository;
this.dispatcher = dispatcher;
}
public Account ViewAccount(Guid Id)
{
var account = repository.GetById(Id);
dispatcher.Raise(new AccountViewedEvent(account));
return account;
}
}
C'è un altro modo per gestirlo?
Sembra che molti livelli richiedano che un servizio applicativo chiami un servizio di dominio che chiama un repository.