2009-04-24 16 views
0

私はWCFを始め、多くの場合、分散プログラミングも初めてです。私は4つの個別サービスを必要とするプロジェクトに取り組んでいます。WCF、依存性インジェクション、ユニットテストを使用したサービス間通信アーキテクチャ

私は、各サービスの各コンポーネントの責任を正しく定義しようとしています。サービスAと通信する必要があるサービスBがあるとします。サービスごとに、サービス実装クラス、サービスホスト、およびプロキシクラスを定義しました。ユニットテストするために

、Iは、依存性注入を使用してい - サービスBがサービスAと通信する必要があるので、私は

私はB.

にサービスを提供するために、コンストラクタ引数としてAのプロキシクラスのインスタンスを通過しましたユニットテストサービスB、私はAのサービスホストを稼働させておく必要があります。

  1. これは依存性注入について間違った方法ですか?もしそうなら、なぜ、私はそれをどうお勧めしますか?
  2. 依存関係注入の良い方法はありますか?
  3. 単体テストで正しい結果を得るためにサービスホストを実行する必要がありますか?

答えて

1

が発生し、クライアントの代わりに

  • ChannelFactoryを使用することを検討してください。

    ChannelFactory<IHello> clientFactory = new ChannelFactory<IHello>("targetConfiguration"); 
    IHello client = clientFactory.CreateChannel(); 
    string result = client.SayHello(); 
    
  • インターフェイスタイプ、可能な限り

  • テストを書くときのインタフェースの実装を注入するモックオブジェクトフレームワーク(example)の一つ。

あなたの目的が特定の小さなユニット(ユニットテスト全体のポイント)をテストしている場合、3番目の質問については、答えは "いいえ"です。しかし、シリアル化/ホスティングの問題がないことを確認するために、いくつかの統合テストを書く方が良いでしょう。

関連する問題