2

Web アプリのリファレンス実装は RacoonBlog のようですが、WPF/SL を使った例を見つけるのに苦労しました。基本的な違いは、ViewModel の有効期間とデータ変更の粗さです。これらは通常、オブジェクトごとではなくプロパティごとに発生します。私が見たいくつかの例では、避けたいと思っているリポジトリ パターンを使用しています。

そのようなことに対して推奨される方法はありますか? DocumentStore への参照を使用してベース VM を作成し、そこにすべてを保存する必要がありますか (PropertyChanged イベントによってトリガーされます)。

4

1 に答える 1

1

最初に、データベースと直接対話する必要があるかどうかを検討してください。クライアントからではありません。多くの場合、データベース テクノロジに関係なく、クライアントがサービス レイヤー (WebAPI、ServiceStack、WCF など) などの仲介者とやり取りする必要があります。

次に、本当にデータベースと直接やり取りしたいと判断した場合、詳細は他のコードと同じです。

  1. 実行時に DocumentStore のインスタンスが 1 つだけ存在する必要があります。
  2. ユーザーのアクティビティごとに新しい DocumentSession を開いて閉じる必要があります。

UI の粒度が粗い場合は、セッション内のエンティティ全体を保存/更新している可能性があります。UI がきめの細かい (例: タスクベースの UI) 場合、各セッションで行う作業は少なくなり、より多くの作業が行われます。

もう 1 つのオプションは、部分的な更新を実行するために raven のPatching APIを使用することですが、通常は必要ではなく、望ましくもありません。ワイヤ トラフィックを減らすためだけに、トランザクションと同時実行例外が失われます。

並行性の問題をどのように処理するかを検討する必要があります。 オプティミスティック コンカレンシーはおそらく良い考えですが、必ず再試行ロジックで例外を処理してください。

SL から来る場合は非同期セッション操作を使用する必要があり、おそらく WPF についても良い考えです。

于 2012-11-20T16:23:55.283 に答える