ASP.NET MVC3 アプリケーションには Unity を使用しています。構成は web.config ファイルでのみ行われます。シングルトンを使用している以下の例を参照してください。コンストラクタインジェクションを使用しています。私たちのクラスの 99% では、シングルトンの有効期間プロパティを使用していません。パフォーマンスを調べたところ、同じリクエストに対して同じクラスの複数のインスタンスが複数回構築されていることがわかりました。リクエストごとに 3000 個のオブジェクトを生成するのではなく、約 200 個のオブジェクトに減らすことができることに気付きました。もっと大きな設計上の問題があるかもしれませんが、それはまた別の機会に。シングルトンを使用するユニティ クラス構成のかなりの部分を作成することを検討しています。
<typeAlias alias="singleton"
type="Microsoft.Practices.Unity.ContainerControlledLifetimeManager, Microsoft.Practices.Unity" />
<type type="ITMSLogger" mapTo="TMSLogger">
<lifetime type="singleton" />
<typeConfig extensionType="Microsoft.Practices.Unity.Configuration.TypeInjectionElement, Microsoft.Practices.Unity.Configuration">
</typeConfig>
</type>
質問:
- ライフタイム タイプをシングルトンにマークする場合、そのインスタンスは特定のユーザーまたはすべてのユーザー ベースに対してのみ共有されますか?
- これらをシングルトンとしてマークすると、ユーザーが一度に複数のリクエストを実行する際の問題を回避するために、メソッドの同期をセットアップする必要がありますか?
- 他に知っておくべきことはありますか?