Modello di dominio o servizio in un contesto MVC

2

Alla fine di questo articolo di Martin Fowler c'è questa frase:

In general, the more behavior you find in the services, the more likely you are to be robbing yourself of the benefits of a domain model. If all your logic is in services, you've robbed yourself blind.

Ciò che l'intero articolo, molto astratto, non ti dice è ciò che esattamente va nel livello di servizio?

Come ho capito, l'architettura sarebbe qualcosa del tipo:

Controller -> Service(s) -> Domain Object(s) -> Repository Object(s)

Quindi quale tipo di codice andrebbe nel livello di servizio se gli oggetti di dominio implementano tutta la logica aziendale? Quale sarebbe la differenza tra il controller e il livello di servizio se il servizio non implementa la business logic?

    
posta burzum 14.04.2018 - 12:38
fonte

1 risposta

1

Tutto dipende da dove vuoi fare il tuo accoppiamento e quanto vuoi essere libero. Inoltre, non è come uno di questi sono assoluti. Ma se vuoi essere super DDD a riguardo, considera attentamente che cos'è un servizio. I servizi "Edge" sono probabilmente il tuo punto di ingresso in un'app, ma poi hai i servizi "dominio" sotto quello.

EdgeService - > Oggetto dominio - > Servizio dominio - > Repository

Se i tuoi oggetti di dominio contengono una serie di servizi di dominio che implementano strategie per fare "verbi" su ogni oggetto del dominio, allora hai una sorta di schema regolare.

quindi il tuo servizio di bordo prenderebbe un blob di json, e ne farai una mucca quando chiamerai cow.save () la mucca trova il suo servizio di validazione, la convalida, forse chiama il moo service a muggire alla mandria e quindi utilizza un oggetto repository per inserirsi nel fienile.

Ovunque tu possa ottenere un oggetto mucca, puoi accedere a tutte le funzioni che presenta senza doversi preoccupare dei servizi di dominio collaborativi, ecc. L'interfaccia della mucca esporrà solo i metodi moo () e milk () che è tutto il l'agricoltore deve saperlo.

    
risposta data 16.04.2018 - 12:35
fonte