2011-01-21 12 views
4

Microsoft Patterns and Practices Unity Containerを使用しているプロジェクトを検討しています。Microsoft Unity Containerのパフォーマンス

登録されたタイプが40個のコンテナが1つあり、Webサービスコールごとにコンテナのインスタンスが作成されます。

私は疑問に思って:

  • を非常に多くの種類を登録するため、パフォーマンス上の問題はありますか?
  • ユニティコンテナをWebサービス呼び出し間で共有できますか?

WebサービスはIISでホストされています。

+1

ウェブサービスをどのようなアプリケーションでホストしていますか?両方のウィンドウのアプリケーションとWebアプリケーションで、アプリケーション開始時にコンテナを作成できるはずです –

+0

@Milkaelおかげで質問が更新されました –

答えて

7

Application_Start中にコンテナを作成し、すべてのタイプを登録してください。私たちは大規模なプロジェクト(wcfとasp.net mvc)で約200種類以上を実行しましたが、問題はありませんでした。

おかげ

+0

新しいコンテナインスタンスがリクエストに必要な場合よりも、 CreateChildContainer 'を作成し、作成したインスタンスを使用しますか? – Budda

12

Unityは、ボンネットの下に解決が行われる初めてのもののすべての種類をキャッシュします。これにより、後で解決されるコールのパフォーマンスが大幅に向上します。リクエストごとに新しいコンテナを作成すると、それらのキャッシュを捨ててしまいます。

要求の間にコンテナを置きます。

+0

このキャッシュは、 'CreateChildContainer'メソッドで作成されたコンテナにも役立ちますか? – Budda

+2

子コンテナもこのキャッシングを行い、シワがあります。 (HierarchicalLifetimeManagerを使用して)生涯管理のために子コンテナを使用していて、子で登録を構成していない場合、キャッシュ情報は実際に親コンテナに格納されるため、キャッシュを破棄することなく子を破棄できます。子に登録を設定している場合、キャッシュは子に格納され、子が廃棄/ガベージコレクションされたときに消えます。 –

関連する問題