0

最初は、サービスを消費するクラスに ctor でそれらを渡す依存関係としてそれらを扱いました。

var serviceConsumer = new ServiceConsumer(new MailingServiceClient())

問題は、サービスから例外がスローされると、障害状態になり、要求に応答しないため、再初期化が必要だったことです。

さらに、生成されたプロキシの dispose メソッドが壊れている (障害状態をチェックせずに close を呼び出す) ため、wcf サービスが適切に破棄されない場合があるという事実に精通し、それを克服するいくつかの方法に遭遇しました。

  1. すべてのサービスへのすべての呼び出しをラップします。
  2. scvutil.exe によって生成されたクラスのデフォルトの IDisposable 動作をオーバーライドします

テスト上の理由から、コンシューマ コードがサービス クライアントを自分で作成することを望まないので、私の質問は次のとおりです。

  • 機能している障害のないサービスを維持するにはどうすればよいですか?

  • テスト容易性のために依存性注入を引き続き使用するにはどうすればよいですか?

4

1 に答える 1

0

良い解決策を見つけました。

VSを置き換えるプロキシジェネレータであり、プロキシの障害、タイムアウト、および正しい廃棄を処理するデフォルトのプロキシのラッパーを生成します。

http://wcfproxygenerator.codeplex.com/

私にとってはうまく機能しているようです。

于 2010-07-08T09:21:20.290 に答える