5

WCF を使用してサーバーからデータを取得し、クライアントがこのデータを (CRUD 操作で) 表示/操作できるようにする基本的な wpf/mvvm アプリケーションを構築したいと考えています。

これまでのところ、アーキテクチャについては次のようなことを考えていました。

  • 検証、調査基準、および INotifyPropertyChanged とサービス コントラクトを実装する「グローバル」モデル レイヤー
  • 主にエンティティ フレームワーク 4 用のサービス レイヤーで、モデル レイヤーのコントラクトを実装し、データへのアクセスと操作を可能にします。
  • XMLなどのオフラインデータソースも必要であり、したがって別のサービスも必要であることに注意してください(DI / IoCを使用する予定です)
  • WCF レイヤー
  • クライアント側にデータを保存するための追加レイヤー?
  • ビューモデル

ビュー/ビューモデルの部分は明確ですが、モデル、WCF、ビューモデルの関係を理解するのに苦労しています。

私の質問は次のとおりです。

  1. EF によって生成されたモデルをどのように処理すればよいですか? それを取り除き、データベースとのマッピングを手動で行うコードファーストのアプローチに進みますか?
  2. WCF データ トランスポートの場合、モデルにリレーショナル プロパティを含める必要がありますか?
  3. データを保存および操作するために、WCF と ViewModel の間に追加のレイヤーを配置する必要がありますか、それとも ViewModel を WCF に直接接続するのがベスト プラクティスですか?

この種のアーキテクチャに関するその他のヒントは大歓迎です...

4

2 に答える 2

2

まず、いくつかの一般的な情報: Lab49 で入手できるJason Dollinger による MVVM に関する非常に優れたチュートリアルがあります。

編集 このビデオは、WPF アプリケーションを設計する際のほとんどのニーズをカバーしています。依存性注入と WCF への接続もカバーされています (ただし、WCF について話すときは詳細ではありませんが、ここでは優れたソリューションを思いつくための非常に強力な方法があります)。

彼が開発したソースコードもここで入手できます

私の意見では、MVVM に関係するすべての人が見るべきです!

=> 1. EF によって生成されたモデルをどのように処理すればよいですか? それを取り除き、データベースとのマッピングを手動で行うコードファーストのアプローチに進みますか?

ここで AutoMapper が役に立ちます。AutoMapper の Codeplex は 、これにぴったりのようです。

=> 2. WCF データ トランスポートの場合、モデルにリレーショナル プロパティが必要ですか。つまり、 Product には CustomerId ではなく Customer がありますか?

モデルをいじるな!productid は注文の一部であり、注文には顧客 ID があります。これに固執します。サービス層では、とにかく ID で終わる可能性があります。ここではおそらく製品も顧客も変更しないためです。そうする場合 (そして、私の注文の例はその場合には当てはまりません)、静的データではなく動的データを転送できます。

=> 3. データを格納および操作するために、WCF と ViewModel の間に追加のレイヤーが必要ですか、それとも ViewModel を WCF に直接プラグインするのがベスト プラクティスですか?

ほとんどの場合、コンストラクターでビューモデルに挿入されたサービス レイヤーがあります。これは、WCF クライアント部分を処理し、サーバー側の「変更された」イベントを処理するため、別のレイヤーと見なすことができます。(行の変更、新しい行、行の削除など)

編集 サービス レイヤー イベントをディスパッチする必要がある場合は、WCF と ViewModel の間に小さな軽量レイヤーを配置する方がはるかに簡単です。必要に応じて、おそらくそのようなレイヤーが自然に思い付きます。

于 2012-07-11T17:34:13.313 に答える