2009-06-10 11 views
2

IISでホストされているいくつかのWCFサービスを持つアプリケーションで、依存関係をインスタンス化するためにMEFを使用したいと考えています。さまざまなサービスは共有コンポーネントに依存しています。これらのインスタンス化と注入をMEFで管理したいと思います。MEFとWCF

どこで作曲しますか?当初、私はIInstanceProviderにCompositionContainerを持つことを考えましたが、そのコンテナは単一のエンドポイントにしか提供されず、そのインスタンスが管理するインスタンスは他のエンドポイントと共有されないことに気付きました。同様に、CompositionContainerをServiceHostに持つこと - それは異なるサービス間で共有されません。

この分析では正しいですか? CompositionContainerをアプリケーションレベルでシングルトンとして使用する唯一のソリューションですか?

2番目の質問は次のとおりです。 - 新しいユーザーセッションが開始されたときのように、サービスがWCFによってインスタンス化されると、どのように依存関係を提供できますか? CompositionContainerの再構成を行いますか?既に実行されている他のServiceインスタンスに影響することはありませんか?

誰でもこのコンセプトのコードサンプルを共有できますか?どうもありがとう!

答えて

0

あなたは、IoCコンテナ(Spring、Windsor、Unityなど)を使用することをあなたの要件に基づいて考えてみましょう。これは、より大きな柔軟性を提供するためです。私は、WCFサービスcomposeable多くの時間を作るための要件が​​発生しました

http://avingtonsolutions.com/blog/post/2008/08/02/Uisng-Unity-with-a-WCF-Service.aspx

+0

ご協力いただきありがとうございます。私はすでにSteve Moseleyの例を見てきました。キャッチはコンテナが「WCFエンドポイントごと」であることです。 MEFでは、エクスポートされたオブジェクトを異なるエンドポイント間で共有することができないことを知っています。私にとっては、これはショーストッパーです。この点でUnityは違うのですか? – urig

+0

「共有コンポーネント」と言うと、共有コンポーネントはさまざまなサービスで利用される状態/値を維持する必要がありますか? – Kwal

+0

これらはシングルトンです。私は、IoCコンテナをハードコードするのではなく、そうするようにしたいと思います。 私がこれまでに読んだことから、すべての異なるサービスを構成する静的な工場が必要です。キャッスルウィンザーはこれを「WCFインテグレーションファシリティ」と名付けました。 私はMEFに似た何かを持っていたいと思います。しかし、私はそれを実行時にオンデマンドで自動配線する方法を知らない。静的なCompositionContainerを持っていて、すべてのサービスインスタンスに対してCompose()を呼び出すと、すでに作成されているサービスインスタンスに悪影響が及ぶでしょうか? – urig

0

、およびカスタムIInstanceProviderを使用して、識別したアプローチは、それを解決する方法である:あり、このすでにいくつかの例もあります。カスタムインスタンスプロバイダを作成するだけでなく、サービス動作とカスタムサービスホストも必要です。コード・サンプルの面では

は、私は私のブログに私のアプローチを文書化しました: http://www.timjroberts.com/2011/08/wcf-services-with-mef/

は、この情報がお役に立てば幸いです。

0

WCFパイプラインを使用することは可能です。 少し複雑ですが、最終的にあまりにも多くのコードを必要とせず、簡単に再利用できます。 Iveがブログについて投稿しました:http://wp.me/py6Im-cF

0

これはnuget packageです。プロジェクトサイトでは、Webアプリケーションでライブラリを使用する方法や、セルフホストサービスとしてカップルの例を見つけることができます。