Devo avere uno spazio dei nomi separato per i servizi di dominio?

1

Dire che ho uno spazio dei nomi come segue:

CompanyName.TechnologyName [.Feature] [. Design]

In questo modo: link

.Design è la AggregateRoot (ad esempio, BuyingAggregate). Questo spazio dei nomi contiene tutte le mie entità e oggetti valore .

Suppongo anche di introdurre un servizio di dominio , che utilizza entità e oggetti valore solo da BuyingAggregate . Questo servizio di dominio dovrebbe far parte dello spazio dei nomi BuyingAggregate o dovrebbe essere collocato in un altro spazio dei nomi?

Credo che dovrebbe essere inserito nello stesso spazio dei nomi, tuttavia, ricordo di aver letto una domanda in cui il consenso era qualcosa di diverso e non riesco a trovare la domanda - da qui la ragione della mia domanda.

    
posta w0051977 22.01.2018 - 14:51
fonte

2 risposte

1

Credo che il tuo sentimento sia giusto. I servizi di dominio devono stare con gli altri oggetti dominio nello stesso spazio dei nomi.

Sia nel DDD di Eric Evan che nei libri IDDD di Vaughn Vernon, usano modulo per descrivere lo spazio dei nomi.

Citazioni di Eric

Choose Modules that tell the story of the system and contain a cohesive set of concepts. This often yields low coupling Modules... Give Modules names that become part of Ubiquitous language.

Ovviamente, ottenere uno spazio dei nomi per i servizi di dominio non ha alcuno degli scopi indicati da Eric.

Inoltre, Vaughn Vernon usa la metafora del cassetto della cucina e degli armadi. Mettere tutti i servizi di dominio in un modulo separato e fuori dal modulo in cui si trovano altri oggetti di business sono una cattiva pratica. Come ha descritto Vaughn,

On the other hand, we would probably not organize our kitchen's contents using a mechanical approach, such as placing all sturdy things in one drawer and all things might break in a high cabinet. We wouldn't want to have to remember that our flower vases are kept with our fine teacups just because both are somewhat fragile.

Raggruppare tutti i servizi di dominio e inserirli in un sottomodulo che si trova all'interno del modulo originale non è male, ma di solito le persone semplicemente non si preoccupano.

    
risposta data 23.01.2018 - 12:38
fonte
0

Mi sto abituando a mettere i miei servizi di dominio il più vicino possibile all'AR / entità chiamante. Quindi direi di sì, metti i tuoi servizi di dominio sotto lo stesso spazio dei nomi del tuo aggregato.

Purtroppo non ho prove concrete sotto forma di articoli perché questo sarebbe il modo di procedere. Questo è il mio istinto che mi dice che questo è l'approccio giusto.

    
risposta data 23.01.2018 - 10:03
fonte

Leggi altre domande sui tag