0

依存関係の解決に Castle Windsor を使用する場合のパフォーマンス コストはどこにありますか? それはオンですかnew WindsorContainer()、それともオンcontainer.Resolve<T>()ですか?

これに対する回答に基づいて、ASP.NET サービスは でコンテナを初期化し、Application_Start必要に応じて初期化するResolve<T>()必要がありますか? それとも?Resolve<T>()_Application_Start

ところで-これが一部の人々の心の中で時期尚早の最適化を構成する可能性があることを認識しています...スケーラブルなASP.NETサービスの正しい実装を探しているだけです。

4

1 に答える 1

2

ほとんどのアプリケーションで最もコストのかかる操作は、コンテナー ( container.Install(FromAssembly.This())) にコンポーネントを登録することです。これは、アプリケーションごとに 1 回行うことです。

何か本当に間違ったことをしていない限り、解決にかかるコストはごくわずかです。

登録を拡大します。コンテナが行う他のことと比較してコストがかかります。絶対数では、大多数のアプリケーションで頭痛の種にならないほど十分に高速です。

それは、コンテナー (Windsor を例として使用しています。これは、あなたが使用しているように見えるものであり、たまたま最もよく知っているため) がアセンブリをスキャンして (リフレクションを使用して)、登録するタイプを見つける場所であるためです。これらのタイプを (リフレクションを使用して) 検査して適切なコンポーネント モデルを構築し、そのすべての情報を施設やその他の拡張機能にフィードして、検査と可能な変更を行います。また、この時点で依存関係グラフの分析とさまざまな最適化が行われるため、登録プロセスが完了した後、Windsor は他のより頻繁な操作をより迅速に実行できます。

于 2013-03-08T00:03:02.837 に答える