私はMVVMパターンを使用してクライアント/サーバー(WPF/WCF)アプリケーションで作業しています。サービス経由で保存する場合、モデルの一貫性を保つにはどうすればいいですか?
ViewModelのプロパティはモデルのプロパティにバインドされ、モデルが変更されたときに変更がすぐにビューに反映されます。
ユーザーがリフレッシュをクリックすると、サーバー上の新しい/変更されたデータがモデルにマージされるため、リフレッシュの仕組みがうまく機能します。
ユーザーの編集および保存のプロパティを処理するにはどうすればよいですか?
- ユーザーがクリックし、「編集」:ここで私は起こるしたいものですサーバーは更新されたアイテムを返し、これは モデルにマージされ、UIが更新されます。
- 成功しないと、サーバーはエラーを返し、モデルは更新されません。
はMVVMを使用して、モデルは(ステップ5 & 6冗長を行う)ステップ3で更新され、エラーがサーバー上で発生した場合、クライアントのデータがサーバと矛盾になると思われます。
この状況に対処するベストプラクティス方法はありますか?
シナリオでは、サーバー上のデータがクライアントが何もしなくても、特定のクライアントと同期を失う可能性はありますか?将来これが可能になるのだろうか?私が尋ねる理由は、ユーザーがアプリを再起動したり手動で更新したりする必要のない同期化戦略が必要な場合があるということです。このような問題は、その戦略にうまく収まるかもしれません。すべての保存の後に、単純に同期をとることもできます。 –
はい - マルチユーザーアプリケーションですが、クライアントが最新の状態になるようにアイテムを表示するたびに最新表示が行われます。あなたが示唆しているのは理にかなっていますが、ユーザーが[保存]をクリックしたときにサーバーがダウンしている場合はどうなりますか?元の値を元に戻したい(おそらくオフラインモードに移行する)。 –
問題の一部は、Webサービス*がモデルであることです。リモートコピーとローカルコピーは、どちらも同じものの表現です。モデルをリモートで更新できない場合は、モデルをローカルで更新して、同期外れに対処するために必要な作業をすべて行う必要があります。 msgstr "ユーザがアイテムを閲覧するたびにリフレッシュが発生します" msgid。見ている間に更新されるとどうなりますか?このようなケースを処理する方法を理解しておかなければなりません。単に、ダイアログが開いてしまったために、誤って別のユーザーの変更を元に戻さないようにする必要があります。 –