Presentazione VS Livello di applicazione in DDD

8

Ho difficoltà a tracciare una linea chiara tra il livello Presentazione e Applicazione in Domain Driven Design.

Dove vanno i controllori, le viste, i layout, i file Javascript e CSS?

Si trova nell'applicazione o nel livello Presentazione?

E se vanno insieme tutti nello stesso livello, cosa contiene l'altro? È vuoto?

    
posta Matthieu Napoli 24.12.2012 - 01:55
fonte

3 risposte

6

Solo perché qualcuno creato e denominato "Application Layer" e "Presentation Layer" non significa che l'applicazione dovrebbe averli. Dovresti creare i layer DOPO che hai creato una notevole quantità di codice che hai raggruppato e vuoi dare un nome a questo gruppo per motivi di comunicazione tra gli sviluppatori e la chiarezza del codice.

Dal punto di DDD. Application Layer è tutto ciò che non è un livello Dominio. Che include la logica applicativa, la presentazione e i servizi applicativi.

    
risposta data 24.12.2012 - 09:30
fonte
9

C'è una grande differenza tra il livello dell'applicazione e il livello di presentazione da un punto di vista DDD.

Sebbene il DDD sia incentrato su come modellare il dominio usando i blocchi costitutivi DDD e concetti come contesti limitati, linguaggio Ubiquitous e così via, è ancora vitale identificare e separare chiaramente i vari livelli nella tua app.

L'architettura gioca un ruolo importante nell'implementazione di un'app DDD di successo. Un'architettura famosa che ha guadagnato molto hype ultimamente è l'architettura della cipolla:

InquestodesignillivelloUI/Presentazioneeillivellodell'applicazionesonochiaramenteseparati.L'unionedei2insiemeintroduceunaccoppiamentostrettotra2stratichehannochiarepreoccupazionieresponsabilitàseparate.

IllivelloPresentazionedovrebbeospitaresololalogicadipresentazione.EvitaleSmartUIchesannotroppo.QuestoospitaprincipalmenteicontrollerelevistediMVColtreaCSS,JS,modelli,modulietuttociòcheriguardaglioggettidirispostaerichiesta.

Leazioniemessetramitelapresentazionesonodelegateallivellodell'applicazionetramiteicomandi.Illivellodell'applicazionecontienelalogicadell'applicazione.Normalmentesiassociaauncasod'uso.ContieneCOSAdovrebbefareilsistemapersoddisfareuncasod'uso.Untipicoservizioapplicativochiederàaunrepositorydirestituireun'aggregazioneequindidirichiamareun'azionesuquell'aggregato.

Daiun'occhiataalprogettodiesempioda IDDD di Vaughn Vernon

    
risposta data 01.10.2014 - 17:44
fonte
1

Domain Driven Design non ha nulla a che fare con il livello Presentazione o il livello applicazione. DDD è una metodologia il cui obiettivo principale è il livello Dominio. In altre parole, DDD non impone alcun vincolo rispetto a nessun altro livello ad eccezione del livello Dominio e anche la tua domanda potrebbe essere posta nel contesto di qualsiasi altra metodologia.

Detto questo, è molto comune usare un'architettura a quattro livelli per le applicazioni DDD. Ecco un esempio di una di queste applicazioni che mostra i livelli e la loro destinazione d'uso: Architettura DDDSample . Quindi, se scegli di utilizzare questa architettura, le tue viste e i tuoi layout andrebbero al livello Interfaces e i controller, se indipendenti dall'interfaccia, andrebbero al livello Application.

Potresti anche scegliere qualsiasi altro tipo di architettura, come ho detto che DDD non impone vincoli. Ci sono molti framework MVC là fuori che hanno strutture diverse e potrebbero anche essere usati per le applicazioni DDD. Quindi, ovviamente, inserirai le tue visualizzazioni e i tuoi layout di conseguenza.

    
risposta data 24.12.2012 - 09:33
fonte

Leggi altre domande sui tag