1

MVVM アーキテクチャに WPF クライアントがあります。

WPP クライアントは、WCF サービスに接続し、それに操作を送信する必要があります。

この能力は異なる視点からのものである必要があるため、異なるモデルを意味します (そうですか?)

質問:

  1. モデルはWCFサービスクライアントにアクセスするモデルであるという私の仮定は正しいですか? つまり、ビューまたはモデル ビューを WCF サービスに接続する必要はありません。モデル自身だけ...
  2. すべてのモデルが WCF サービスの client にアクセスできるようにするにはどうすればよいですか? ある種の「ServiceLocator」を使用しますか? (どこかでこの用語を読んだことがありますが、正確な意味はわかりません。以前にこれを行ったことがある人がこのトピックに光を当てることができれば幸いです)。
4

2 に答える 2

1
  1. モデルはデータを表すため、ViewModel はサービスを認識する必要があります
  2. IMyWcfServiceViewModel の依存関係として aを作成するだけViewModelBaseで、保護されたコンストラクターを使用して抽象クラスを作成できるIMyWcfServiceため、すべての具体的な ViewModel はこのサービスを提供する義務があります。

そして、コメントですでに述べたように、サービスロケーターを避けるようにしてください。これにより、API と単体テストが台無しになります。すべての依存関係をコンストラクターの引数として指定するだけで、クラス API がより明確になるため、何が必要かがわかり、「サービス ロケーターがサービスを解決できません」などの実行時エラーを心配する必要がなくなります。

于 2012-07-10T13:39:56.687 に答える
1

Models個人的には、データを保持するための単純なコンテナー オブジェクト以上のものであるべきではないと思います。データ アクセス コードや、データの整合性を検証するための基本的なデータ検証以外のアプリケーション ロジックを含めることはできません。

あなたViewModelsは、WCF サーバーとの対話を担当する必要があります。または、すべてのデータ アクセス呼び出しを含むリポジトリ クラスを作成し、代わりにそれを ViewModel に使用させます。

ViewModels MVVM では、あなたがアプリケーションであることを忘れないでください。アプリケーション フローからビジネス ロジック、データ アクセスまで、すべてを担当します (ただし、これらの概念は、データ アクセスにリポジトリを使用するなど、VM から抽象化される場合があります)。

Viewsユーザーが ViewModel と対話できるようにするために ViewModel の上に置かれるユーザー フレンドリーなインターフェイスであり、Modelsデータを格納するために使用される単なるオブジェクトです。

于 2012-07-10T13:40:04.800 に答える