2011-02-01 11 views
6

Sono confuso con quando utilizzare gli eventi di dominio e quando utilizzare la doppia spedizione. Udi ci incoraggia a utilizzare gli eventi di dominio per mantenere l'incapsulamento del modello e lontano dal design anemico, ma a mio parere gli eventi di dominio possono essere utilizzati solo dopo che l'operazione è stata eseguita o terminata bruscamente, non nel momento in cui l'operazione è in corso.Quando utilizzare evento dominio vs doppia spedizione

Ad esempio: mentre risolvo alcune logiche di business ho bisogno di accedere al repository, e quindi in base al valore, posso aumentare gli eventi di dominio. Ma la domanda è come il modello può accedere al repository al momento della risoluzione della logica aziendale, qui a mio avviso potremmo usare la doppia spedizione.

La prego di dirmi, le dichiarazioni sopra sono valide o no?

risposta

5

C'è stato un bel po 'di talking about this.

Io personalmente aggree con Szymon Pobiega:

La mia regola è usare dominio Eventi (come desscribed di Udi) come un modo preferito di CIO quando l'interazione può essere resa a senso unico. Se non può, uso la doppia spedizione.


Per esempio -: mentre risolvere alcuni logica di business ho bisogno di accedere a repository, e quindi in base al valore, posso generare eventi di dominio.

La tua radice aggregata dovrebbe contenere tutto il necessario per eseguire l'operazione. Non dovrebbe esserci bisogno di repository mentre si fa qualcosa. La radice aggregata disegna confini transazionali.

+0

ci sono casi in cui è necessario chiamare un servizio web esterno per ottenere un valore dall'interno di un'entità, come faresti? doppia spedizione? all'interno di un'entità, vuoto pubblico DoSomething (servizio IApplicationService) {... var rate = service.GetCurrentRate(); ....} – sawe

+0

D'accordo con @sawe Penso che non ci sia altra soluzione reale per quando si consuma un servizio web esterno? La doppia spedizione sembra l'unica opzione. –

Problemi correlati