2

ASP.NetソリューションでMicrosoftのUnityIOCコンテナーを使用しています。

最上位層の1つでは、RegisterInstanceメソッドを使用します。次に、Resolveメソッドを使用してそれを下に戻します。

別の問題を見ていると、ASP.Netにはスレッドの俊敏性があることがわかりました。つまり、要求がスレッドをジャンプする可能性があるということです。

したがって、問題は、インスタンスを1つのスレッドに登録し、インスタンスを解決する前にリクエストがスレッドをジャンプする場合、正しいインスタンスを取得するかどうかです。

4

2 に答える 2

5
  1. 登録したのと同じコンテナ(またはその子)でタイプを解決すると、正しいインスタンスが取得されます。

  2. 私が知る限り、リクエストごとにコンテナに型を登録する必要はありません。これは通常、アプリケーションの開始時にどこかで行われます。

于 2012-08-29T11:35:21.883 に答える
3

これに基づい

[...] Resolve、ResolveAll、およびBuildUpはすべてスレッドセーフです。ドキュメントで見逃したようです。

コンテナの他のメソッドはいずれもスレッドセーフではないため、コンテナを構成する場合は、ロックを行う必要があります。また、1つのスレッドを構成し、別のスレッドを解決する場合は、スレッドの問題が発生します。

AFAIK、あなたのアプローチは正しいです、そしてあなたはASP.NETアプリケーションで間違ったインスタンスを取得することを心配するべきではありません。

于 2012-08-29T11:41:47.037 に答える