서버 측에서 상태없는 서비스 및 빈혈 도메인 개체가 있습니다. 서버와 클라이언트 사이의 모델은 POCO DTO입니다. 클라이언트는 MVVM이되어야합니다. 모델은 20 개의 서로 다른 클래스의 약 100 개의 인스턴스 그래프 일 수 있습니다. 클라이언트 편집기에는 모든 탭/페이지가 포함되어 있으며이 탭은 모두 모델/뷰 모델에 실시간으로 연결됩니다.MVVM 패턴 : 모델 서버 왕복 후 ViewModel 업데이트
제 문제는 서버 왕복 여행 후에 변경 사항을 전달하는 좋은 방법입니다. ViewModel에서 DTO로 변경 사항을 전파하는 것은 매우 쉽습니다. 다시 돌아 가면 이전 DTO를 버리고 새로운 DTO로 대체 할 수 있지만 목록/DataTemplates의 재 작성이 많이 발생합니다.
서버 측 변경 사항을 수집하여 클라이언트 측에 전송할 수있었습니다. 그러나 변경된 필드의 이름은 특정 ViewModel이 아닌 도메인/DTO 전용입니다. 그리고 그 매핑은 저에게 중요하지 않은 것처럼 보입니다. 왕복 여행 후에 반드시해야만한다면 SOC/viewModels의 모듈성이 깨질 것입니다.
저는 automappper 또는 emit mapper와 같은 맵핑 규칙 엔진에 대해 생각하고 있습니다. 그러나 이것은 매우 단순한 사용 사례를 해결합니다. 목록/제거 항목을 추가/변환/변환하는 방법을 알 수는 없습니다. 콜렉션에서 인스턴스를 식별하여 값을 기존 인스턴스와 병합하는 방법. 또한 유효성 검사/오류 정보를 전파해야합니다.
어쩌면 나는 DTO에 INotifyPropertyChanged를 구현하고 그것에 서버 측 이벤트를 재생하려고합니까? 그런 다음 ViewModel을 바인딩합니다. 바인딩이 컬렉션 통합 문제를 해결할 수 있을까요? PRISM의 EventAgregator가 유용합니까? 이벤트 기록 재생 구성 요소가 있습니까?
서버 측 로직이있는 아키텍처에 클라이언트 측 패턴이 더 좋습니까?
이 상황에서 내 기본 접근 방식입니다. 일반적으로 Save() 이후의 업데이트는 서버 이벤트를 통해 트리거되므로 각 모델은 DTO 변경에 의해 트리거 된 변경 사항으로부터 자체를 업데이트 할 수 있습니다. –