0

タイトルで申し訳ありませんが、より良いタイトルがあれば、お気軽に更新してください。

基本的に、ASP.Net Web API を使用して Web API を作成しています。Unity コンテナーを次のように構成しました。

string xmlFilePath = "some/path"

var unity = new UnityContainer();
unity.RegisterType<PlayerController>();
unity.RegisterType<IRepository, XmlRepository>(
    new ContainerControlledLifetimeManager(),
    new InjectionConstructor(xmlFilePath));
config.DependencyResolver = new IoCContainer(unity);

XmlRepository には、xml ファイルの状態を表すいくつかのオブジェクトと、60 秒ごとに状態を xml ファイルに書き込むタイマーがあります。これは、状態が変化するたびに xml ファイルを書き換える必要がないようにするためであり、失われる可能性のある状態変化の最大量を 60 秒に制限します。

私の質問はこれです. Unity コンテナーは、すべての呼び出しで Web API で使用できる XmlRepository のシングルトンを作成します。しかし、呼び出しの間にオブジェクトはどうなるでしょうか? それはどこかでシリアル化された形式ですか、それとも元の形式のままなので、タイマーは引き続き機能しますか?

4

1 に答える 1

4

シングルトン オブジェクトはメモリに残ります。あなたの場合、Unity コンテナーによって管理されます。シリアル化されず、いくつかのタイマーを開始した場合、IIS が AppDomain のリサイクルを決定するまで、タイマーは引き続き動作します。次に、 ASP.NET で繰り返しバックグラウンド タスクを実装する危険性を読んでください。

于 2012-12-15T17:55:19.200 に答える