Quanta responsabilità dovrebbe mio repository / servizio di avere?
-
21-09-2019 - |
Domanda
Ho i seguenti oggetti:
Person <- Contatto -> ClientsPerson <- Client
Sto utilizzando il modello repository con un livello di servizio. Ma già qui, essendo un perfezionista, Mi sono perso!
Ho anche un PersonService, ClientService e sono abbastanza sicuro che ho bisogno di avere un ContactService che dovrebbe chiamare la personService.Add (persona) e clientsPersonService.Add (client) -? O
Il compito è quello di aggiungere un contatto. Il contatto avrebbe un oggetto Person legati, e un oggetto ClientsPerson. E che avrebbe ClientsPerson OFC. dispone di un client.
Dove dovrebbero i diversi lavori andare? Ho sentito che è male per chiamare un servizio / repository da uno all'altro.
Soluzione
Questa risposta dipende dalla vostra ORM e come esso cascate salva. Si assume non si utilizza un ORM che cascate modifiche.
Il gestore dei servizi metodi strato dovrebbero riflettere le azioni che è necessario per realizzare da un senso degli affari. Spesso trovo che le mie azioni di controllo corrispondono molto da vicino a metodi di servizio.
Nel tuo esempio, avrei il Build Service e si riferiscono ai soggetti necessari e parlare con pronti contro termine per salvarli; in questo modo se c'è un problema lungo il modo di parlare ai pronti contro termine può rotolare in avanti e fare tutto ciò che la pulizia è necessaria.
Repos dovrebbero essere relativamente muto. I servizi dovrebbero fare lo (qualcosa di simile blocco NHib, e forse anche allora) rapporto e attività di lavoro.