Il pattern del 2009, per noi sviluppatori Micorosoft, è stato senza dubbio il “Model-View-ViewModel”. L’abbiamo usato con Silverlight, con WPF, qualcuno con ASP.NET MVC ha fatto qualcosa di simile e perfino gli sfortunati che ancora lavorano con WindowsForms hanno provato ad utilizzarlo.
Costruire appplicazioni che usano questo pattern porta spesso ad avere un domain model anemico perchè si tende a spalmare un po’ di logica nei VM e un po’ nei servizi. Di questo ne abbiamo parlato anche sulla ML di ugialt.net.
A mio avviso, se all’inizio questo non è un problema, man mano che l’applicazione cresce si sente la mancanza di un po’ di logica sugli oggetti del DM e ci si ritrova con piccole duplicazioni di codice abbastanza puzzolenti.
Quindi, finchè l’applicazione ha dimensioni medio-piccole possiamo sopravvivere utilizzando i ViewModel++ e usando dei DTO (ossia il domain model anemico) per passare le informazioni dai servizi (model) alle View (anche se mi chiedo perchè usare dei DTO quando potrei far riempire ai servizi direttamente il VM). Se l’applicazione cresce è però conveniente estrapolare la logica dai VM e portarla negli oggetti di dominio.
Sto facendo del refactoring su un’applicazione nata “piccola” ma che sta crescendo bene. Vedremo se i risultati saranno buoni dopo questa rifattorizzazione.