I servizi stateless e gli oggetti di dominio anemico sul lato server. Il modello tra server e client è POCO DTO. Il client dovrebbe diventare MVVM. Il modello potrebbe essere un grafico di circa 100 istanze di 20 classi diverse. L'editor client contiene diverse pagine di tabulazione tutte collegate in diretta a model/viewmodel.Pattern MVVM: aggiornamenti di ViewModel dopo il round trip del modello Model
Il mio problema è come propagare le modifiche dopo il round trip del server. È abbastanza semplice propagare le modifiche da ViewModel a DTO. Per il ritorno sarebbe possibile gettare via il vecchio DTO e rimpiazzarlo con uno nuovo, ma causerà molto ridisegno per liste/DataTemplates.
È possibile raccogliere le modifiche sul lato server e trasmetterle al client. Ma i nomi dei campi modificati sarebbero specifici per dominio/DTO, non per ViewModel specifico. E la mappatura mi sembra non banale. Se dovessi farlo in modo imperativo dopo il round-trip, si romperebbe SOC/modularity of viewModels.
Sto pensando a qualche tipo di motore di regole di mappatura, qualcosa come automappper o emit mapper. Ma risolve solo casi d'uso molto semplici. Non vedo come sarebbe mappare/propagare/convertire aggiungere elementi all'elenco o rimozione. Come identificare le istanze nelle raccolte in modo da poter unire i valori alle istanze esistenti. Inoltre dovrebbe propagare le informazioni di convalida/errore.
Forse dovrei implementare INotifyPropertyChanged su DTO e provare a riprodurre eventi lato server su di esso? E quindi associare ViewModel ad esso? Vincolerebbe risolvere i problemi con la raccolta si fonde in modo carino? È utile EventAgregator di PRISM? Esiste un componente di registrazione di un evento?
Esiste un modello di lato client migliore per l'architettura con logica lato server?
Questo è il mio approccio predefinito in questa situazione. In genere l'aggiornamento dopo Save() viene attivato tramite l'evento server, ogni modello può quindi aggiornarsi dalle modifiche attivate dalla modifica DTO. –