1

私たちはASP.NET MVC3アプリケーションにUnityを使用してきました。設定はweb.configファイルでのみ行われます。シングルトンを使用している以下の例を参照してください。私たちはコンストラクタインジェクションを使用しています。 99%のクラスでは、シングルトンの生涯プロパティを使用しません。私たちはパフォーマンスを見て、同じクラスの複数のインスタンスが同じリクエストに対して複数回構築されていることを発見しました。リクエストごとに3000個のオブジェクトを生成するのではなく、約200個のオブジェクトに分解することができます。我々はより大きな設計上の問題を抱えているかもしれないが、それは別の日のためである。私たちは、シングルトンを使用するためのユニティクラス構成の良い塊を作ることを検討しています。シングルトンを使用したユニティコンフィグレーションに関する質問 - ASP.NET MVC3

<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> 

質問:シングルトンする寿命タイプをマーキングする場合

  1. 、そのインスタンスは、特定のユーザまたはすべてのユーザーベースでのみ共有されていますか?
  2. これらをシングルトンとしてマークすると、複数のリクエストを一度に実行するユーザーの問題を回避するために、メソッドの同期を設定する必要がありますか?
  3. 私が知っておくべきことは何ですか?

答えて

3
  1. シングルトンインスタンスがコンテナインスタンス間で共有されています。アプリケーションには単一のコンテナインスタンスしか持たないようにする必要があります。したがって、シングルトンの有効期間はグローバルに共有されるインスタンスを作成します。

  2. はい、すべてのシングルトンは多くのスレッドからアクセスされる可能性があるため、スレッドセーフでなければなりません。

  3. はい、XMLを使用してコンテナを設定しないでください。代わりに一連の慣習を書いてください。

+1

+1 3番;) – Jalal

関連する問題