私の質問は、Windsorが提供するWCFと型付きの工場施設に関するものです。私はIoCコンテナの概念、特に機能にまったく慣れていませんが、しばらく前に書いたプロジェクトを評価した後、それを調べ始めました。プログラムはn層であり、依存性注入がどこにでも実装されていないため、ユニットのテストはあまりできません。問題は、n層であるため、適切なDIを実行すると、5層下のように使用されるインスタンスの作成を最上位層が担当することになります。そこで私はIoCに目を向けました。
しかし、多くのSO記事や他のサイトを読んだ後、私は今、いくつかの問題に悩まされています。最初の主な問題の1つは、クラスをWCFサービスの物理的な実装から切り離すことでしたが、私はそれを次のように行いました。
service = ManagerService.IoC.Resolve<IGridSubmitWorkService>(new { binding = new BasicHttpBinding(), remoteAddress = new EndpointAddress(WorkerAddress) });
result = service.SubmitWorkUnit(out errorString, aWorkUnit);
ManagerService.IoC.Release(service);
ただし、使用IoC.Resolve<>()
すべきではなく、工場やWCF機能を使用して依存関係を排除する必要があること、IoC container
および一部の人々がアンチパターンと見なすサービスロケーターパターンであるということについて、複数の言及がありました。
私の問題はこれです:上記の3行のコードはほとんどすべての問題を解決しますが、適切なパターンに従うには、代わりにWCFファシリティ(型付きファクトリ)を作成する必要があります(このコードが使用されるクラスのインスタンスの提供を処理します) )とファクトリ用の新しいインターフェイス。これは、パターンを満足させるためだけに、過剰なエンジニアリングを行い、コードに不要な複雑さを追加しているように感じます。
質問1:私がここで見逃している基本的なものはありますか?
質問2:コードからわかるように、私はWebサービスの空でないコンストラクターを呼び出しています。WCF機能を実装した場合でも、これは簡単ですか?
質問3: Windsor wikiの説明は非常に簡潔で、あまり役に立たないことがわかったので、WCF機能の使用に関する適切なチュートリアルを教えていただけますか?
ありがとう