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.