Come si relaziona questo tipo di applicazione e DDD?

5

In Domain-Driven Design l'applicazione è divisa, come ho capito, in quattro livelli:

  • Presentation Layer
  • Livello applicazione
  • Domain Layer
  • Livello infrastruttura

Lo capisco bene, ad esempio, quando sviluppi applicazioni desktop con, ad esempio, WPF su Windows.

Ora, c'è un altro tipo di applicazione che personalmente trovo molto importante oggi. Non so se c'è ancora un termine tecnico per questo tipo di applicazione (probabilmente c'è ma non l'ho ancora trovato), ma lo descriverò.

Abbiamo un server che ospita un'applicazione N-tier con un'API Web RESTful in cui i clienti possono effettuare richieste. Gli altri livelli sono per l'elaborazione in background e la comunicazione con i dispositivi, l'invio di notifiche e così via. Questo tipo di architettura è simile a Microsoft Azure Cloud Services, ad esempio, dove possiamo ospitare più ruoli Web (l'API Web, ad esempio) e più ruoli di lavoro (che eseguono l'elaborazione in background).

Ora non riesco a vedere come posso metterlo in relazione con il tipo di divisione che DDD fa con un'applicazione.

Il livello dominio è ovviamente sul server e le richieste all'API e l'elaborazione in background hanno effetti collaterali sul modello di dominio. Il livello dell'infrastruttura si trova anche sul server.

A mio parere, il livello dell'applicazione è l'intera applicazione N-tier (nel caso Azure, composto da tutti i ruoli Web e di lavoro).

Ma alla fine, non c'è presentazione. Questa cosa è un'API, è costruita per far fronte a tonnellate di dispositivi. Browser Web, smartphone, tablet e così via.

Sto cercando di trarre vantaggio da DDD su questo tipo di applicazione, ma non riesco a vedere come entrambi si riferiscono. In che modo si relaziona con questo tipo di applicazione e DDD e in che modo si può beneficiare del DDD in questi scenari?

    
posta user1620696 18.02.2015 - 19:25
fonte

1 risposta

3

Non penso che si riferiscano necessariamente a tutti. DDD riguarda la progettazione di software dal punto di vista del dominio aziendale, utilizzando un linguaggio onnipresente che sia tu che i tuoi clienti comprendete. Molti sviluppatori di software lo scambiano per una tecnica di programmazione, ma è più un modo di organizzare potenziali strutture software (ad esempio classi) attorno a concetti di dominio aziendale. I livelli software non hanno molto a che fare con questo, in quanto sono solo un'astrazione diversa (ma a volte complementare).

    
risposta data 20.02.2015 - 01:53
fonte

Leggi altre domande sui tag