Tengo servicios sin estado y objetos de dominio anémicos en el lado del servidor. El modelo entre el servidor y el cliente es POCO DTO. El cliente debe convertirse en MVVM. El modelo podría ser un gráfico de aproximadamente 100 instancias de 20 clases diferentes. El editor del cliente contiene diversas páginas con pestañas, todas ellas conectadas en vivo al modelo/viewmodel.Patrón de MVVM: actualizaciones de ViewModel después de ida y vuelta del servidor modelo
Mi problema es cómo propagar los cambios después del servidor de ida y vuelta buena manera. Es bastante fácil propagar los cambios de ViewModel a DTO. De regreso, sería posible descartar el viejo DTO y reemplazarlo por uno nuevo, pero causará un gran rediseño para las listas/DataTemplates.
Pude recoger los cambios del lado del servidor y transmitirlos al lado del cliente. Pero los nombres de los campos modificados serían específicos del dominio/DTO, no específicos de ViewModel. Y el mapeo no me parece trivial. Si lo hiciera de manera imperativa después del viaje de ida y vuelta, rompería SOC/modularidad de viewModels.
estoy pensando en algún tipo de motor de reglas de asignación, algo así como automappper o emitir asignador. Pero resuelve casos de uso muy simples. No veo cómo mapear/propagar/convertir agregar elementos a la lista o eliminación. Cómo identificar instancias en colecciones para que pueda fusionar valores a instancias existentes. Además, debería propagar la información de validación/error.
Tal vez debería aplicar INotifyPropertyChanged en DTO y tratar de reproducir eventos del lado del servidor en él? ¿Y luego vincular ViewModel a ella? ¿Sería vinculante solucionar los problemas con la colección se fusiona de manera agradable? ¿EventAgregator de PRISM es útil para eso? ¿Hay algún componente de grabación de eventos?
¿Hay un mejor patrón del lado del cliente para la arquitectura con la lógica del lado del servidor?
Este es mi enfoque predeterminado en esta situación. Normalmente, la actualización después de Guardar() se desencadena a través del evento del servidor, cada modelo puede actualizarse a sí mismo a partir de los cambios activados por el cambio de DTO. –