Ho passato gli ultimi giorni a studiare il design guidato da domini e a provare ad applicarlo a un progetto attuale. Ho scomposto il dominio del problema nei componenti logici canonici: dominio, infrastruttura e presentazione. Avendo completato un primo passaggio, ho fatto un passo indietro e mi sono reso conto che l'architettura che ho creato ha comportato praticamente tutta la logica aziendale contenuta nei servizi applicativi, che è il segno rivelatore di modello di dominio anemico odore di codice. Dopo un'ulteriore considerazione, la progettazione basata sul dominio potrebbe non essere la soluzione corretta per la mia applicazione, e anche se lo fosse, dato il numero limitato di regole di business logic nella mia applicazione, l'overhead di stratificazione potrebbe non valerne la pena . Dato che ho scritto solo UML e codice psuedo, non ho investito troppo tempo e sforzi, ma vorrei sfruttare ciò che posso se è possibile.
La mia architettura consiste di 4 componenti fisici:
- Il progetto "dominio": astrazioni e metodi CRUD per il tipo di dati che uso
- Il progetto "infrastucture": la rappresentazione logica e i metodi da eseguire sui dati
- Il progetto "presentazione": l'interfaccia utente (WinForms o WPF)
- Il progetto "servizi": coordina il dominio e gli oggetti dell'infrastruttura in base alle regole aziendali
Se dovessi utilizzare i componenti come progettato in architettura multilivello , il mio livello di presentazione manterrebbe solo riferimenti a 3 o 4 servizi per gestire tutte le funzionalità dell'applicazione. È un approccio valido?