我在服務器端有無狀態服務和貧血域對象。服務器和客戶端之間的模型是POCO DTO。客戶端應該成爲MVVM。該模型可以是20個不同類別的約100個實例的圖形。客戶端編輯器包含不同的標籤頁,所有標籤頁都與模型/視圖模型實時連接。MVVM模式:模型服務器往返後的ViewModel更新
我的問題是如何傳播服務器往返後很好的方式更改。從ViewModel向DTO傳播更改非常容易。回頭來看,有可能扔掉舊的DTO並用新的DTO替換它,但它會導致很多重新繪製列表/數據模板。
我可以收集服務器端的變化並將它們傳輸到客戶端。但是,更改的字段名稱將是域/ DTO特定的,而不是ViewModel特定的。映射對我來說似乎並不平淡。如果我應該在往返之後採取必要的措施,它會破壞視圖模型的SOC /模塊性。
我正在考慮某種映射規則引擎,像automappper或發射映射器。但它解決了非常簡單的用例。我不知道它是如何映射/傳播/轉換添加項目列表或刪除。如何識別集合中的實例,以便它可以將值合併到現有實例。它也應該傳播驗證/錯誤信息。
也許我應該在DTO上實現INotifyPropertyChanged並嘗試在其上重放服務器端事件?然後將ViewModel綁定到它?綁定解決問題與收集合並好方法? PRISM的EventAgregator對此有用嗎?是否有任何事件記錄重播組件?
有服務器端邏輯的架構有更好的客戶端模式嗎?
這是我在這種情況下的默認方法。通常,通過服務器事件觸發Save()後的更新,然後每個模型都可以從DTO更改觸發的更改中自行更新。 – 2010-09-29 11:57:16