したがって、MVVMパターン(Caliburn.Micro)を使用するWPFアプリケーションがあります。ビューとビューモデルを接続しましたが、基本的に不足しているのはデータです。データは、WCFサービス、ローカルストレージ、またはメモリ/キャッシュのいずれかから「オンデマンド」で取得されます。これは、オフラインモードを許可し、不必要なサーバー通信を回避するためです。もう1つの要件は、UIスレッドがブロックされないように、データが非同期で取得されることです。
そこで、ビューモデルがデータを要求するために使用する、ある種の「AssetManager」を作成することを考えていました。
_someAssetManager.GetSomeSpecificAsset(assetId, OnGetSomeSpecificAssetCompleted)
これは非同期呼び出しであることに注意してください。しかし、私はいくつかの異なる問題に遭遇します。同じアセットが異なるビューモデルによって(ほぼ)同時に要求された場合、不必要な作業を行わず、両方がバインドできる同じオブジェクトを取得するようにするにはどうすればよいですか?
私が正しいアプローチを取っているかどうかはわかりません。私はReactiveFrameworkを少し見てきましたが、このシナリオでどのように使用するかわかりません。私が使用できるフレームワーク/テクニック/パターンに関する提案はありますか?これはかなり一般的なシナリオのようです。