Non ho esperienza in Akka, quindi le mie supposizioni potrebbero essere completamente sbagliate.
Per quanto ho capito, Aggregate Root può gestire le sue entità semplicemente mantenendo il loro stato internamente e ripristinandolo in fase di recupero o creando attori persistenti figli che rappresentano entità.
Quest'ultimo caso richiede più comunicazione tra gli attori perché root ha bisogno di interrogare le sue entità per verificare gli invarianti, quindi preferisco il precedente approccio.
Ok allora. Parliamo della passivazione dell'intero aggregato.
L'unico vantaggio è l'abbassamento della pressione della memoria, tuttavia la conseguenza immediata è che posso fare riferimento all'aggregato solo tramite il suo id (indirizzo). Ma cosa succede se non ho un modello di lettura separato? Come posso creare query complesse come get all disabled users
? Se alcuni (in realtà la maggior parte) degli attori utente non sono in memoria, non ascoltano i messaggi e non possono rispondere. In questo caso è semplicemente impossibile enumerare tutti gli attori bambini. ( Akka in Action contiene molti esempi di query.)
Inoltre, anche se il sistema avesse un livello di query con un archivio di lettura, non ho voglia di usarlo in un livello di comando per eseguire convalide di aggregati incrociati.
In altre parole, passivation
sembra portare più problemi che benefici.
Ho ragione o mi manca qualcosa di importante qui?