問題は非常に単純です。基本的に、私のビューは WCF サービスからのデータを表示する必要があります。データは高頻度で非同期に更新されるため、サーバー側のデータが変更された場合はそれに応じて GUI を更新する必要があります。
View は大量のデータを表示しているため、基本的には ViewModel で公開されている 50/60 フィールドをバインドしています。
モデル パーツは基本的に、GUI に表示される 50/60 フィールドを含む POCO オブジェクトです。はい、ViewModel は Model オブジェクトを View に公開しています。(プロパティ値が変更されたときにビューに通知するために、Model オブジェクトは INotifyPropertyChanged を実装することに注意してください。)
ここで、WCF サービスとやり取りする "DataService" レイヤーを作成しました。これは、WCF サービスによって返されたデータに従ってモデルを更新する役割を果たします。サーバー側でデータが更新されると、WCF サービスは、パフォーマンス上の理由から、変更されたフィールドのセットのみをクライアントに返します。
そのため、DataService には、次のような wcf サービスの更新を管理するイベント ハンドラーがあります。
void OnServiceUpdated(UpdateArgs args)
{
foreach(Field field in args.ChangedFields)
{
if(field.Key == "BetName") _modelBet.BetName = field.Value;
else if(field.Key == "BetUser") _modelBet.BetUser = field.Value;
[...]
//the same for 50 fields...
}
}
サーバー側で変更されていないモデルのフィールドのみを更新したいので、モデルを更新するこの恐ろしいコードが必要です。(wcf サービス API は変更できないことに注意してください)。
私の質問は、「OnServiceUpdated」ハンドラーのパフォーマンスを向上させるために何を提案しますか?
前もって感謝します、ジョン