In un progetto multilivello con livello di dominio (DL)/Business (servizio) Layer (BL)/Presentation Layer (PL), qual è l'approccio migliore per fornire entità al livello di presentazione?Dominio vs DTO vs ViewModel - Come e quando usarli?
DO => Domain Object;
DTO = Domain Transfer Object;
VM => View Model;
V => View;
Opzione 1:
DL => DO => BL => DTO => PL => VM => V
Questa opzione sembra essere la migliore pratica, ma sembra anche pesante da mantenere.
Opzione 2:
DL => DO => BL => DTO => PL => V
Questa opzione non sembra molto buona pratica, ma come DTO sono quasi identiche al VM, si può passare direttamente alla vista ed è meno doloroso da implementare e mantenere.
Questa opzione è anche affidabile per più layout, ad esempio per dispositivi mobili Potrei aver bisogno di meno informazioni dal BL, quindi mi occorrerà una diversa VM per questo particolare layout?
Grazie per la risposta, quindi stai dicendo che ogni Dto dovrebbe avere la propria VM in un punto di vista della manutenzione? – Patrick
È possibile utilizzare la Dto direttamente in alcune viste di amministrazione o quando viene utilizzata solo in un unico punto. Creazione dei modelli di viste una volta che si vede la necessità di usare dto in più di una posizione. D'altra parte, se si sta andando con il dominio, l'approccio di Dto, Viewmodel non ci vuole molto tempo per creare gli oggetti extra (con automapper tra) e risparmia in qualsiasi momento cercando di decidere quale usare. Rende più chiaro per chiunque altro sul progetto sapere cosa fare. IMHO, questo potrebbe risparmiare più tempo a lungo termine e rendere il tuo codice un po 'mantenibile. Avere solo viewmodels in viste aiuta in diversi modi ... – dove
come sempre, dipende dal tuo dominio, squadra e dimensione del progetto. – dove