2009-04-30 11 views
2

城ウィンザースレッドセーフでコンポーネントを登録していますか?Castle Windsorスレッドセーフでサービス/コンポーネントを登録していますか?

つまり、複数のスレッドが同時に同じコンテナインスタンスにコンポーネントを登録できるかどうかを確認します。

(記録のために、はい、私はそうすることが、おそらく非常識であることを認識しています。)

+0

私はここでパンチに殴られたことは知っていますが、あなたがやっていることはおそらく狂気です。あるスレッドに登録されているサービスを別のスレッドに解決したいですか? –

答えて

7

それはウィンザーのようなソフトウェアの複雑な部分は、スレッドセーフであるかどうかを伝えることは非常に困難です。ウィンザーにはいくつかのサブシステムと内部サービスがあります。そして、各コンポーネントの登録は、多くのもの(プロキシ、異なるライフスタイル、カスタム依存関係を設定する)を行うことができます。 AFAIKにはスレッドセーフ固有のテストはありません。

ただし、デフォルトのサブシステムを使用していて、スレッドがカスタムコントリビュータやサブリゾルバなどを追加しない(つまり、単純なコンポーネント登録のみ)スレッドセーフである必要があります。コンポーネント登録に含まれるクラスは、ステートレスか適切にロックされています。 DefaultKernelは、主にさまざまなサブシステム/内部サービスへの操作を委任します。特に、DefaultNamingSubSystem(サービスマップストレージサブシステム)は適切にロックされています。

私はcastle-usersまたはcastle-devグーグルグループについて尋ねることをお勧めします。これは、実際のキャッスル達がいる場所です。

+1

実際に研究をしたように見えるので、これを調べる時間をとっていただきありがとうございます。 私はそれを伝えるのが難しいと知っていますが、私はちょうど "Omgがそれについて考えることさえしない"という一般的な知識があるかどうかを知りたかっただけです。 Mucho gracias! –

+3

Castle Windsorはスレッドセーフであるように設計されており、マルチスレッド環境では既知のバグはありません。あなたのコードがうまく設計されていれば、期待どおりに動作するはずです。 –

関連する問題