0

WebBackgrounderライブラリで依存性注入を使用した経験のある人はいますか?

特に、ジョブ内からリポジトリにアクセスする必要があり、その有効期間はタスクの有効期間によって異なります。できれば、プロパティインジェクションは避けたいと思います。

これは、App_StartのWebBackgrounderSetupです。

public static class WebBackgrounderSetup
{
    static readonly JobManager _jobManager = CreateJobWorkersManager();

    public static void Start()
    {
        _jobManager.Start();
    }

    public static void Shutdown()
    {
        _jobManager.Dispose();
    }

    private static JobManager CreateJobWorkersManager()
    {
        var jobs = new IJob[]
    {
        new TmdbJob(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(20))
    };

        var manager = new JobManager(jobs, new SingleServerJobCoordinator());
        manager.Fail(ex => Elmah.ErrorLog.GetDefault(null).Log(new Error(ex)));
        return manager;
    }
}

ご入力いただきありがとうございます。

4

1 に答える 1

2

私はWebBackgrounderの経験はありませんが、アドバイスはすべてのマルチスレッドアプリケーションの場合と同じです。基本的なルールは次のとおりです。

  • サービスはスレッドに依存している(または依存している可能性がある)ため、サービス(依存関係)を他のスレッドに渡さないでください。
  • 代わりに、そのスレッドの先頭で新しいオブジェクトグラフを解決します。
  • HttpContextに固有のライフタイムまたはキャッシング(リクエストごとのライフスタイルなど)があり、バックグラウンドスレッドで使用可能である必要がある依存関係の場合、ハイブリッドライフスタイル(リクエストごととスレッドごとの両方)として構成する必要があります。 。
  • ASP.NETは、要求を開始したスレッドとは異なるスレッドで要求を終了できるため、スレッドごとにこれらの依存関係を登録しないでください。

詳細については、こちらをご覧ください:マルチスレッドアプリケーションでの依存性注入の操作。そのWikiページは別のDIフレームワークからのものですが、そのほとんどはNinjectに適用できます。

于 2012-08-10T08:56:30.677 に答える