2011-06-21 14 views
2

サービスロケータを使用して、WCFサービスで使用されるクラスの具体的なインスタンスを保持しています。 ServiceLocatorを渡すのではなく、すべてのクラスからアクセスできるように静的にすることにしました。サービスロケータは、WCFサービスが開始されたときに移入され、いくつかのパラメータに応じて、さまざまな具体的な実装が行われます。WCFサービスでサービスロケータを使用する方法

私の問題は、別の呼び出しが完了する前にWCFサービスに呼び出しが行われた場合、ServiceLocatorに不正な実装が設定されるということです。

サービスロケータをクラスで使用できるようにする方法はありますか。それは、別のスレッドやWCFサービスへの呼び出しによって再利用されることはありませんか?

答えて

1

あなたはサービスロケータと頼りにならない実装について、いくつかの詳細を提供します。私が読んだことから、私はそれがあなた自身のものだと理解しています。

WCFが依存関係注入を可能にするインタフェースを公開しているため、私はWCFサービスの場合はサービスロケータを使用しないでください。

あなたはここでアンチパターン・サービスロケータについての詳細を読むことができる:http://blog.ploeh.dk/2010/02/03/ServiceLocatorIsAnAntiPattern.aspx

が使用できる依存性注入の周りの多くのOSSプロジェクトがあり、そのジョブ正しい方法を行うので、あなたは、あなたのサービスロケータを実装するべきではありません。

WCFサービスでStructureMapを使用した依存性注入の正しい実装は、http://lostechies.com/jimmybogard/2008/07/30/integrating-structuremap-with-wcf/です。

+0

+1またはautofacでhttp://code.google.com/p/autofac/wiki/WcfIntegration – kenny