2011-08-04 7 views
1

私はサービスのための要件が​​あります。この要件では、サービスのインスタンスN個まで取得しなければならないと述べています。使用可能なインスタンスがない場合は、ブロック/待機してから解放してから使用可能なインスタンスを返します。これはプールされたライフスタイルに非常に似ています。ウィンザーのプールされたカスタムライフスタイルブロック

プールされたライフスタイルの私の理解である:最初に要求された場合(Nが最大プールサイズである)オブジェクトに対する要求が受信されると、N個のオブジェクトが

  • 作成されます

    • 、プールされたライフスタイルは最初ます
    • すべてのオブジェクトが「使用中」の場合、追加のオブジェクト(最大プールサイズの範囲外)が作成されます。プール内のすべてのオブジェクトが「使用中」になるまで、プールからオブジェクトを返します。
    • オブジェクトが解放されると、オブジェクトは破棄され(最大プールサイズを超える場合)、プールに返されます(最大プールサイズよりも小さい場合)。

    これは私が望むような動作に似ていますが、若干の違いがあります。最大プールサイズを超えてオブジェクトを作成せず、「使用中」のオブジェクトが解放されるのを待ってから使用可能なオブジェクトを返します。

    アイデア?これは、別のスレッド上の他のコンテナの解像度をブロックせずに行うことができますか?

  • 答えて

    2

    IPoolFactoryIPoolを実装し、工場に工場を登録する必要があります。あなたのプールは、そのブロックを含め、必要なものを何でもすることができます。

    +0

    ありがとう...私はこれら2つのインターフェイスがPoolableLifestyleManagerによって使用されていることがわかります。私はそれを試してフォローアップします。 –

    +0

    完全に作業しました... –

    +0

    登録するには、次のようにしてください: 'Container.Register(Component.For ()。ImplementedBy ());' – Nico

    関連する問題