In che misura andare con Domain Driven Design?

7

Ho letto un po 'sulla progettazione basata su domini e sull'uso di un ricco modello di dominio, come descritto da Martin Fowler, e ho deciso di metterlo in pratica in un progetto personale, invece di utilizzare script di transazione .

Tutto è andato bene fino all'avvio dell'implementazione dell'interfaccia utente. Il fatto è che alcune viste useranno componenti ricchi di cui sono supportati modelli insoliti e, quindi, devo trasformare il modello di dominio in ciò che viene usato da quei componenti. E quella trasformazione è specialmente "complessa" nella porzione da view-to-domain, fino al punto che alcune logiche di business sono coinvolte.

Chi mi porta alla domanda: dove dovrei fare questi adattamenti? Finora ho le seguenti conclusioni:

  • Farlo nel livello di presentazione è buono perché, beh, se quel livello impone delle restrizioni nel suo modello, allora dovrebbe essere lui a gestirli. Ma è brutto perché ci sarà qualche perdita di business.
  • Se lo faccio sugli oggetti di servizio (controller, azioni, qualunque cosa), allora sarebbe buono perché non ci sarà alcuna modifica all'API del dominio solo a causa del livello di presentazione, ma è male perché poi io d hanno script di transazione, che non sono designati.
  • Infine, se lo faccio sul modello di dominio, non ci sarebbe alcuna perdita di logica aziendale. Ma in futuro potrei aspettarmi un'esplosione dell'API in una serie di metodi progettati solo per gestire quel modello di visualizzazione < - > adattamento del modello di dominio.

Spero di potermi chiarire su questo.

    
posta synti 30.06.2013 - 19:49
fonte

2 risposte

3

Se la "logica aziendale" che hai menzionato è rilevante solo per una visualizzazione, potrebbe non essere "logica aziendale" come la chiami tu. Potrebbe semplicemente essere una logica di presentazione, avere un'istruzione if da qualche parte non significa immediatamente che si tratta della logica aziendale.

Compilazione di una vista o modifica di un modello Di solito faccio parte del controller, a volte lascio che la vista o il modello di modifica si popolino passando un oggetto di dominio. Se possibile, preferisco creare mapping AutoMapper per fare la maggior parte del lavoro.

Se è davvero una logica aziendale, forse il tuo modello di dominio ha bisogno di miglioramenti. Questo non è raro, se una vista o un modello di modifica differisce molto dai concetti del dominio, forse c'è qualcosa di sospetto nel modello di dominio.

    
risposta data 04.07.2013 - 16:28
fonte
0

In DDD (oltre a Onion Architecture), View è una preoccupazione infrastrutturale e deve essere trattato come tale. Significa che, probabilmente, avrai bisogno di un livello anti-corruzione tra i domini e la vista, in modo da garantire che il dominio non venga inquinato dalle esigenze di Views.

Potrebbe essere necessario modellare come esporre i dati nella modellazione, ma in modo agnostico. Pertanto, se si espone il dominio in un'interfaccia Web o un'interfaccia RESTful, non dovrebbe essere importante, qualitativamente.

    
risposta data 14.07.2014 - 16:13
fonte

Leggi altre domande sui tag